Смотрим спецификацию. Раздел "I/O-Ports", дальше "Ports as General Digital I/O", там внизу странички "Toggling the Pin" читаем: "Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn. Note that the SBI instruction can be used to toggle one single bit in a port." Т.е. в начале можно выствить нужные ножки на "вывод" и записать начальное состояние. Затем, если прерывания будут правльно срабатывать, то в обработчиках достаточно инвертировать состояние сигнала на выходах. Ведь, по идее, в обработчиках это и делается. Другое дело, что крайние значения ШИМа надо как-то дополнительно обрабатывать. Учитывая при этом приоритет прерываний.
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Так тут опять же, акцент на лог. единице. Причем фраза "independent on the value of DDRxn.", вовсе в ступор вгоняет. Это значит что ли: что на вход, что на выход тупо влепит "1"?А с нулем как? Ведь мне нужно погасить пин, когда счетчик сравняется.
Цитата:
в начале можно выставить нужные ножки на "вывод" и записать начальное состояние.
Сделано.
Цитата:
если прерывания будут правильно срабатывать, то в обработчиках достаточно инвертировать состояние сигнала на выходах.
Ну вот, когда пробую работать с PINB, все ломается, а общение с PORTB - нормально работает. Никак не уловлю цимус этого трюка. Разве что в моем варианте в ассемблере парой инструкций побольше будет?
Цитата:
крайние значения ШИМа надо как-то дополнительно обрабатывать.
Прошу прощения у администрации, за невольное нарушение правил, но редакция предыдущего комментария мне уже недоступна. Вобщем на аппаратном ШИМе с подключенным OC0A, с OCR0A=0, например, ситуация та же: слабое свечение светодиода. Видимо установка/сброс бита в железе сделан по похожему алгоритму? А вот со значением шима = 0xFF, ситуация в корне разная. Аппаратный работает, как ожидается, т.е. выдает полную яркость. Отчего программный, без дополнительных проверок, сбрасывает ее в нуль - загадка.
Извините за тупой вопрос, но уже забыл, а разбираться нет времени - Скажите могу ли я запрограммировать Аттини2313 программой Fbprg.exe, которой я программирую AT90S2313
Отвечу на свой вопрос сам))) = Нет, нельзя. Есть другой вопрос - я спаял на коленках схемку для программирования аттини2313 через лпт-порт Понипрогом. Скажите надо ли при программировании подавать питание на контроллер? А то у меня понька записала аттини без подачи +5в. И вот теперь мучаюсь в сомнениях - а записался ли реально контроллер?
Итак, для часов на гри понадобилось прошить контроллер attiny2313, может кто-нибудь подсказать , как это сделать? Имеется программатор usbasp и переходник usb uart на cp2102, до этого прошивал arduino pro mini. Хотелось бы увидеть подробную инструкцию
Устанавливаем на компьютере драйвер программатора (если нужен). Берём USBASP, подключаем к МК, потом к компу. Если на его выходе нет питания - подаём 5В на МК. Открываем программу-прошивальщик, поддерживающую данный программатор, в настройках указываем программатор. Устанавливаем галочку "Проверка" ("Verification") . Пробуем считать сигнатуру чипа ("Read Chip Signature"). Если считалось и не 00 или FF, продолжаем. Иначе проверяем подключение. Выбираем файл с прошивкой (.hex), если надо - EEPROM (.eep). Жмём "Очистить МК" (может называться "Clear chip", "Erase all" и так далее). Нажимаем "Загрузить FLASH" ("Load FLASH", "Write FLASH", ...). Ждём. Если всё в порядке, ошибок нет - отлично, делаем то же самое для EEPROM, если надо. Иначе снова проверяем, всё ли подключено. Теперь выставляем фьюзы, желательно использовать калькулятор фьюзов. Жмём "Write Fuse Bits". Снова пробуем считать сигнатуру. Если считалась, можно надеяться, что всё прошито правильно.
_________________ Этот пост оказался полезен? Не поленись, нажми слева! Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Теперь выставляем фьюзы, желательно использовать калькулятор фьюзов. Жмём "Write Fuse Bits". Снова пробуем считать сигнатуру. Если считалась, можно надеяться, что всё прошито правильно.
Сперва заливать прошивку, потом фьюзы программировать? Подскажите наиболее удобную программу для заливки прошивки. Под вин7 x64
Желательно. Заливкой прошивки проверяется правильность связи МК с компьютером через программатор. Так точно не возникнет глюков при зашивании фьюзов. Про Win7 не подскажу, у меня на всех компах XP.
_________________ Этот пост оказался полезен? Не поленись, нажми слева! Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Собственно, попробовал залить прошивку в attiny2313. Делал все через avrdudeshell . Я так понял , это avrdude с графическим интерфейсом. После прошивки появилось окно: Спойлер Открыл отчет, в нем следующий текст: Спойлер
avrdude.exe: Device signature = 0x1e910a avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude.exe: erasing chip avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update. avrdude.exe: reading input file "c:\adstemp.hex" avrdude.exe: writing flash (1020 bytes):
avrdude.exe: verifying ... avrdude.exe: 1020 bytes of flash verified
avrdude.exe: safemode: Fuses OK (E:FF, H:DF, L:E4)
avrdude.exe done. Thank you.
Я так понял, прошивка заливается без проблем? А вот с фьюзами какие-то проблемы. Выбрал нужные: Спойлер Нажал программировать фьюзы, и тут вылезла ошибка: Спойлерhttp://img.radiokot.ru/files/100306/medium/lj6vfh8ap.JPG Нажал закрыть, она еще раз вылезла. Затем окно с отчетами появилось: Спойлер Я так полагаю, проблемы с установкой фьюзов. Вот все отчеты: Спойлер
Откуда эти фьюзы? Зачем Вы пытаетесь отключить SPIEN? Хорошо что его по последовательному интерфейсу снять нельзя, иначе бы потеряли контроллер для SPI программирования.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
"Отмеченная" опция означает логическое состояние "0". То бишь фьюз запрограммирован. У Вас же "не отмечено - значит запрограммировано".
В статье: нет галки = 1, есть галка = 0 У Вас: нет галки = 0, есть галка = 1
В этом случае непонятно, зачем снят SPIEN в статье. Попробуйте его не трогать. Фьюзы RSTDISBL и SPIEN в общем случае всегда противоположны друг другу (если это ISP программирование и вывод RESET не заюзан как пин порта).
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
В этом случае непонятно, зачем снят SPIEN в статье. Попробуйте его не трогать. Фьюзы RSTDISBL и SPIEN в общем случае всегда противоположны друг другу (если это ISP программирование и вывод RESET не заюзан как пин порта).
Выставил фьюзы вот так: Спойлер При установке фьзов, вылетела ошибка при установке бита extended. При нажатии на кнопу "Читать фьюзы" , они выглядят вот так: Спойлер
SELFPRGEN разрешает запись программе в память программ, ругаться на него не должен. У Вас какой программатор, кстати?
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 359
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения