Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: avrdude & at90s1200
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
forever failure
В общем такая проблема: сабжевый программатор не хочет шить
at90s1200. Именно не работает загрузка программы.
Если зашиваю по параллельному HV интерфейсу - всё ОК, считывание
зашитой программы и вермификация и ч/з параллельный и ч/з
последовательный интерфейсы ОК.
как это выглядит :
[pp232@chaos src]$ avrdude -p 1200 -c bsd -U flash:w:adc_at.hex:i

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x009001
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "adc_at.hex"
avrdude: writing flash (70 bytes):

Writing | # | 1% 0.00s ***failed;
Writing | ## | 4% 0.06s ***failed;
Writing | #### | 7% 0.12s ***failed;
Writing | ##### | 10% 0.18s ***failed;
Writing | ###### | 12% 0.24s ***failed;
Writing | ######## | 15% 0.29s ***failed;
Writing | ######### | 18% 0.35s ***failed;
Writing | ########### | 21% 0.41s ***failed;
Writing | ############ | 24% 0.47s ***failed;
Writing | ############## | 27% 0.53s ***failed;
Writing | ############### | 30% 0.58s ***failed;
Writing | ################ | 32% 0.64s ***failed;
Writing | ################## | 35% 0.70s ***failed;
Writing | ################### | 38% 0.76s ***failed;
Writing | ##################### | 41% 0.82s ***failed;
Writing | ###################### | 44% 0.87s ***failed;
Writing | ######################## | 47% 0.93s ***failed;
Writing | ######################### | 50% 0.99s ***failed;
Writing | ########################## | 52% 1.05s ***failed;
Writing | ############################ | 55% 1.11s ***failed;
Writing | ############################# | 58% 1.16s ***failed;
Writing | ############################### | 61% 1.22s ***failed;
Writing | ################################ | 64% 1.28s ***failed;
Writing | ################################## | 67% 1.34s ***failed;
Writing | ################################### | 70% 1.40s ***failed;
Writing | ###################################### | 75% 1.46s ***failed;
Writing | ######################################### | 81% 1.52s ***failed;
Writing | ########################################## | 84% 1.58s ***failed;
Writing | ############################################ | 87% 1.64s ***failed;
Writing | ############################################# | 90% 1.69s ***failed;
Writing | ################################################ | 95% 1.75s ***failed;
Writing | ################################################# | 98% 1.81s ***failed;
Writing | ################################################## | 100% 1.87s

avrdude: 70 bytes of flash written
avrdude: verifying flash memory against adc_at.hex:
avrdude: load data flash data from input file adc_at.hex:
avrdude: input file adc_at.hex contains 70 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0001
0xc0 != 0x00
avrdude: verification error; content mismatch

avrdude done. Thank you.

чтение показывает, что каждый чётный байт записывается неправильно.
Если записывать однородные файлы (типа 256 раз подряд 0xc0 - да любое одинаковое значение) - то запись ОК, если записывать по порядку возрастающие байты от 0 до 0xff - то опять каждый чётный байт записывается неверно.

Такая заморочка только с at90s1200, шью этой же прогой 8-ю atmeg'у без проблем.
Кто-нить сталкивался с такой проблемой ?
ROC
Цитата(forever failure @ Mar 6 2005, 14:05)
В общем такая проблема: сабжевый программатор не хочет шить
at90s1200. Именно не работает загрузка программы.
Если зашиваю по параллельному HV интерфейсу - всё ОК, считывание
зашитой программы и вермификация и ч/з параллельный и ч/з
последовательный интерфейсы ОК.
как это выглядит :
[pp232@chaos src]$ avrdude -p 1200 -c bsd -U flash:w:adc_at.hex:i



[Skipped нафиг]
чтение показывает, что каждый чётный байт записывается неправильно.
Если записывать однородные файлы (типа 256 раз подряд 0xc0 - да любое одинаковое значение) - то запись ОК, если записывать по порядку возрастающие байты от 0 до 0xff - то опять каждый чётный байт записывается неверно.

Такая заморочка только с at90s1200, шью этой же прогой 8-ю atmeg'у  без проблем. 
Кто-нить сталкивался с такой проблемой ?
*


1200 вообще штука странная и непонятная - этих 1200 в коде к AVR910 аж 4 штуки blink.gif


-c bsd - это что за железо? 5 проводов?
Я с avrdude шил 1200, 90S2313, 90S8515 и Mega8 - полет нормальный, правда программатор был AVR910 или STK200/300.
По поводу 5 проводочков уже все, кому не лень ругались - AvReal
SPS
Я бы советовал использовать PonyProg:
Доступный софт; схему можно собрать за 20 мин, программирует множество контроллеров семейства AVR и PIC.
ROC
Цитата(SPS @ Mar 9 2005, 12:09)
Я бы советовал использовать PonyProg:
Доступный софт; схему можно собрать за 20 мин, программирует множество контроллеров семейства AVR и PIC.
*


Поня - это софт , тут же, похоже ,железные проблемы.

А чем avrdude не нравится??? Быстр, умен, отлажен, есть Win32 & *NIX версии, работает с целой кучей железа - "5 проводков" , STK200/300, AVR910, STK500 & ButterFly. Командная строка, текстовый конфиг. Для "ленивых" - есть GUI-вая оболочка. smile.gif
SPS
Цитата(ROC @ Mar 9 2005, 12:12)
Цитата(SPS @ Mar 9 2005, 12:09)
Я бы советовал использовать PonyProg:
Доступный софт; схему можно собрать за 20 мин, программирует множество контроллеров семейства AVR и PIC.
*


Поня - это софт , тут же, похоже ,железные проблемы.

*



Программатор - это устройство + софт к нему. Я говорю о PonyProg как о программаторе. Вся схема состоит из 1 микросхемы и 3 резисторов.
forever failure
-c bsd - это пять проводков (/RESET - 7, SCK - 8, MOSI - 9, MISO - 10), ну ещё буфер, хотя что с ним, что без него одно и тоже.
SPS
Значит эти схемы совместимы. PonyProg должна работать с таким устройством.
ROC
Цитата(forever failure @ Mar 9 2005, 15:44)
-c bsd - это пять проводков (/RESET - 7, SCK - 8, MOSI - 9, MISO - 10), ну ещё  буфер, хотя что с ним, что без него одно и тоже.
*


Не поленись, собери что-нибудь вроде STK200 smile.gif smile.gif smile.gif

Я в свое время (правда с 90S2313) чуть не поседел - то читается, то не читается, то видит сигнатуру, то нет. MOSI отсох - правда, на SP12 (те же 5 проводков).
Собрал AVR910, не нарадуюсь; единственное - захотелось на 115200 работать и из-за этого пришлось на использовать AVRProg из Студии или avrdude. Все эти CodeVision, Bascom-AVR вяжутся только на 19200.

Относительно 1200 - она одна такая или все так странно себя ведут? Первый раз прошиваешь? Год выпуска какой?
Их же была целая куча ревизий (1200A-1200D, сейчас просто 1200) с какими-то изрядными отличиями.
Супостаты сами писАли:
On-chip RC Oscillator
An on-chip RC oscillator running at a fixed frequency of 1 MHz can be selected as the MCU clock source. If enabled, the
AT90S1200 can operate with no external components. A control bit - RCEN in the Flash Memory selects the on-chip RC
oscillator as the clock source when programmed (“0”). The AT90S1200 is normally shipped with this bit unprogrammed
(“1”). Parts with this bit programmed can be ordered as AT90S1200A. The RCEN-bit can be changed by parallel programming
only. When using the on-chip RC oscillator for serial program downloading, the RCEN bit must be programmed in
parallel programming mode first.
SPS
Да, ROC прав, 5 проводков - это не серьезно.
forever failure
Благодарю за рекомендации, но похоже это не мой случай.
Замена програматора немного дала (т. е. до этого _иногда_ девайс не
читался первый раз после включения).

Было испробовано три чипа; у всех стабильная катрина во всех позах и
во всех вариантах :

чтение - OK
запись eeprom - OK
запись flash - по нечётным адресам (0x01, 0x03, ..., 0x0f и т. д.) -
тоже нормально
а запись в чётные адреса flash приводит к тому, что этот же байт
записывается в следующий адрес. Это выяснилось в ходе экспериментов в
термнальном режиме avrdude.

Рядом на этой же плате стоит atmega8, которая тем же програматором
шьётся с полтычка и без единого чиха.

Програматор сейчас: на входе 1554АП5 (74AC244) шлейф 10-проводный, сигнальные провода чередуются с земляными.

Однако похоже дело не в нём, до этого картина была таже самая.
SPS
Проблема может возникать либо если заканчивается ресурс МК, (около 1000 циклов), либо из-за некорректной работы кварцевого генератора соединенного с выводами XTAL1, XTAL2.
Советы:
1) Испытать на другом АТ90S1200.
2) Подобрать элементы тактового генератора. У меня например:
кварц - 16 МГц.
С1, С2 - 24 пФ.
Шьется отлично.
forever failure
ладно, попробую.
Я для него использую внешний генератор 8 МГц, сигнал генератора
подаётся на XTAL1. Во всех трёх экземплярах бит RCEN выключен.

На исчерпание ресурса это не похоже, поскольку такой косяк
возникал с абсолютно новым чипом.

А вообще у него вроде как верхний предел тактовой частоты - 12 МГц
(по документации), разве он работает от 16 ?
SPS
Цитата(forever failure @ Mar 14 2005, 11:15)
А вообще у него вроде как верхний предел тактовой частоты - 12 МГц
(по документации), разве он работает от 16 ?
*


Работает. Недавно собрал частотомер до 50 МГц, используя вышеуказанные номиналы деталей, причем напрямую без делителя можно измерять частоту до 1 МГц.
forever failure
Цитата(SPS @ Mar 14 2005, 13:15)
Проблема может возникать либо если заканчивается ресурс МК, (около 1000 циклов), либо из-за некорректной работы кварцевого генератора соединенного с выводами XTAL1, XTAL2.
Советы:
1) Испытать на другом АТ90S1200.
2) Подобрать элементы тактового генератора. У меня например:
кварц - 16 МГц.
С1, С2 - 24 пФ.
Шьется отлично.
*


Бесполезно.

Единственное, что у меня получилось - это зашить в терминальном режиме
через посылку команды, т. е. если я посылаю тупую команду в 4 байта
(типа avrdude> send 0x40 0x00 0x00 0x04), как расписано в даташите, то
посылаемый байт ложится точно на своё место и более ничего не меняет.
Если использовать более высокоуровневые комады типа write flash,
то всё тоже самое - младший байт записывается и на свой адрес и на
следующий за ним.

Есть ещё какие-нить соображения по этому поводу ?
SPS
Так а на другом контроллере пробовали? У меня был случай, взял якобы новый МК, залил туда циклов 50 и все. Брак попался, либо МК уже где-то использовался.
Еще советую проверить сигналы RST,SCK,MOSI,MISO. RST для AT90S1200 должен быть инвертирован. Проверьте работу кварцевого генератора. На выводах XTAL должна идти генерация частоты кварца.
forever failure
Цитата(SPS @ Mar 15 2005, 12:03)
Так а на другом контроллере пробовали? У меня был случай, взял якобы новый МК, залил туда циклов 50 и все. Брак попался, либо МК уже где-то использовался.
Еще советую проверить сигналы RST,SCK,MOSI,MISO. RST для AT90S1200 должен быть инвертирован. Проверьте работу кварцевого генератора. На выводах XTAL должна идти генерация частоты кварца.
*


уже на четырёх чипах из разных партий разных годов.
сигнал был как от внешнего источника так и от кварца, генерация
_точно_ есть на выводах, если нет, то вобще читаются одни нули.

/RESET инвертированый это означает активный (режим программирования)
низкий уровень ? У меня так и включено.

А вообще какое-то есть ощущение, что где-то не выдерживаются какие-то
временные интервалы.
SPS
Схему можете изобразить по которой осущесвляется прошивка?
forever failure
Yes! Получилось !!
Собственно потвердилось последнее предположение о том, что не
выдерживаются временные интервалы.
Лечение такое :
В файл avr.c исходного кода в строке 353 вставляем вызов
usleep (mem->max_write_delay);
после чего make all; make install;
и на этот раз всё чётко работает.

У меня машина пень 4 2800 МГц, наверняка авторы программы не прогоняли
её на такой скорости, поэтому и вылез этот косяк. Было бы у меня мегагерц поменьше, может я тоже ничо бы не заметил, но .... Надо будет авторам обязательно отписать.

Спасибо всем участникам и фтыкателям за внимание !
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.