ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Обсуждаем контроллеры компании Atmel.
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

Смотрим спецификацию. Раздел "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 г.)
Реклама
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Сообщение MOHCTEP »

Так тут опять же, акцент на лог. единице. Причем фраза "independent on the value of DDRxn.", вовсе в ступор вгоняет. Это значит что ли: что на вход, что на выход тупо влепит "1"?А с нулем как? Ведь мне нужно погасить пин, когда счетчик сравняется.
в начале можно выставить нужные ножки на "вывод" и записать начальное состояние.
Сделано.
если прерывания будут правильно срабатывать, то в обработчиках достаточно инвертировать состояние сигнала на выходах.
Ну вот, когда пробую работать с PINB, все ломается, а общение с PORTB - нормально работает.
Никак не уловлю цимус этого трюка. Разве что в моем варианте в ассемблере парой инструкций побольше будет?
крайние значения ШИМа надо как-то дополнительно обрабатывать.
Так собственно, об этом и спрашиваю. :)
Реклама
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

Сообщение MOHCTEP »

Прошу прощения у администрации, за невольное нарушение правил, но редакция предыдущего комментария мне уже недоступна.
Вобщем на аппаратном ШИМе с подключенным OC0A, с OCR0A=0, например, ситуация та же: слабое свечение светодиода. Видимо установка/сброс бита в железе сделан по похожему алгоритму? А вот со значением шима = 0xFF, ситуация в корне разная. Аппаратный работает, как ожидается, т.е. выдает полную яркость. Отчего программный, без дополнительных проверок, сбрасывает ее в нуль - загадка.
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 23
Зарегистрирован: Ср сен 20, 2006 18:20:55
Откуда: UKRAINE

Сообщение BAYERN »

Извините за тупой вопрос, но уже забыл, а разбираться нет времени - Скажите могу ли я запрограммировать Аттини2313 программой Fbprg.exe, которой я программирую AT90S2313
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 23
Зарегистрирован: Ср сен 20, 2006 18:20:55
Откуда: UKRAINE

Сообщение BAYERN »

Отвечу на свой вопрос сам))) = Нет, нельзя.
Есть другой вопрос - я спаял на коленках схемку для программирования аттини2313 через лпт-порт Понипрогом.
Скажите надо ли при программировании подавать питание на контроллер?
А то у меня понька записала аттини без подачи +5в. И вот теперь мучаюсь в сомнениях - а записался ли реально контроллер?
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 23
Зарегистрирован: Ср сен 20, 2006 18:20:55
Откуда: UKRAINE

Сообщение BAYERN »

Изображение

8)
Реклама
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Сообщение Rtmip »

BAYERN писал(а):..А то у меня понька записала аттини без подачи +5в....
вот, молодец она какая! Надо подавать питание, однако, могло и записаться без питания :idea:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

Сообщение John Locke »

Итак, для часов на гри понадобилось прошить контроллер attiny2313, может кто-нибудь подсказать , как это сделать? Имеется программатор usbasp и переходник usb uart на cp2102, до этого прошивал arduino pro mini. Хотелось бы увидеть подробную инструкцию
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Устанавливаем на компьютере драйвер программатора (если нужен).
Берём 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 и подобные.
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

Сообщение John Locke »

*Trigger* писал(а):Теперь выставляем фьюзы, желательно использовать калькулятор фьюзов. Жмём "Write Fuse Bits". Снова пробуем считать сигнатуру. Если считалась, можно надеяться, что всё прошито правильно.
Сперва заливать прошивку, потом фьюзы программировать? Подскажите наиболее удобную программу для заливки прошивки. Под вин7 x64
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Желательно. Заливкой прошивки проверяется правильность связи МК с компьютером через программатор. Так точно не возникнет глюков при зашивании фьюзов.
Про Win7 не подскажу, у меня на всех компах XP.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Друг Кота
Аватара пользователя
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Сообщение hybroid »

John Locke писал(а):Подскажите наиболее удобную программу для заливки прошивки.
avrdude. Заставляет работать мозгами и потом с меньшей вероятностью будут вопросы про неправильно прошитые "фузы". :)
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

Сообщение John Locke »

Собственно, попробовал залить прошивку в attiny2313. Делал все через avrdudeshell . Я так понял , это avrdude с графическим интерфейсом. После прошивки появилось окно:
СпойлерИзображение
Открыл отчет, в нем следующий текст:
Спойлер

Код: Выделить всё

"C:\Users\John Locke\Desktop\AVRDUDESHELL20150203\avrdude\avrdude.exe" -p attiny2313 -c usbasp -U flash:w:c:\adstemp.hex:i

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

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):

Writing | ################################################## | 100% 0.85s

avrdude.exe: 1020 bytes of flash written
avrdude.exe: verifying flash memory against c:\adstemp.hex:
avrdude.exe: load data flash data from input file c:\adstemp.hex:
avrdude.exe: input file c:\adstemp.hex contains 1020 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.54s

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
Нажал закрыть, она еще раз вылезла. Затем окно с отчетами появилось:
СпойлерИзображение
Я так полагаю, проблемы с установкой фьюзов. Вот все отчеты:
Спойлер

Код: Выделить всё

"C:\Users\John Locke\Desktop\AVRDUDESHELL20150203\avrdude\avrdude.exe" -p attiny2313 -c usbasp -U lfuse:w:0xE4:m

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e910a
avrdude.exe: reading input file "0xE4"
avrdude.exe: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0xE4:
avrdude.exe: load data lfuse data from input file 0xE4:
avrdude.exe: input file 0xE4 contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified

avrdude.exe: safemode: Fuses OK (E:FF, H:DF, L:E4)

avrdude.exe done.  Thank you.
Спойлер

Код: Выделить всё

"C:\Users\John Locke\Desktop\AVRDUDESHELL20150203\avrdude\avrdude.exe" -p attiny2313 -c usbasp -U hfuse:w:0xFF:m

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e910a
avrdude.exe: reading input file "0xFF"
avrdude.exe: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude.exe: 1 bytes of hfuse written
avrdude.exe: verifying hfuse memory against 0xFF:
avrdude.exe: load data hfuse data from input file 0xFF:
avrdude.exe: input file 0xFF contains 1 bytes
avrdude.exe: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified

avrdude.exe: safemode: hfuse changed! Was ff, and is now df
Would you like this fuse to be changed back? [y/n] 
Спойлер

Код: Выделить всё

"C:\Users\John Locke\Desktop\AVRDUDESHELL20150203\avrdude\avrdude.exe" -p attiny2313 -c usbasp -U efuse:w:0x01:m

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e910a
avrdude.exe: reading input file "0x01"
avrdude.exe: writing efuse (1 bytes):

Writing |  ***failed;  
################################################## | 100% 0.06s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0x01:
avrdude.exe: load data efuse data from input file 0x01:
avrdude.exe: input file 0x01 contains 1 bytes
avrdude.exe: reading on-chip efuse data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0xff != 0x01
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: efuse changed! Was 1, and is now ff
Would you like this fuse to be changed back? [y/n] 
Спойлер

Код: Выделить всё

"C:\Users\John Locke\Desktop\AVRDUDESHELL20150203\avrdude\avrdude.exe" -p attiny2313 -c usbasp -U lock:w:0x8F:m

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude.exe: Device signature = 0x1e910a
avrdude.exe: reading input file "0x8F"
avrdude.exe: writing lock (1 bytes):

Writing |  ***failed;  
################################################## | 100% 0.06s

avrdude.exe: 1 bytes of lock written
avrdude.exe: verifying lock memory against 0x8F:
avrdude.exe: load data lock data from input file 0x8F:
avrdude.exe: input file 0x8F contains 1 bytes
avrdude.exe: reading on-chip lock data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0x3f != 0x8f
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: Fuses OK (E:FF, H:DF, L:E4)

avrdude.exe done.  Thank you.
Может кто-нибудь сказать, в чем проблема? И установились ли фьюзы? При нажатии на кнопку "Читать фьюзы" они становятся так:
Спойлерhttp://img.radiokot.ru/files/100306/med ... 6d7f0l.JPG
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

Сообщение John Locke »

Так что, поможет кто-нибудь?
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

Здравствуйте.

Откуда эти фьюзы? Зачем Вы пытаетесь отключить SPIEN? Хорошо что его по последовательному интерфейсу снять нельзя, иначе бы потеряли контроллер для SPI программирования.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

Сообщение John Locke »

edm2007 писал(а):Здравствуйте. Откуда эти фьюзы?
Отсюда:
http://robocua.blogspot.com/2013/12/blog-post.html
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

"Отмеченная" опция означает логическое состояние "0". То бишь фьюз запрограммирован. У Вас же "не отмечено - значит запрограммировано".

В статье: нет галки = 1, есть галка = 0
У Вас: нет галки = 0, есть галка = 1

В этом случае непонятно, зачем снят SPIEN в статье. Попробуйте его не трогать. Фьюзы RSTDISBL и SPIEN в общем случае всегда противоположны друг другу (если это ISP программирование и вывод RESET не заюзан как пин порта).
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

Сообщение John Locke »

edm2007 писал(а):В этом случае непонятно, зачем снят SPIEN в статье. Попробуйте его не трогать. Фьюзы RSTDISBL и SPIEN в общем случае всегда противоположны друг другу (если это ISP программирование и вывод RESET не заюзан как пин порта).
Выставил фьюзы вот так:
СпойлерИзображение
При установке фьзов, вылетела ошибка при установке бита extended.
При нажатии на кнопу "Читать фьюзы" , они выглядят вот так:
СпойлерИзображение
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск

Сообщение edm2007 »

SELFPRGEN разрешает запись программе в память программ, ругаться на него не должен. У Вас какой программатор, кстати?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Контактная информация:
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

Сообщение John Locke »

edm2007 писал(а):У Вас какой программатор, кстати?
Такой
Изображение
Написано usbasp v2.0 LC Technology. В самой программе программатор выбран usbasp. Может выбрать usbasp-clone?
edm2007 писал(а):SELFPRGEN разрешает запись программе в память программ
Так может его выбрать надо, т.е. снять галочку?
Ответить

Вернуться в «AVR»