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

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

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

Сообщение 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 г.)
MOHCTEP
Опытный кот
Сообщения: 768
Зарегистрирован: Вс янв 19, 2014 00:55:09

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

Сообщение MOHCTEP »

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

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

Сообщение MOHCTEP »

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

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

Сообщение BAYERN »

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

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

Сообщение BAYERN »

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

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

Сообщение BAYERN »

Изображение

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

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

Сообщение Rtmip »

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

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

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

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

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

Сообщение *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 и подобные.
John Locke
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

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

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

*Trigger* писал(а):Теперь выставляем фьюзы, желательно использовать калькулятор фьюзов. Жмём "Write Fuse Bits". Снова пробуем считать сигнатуру. Если считалась, можно надеяться, что всё прошито правильно.

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

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

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

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

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

Сообщение hybroid »

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

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

Сообщение 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/medium/lj76d7f0l.JPG
John Locke
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Пт окт 03, 2014 22:48:27

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

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

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

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

Сообщение edm2007 »

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

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

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

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

edm2007 писал(а):Здравствуйте. Откуда эти фьюзы?

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

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

Сообщение edm2007 »

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

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

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

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

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

edm2007 писал(а):В этом случае непонятно, зачем снят SPIEN в статье. Попробуйте его не трогать. Фьюзы RSTDISBL и SPIEN в общем случае всегда противоположны друг другу (если это ISP программирование и вывод RESET не заюзан как пин порта).

Выставил фьюзы вот так:
СпойлерИзображение

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

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

Сообщение edm2007 »

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

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

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

edm2007 писал(а):У Вас какой программатор, кстати?

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

Так может его выбрать надо, т.е. снять галочку?
Ответить

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