Замена atmega8 на atmega168
Замена atmega8 на atmega168
Уважаемые коты, в одной из своих самоделок столкнулся с недостатком flash-памяти, в связи с чем была куплена mega168. Программа под cvavr перекомпилирована с mega168.h и mega168_bits.h, поправлены очевидные баги с регистрами.
Результат - программа не работает. Может кто подсказать ключевые точки несовместимости subj, чтобы знать куда копать.
В самоделке использованы следующие ресурсы контроллера:
TWI - на этот блок наибольшие подозрения;
SPI, UART, Timer0, Timer1 - ctc mode + захват, ADC, Ext int. Также идет обращение к eeprom.
Видимый результат - программа выдает половину инициализационной строки в UART и намертво виснет.
Результат - программа не работает. Может кто подсказать ключевые точки несовместимости subj, чтобы знать куда копать.
В самоделке использованы следующие ресурсы контроллера:
TWI - на этот блок наибольшие подозрения;
SPI, UART, Timer0, Timer1 - ctc mode + захват, ADC, Ext int. Также идет обращение к eeprom.
Видимый результат - программа выдает половину инициализационной строки в UART и намертво виснет.
- Реклама
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Замена atmega8 на atmega168
... копать нужно в сторону datasheeta. mega168 можно поставить вместо mega48 или mega88, а с mega8 - различия очень существенны (сравните хотя-бы *.h-файлы в любом текстовом редакторе ). Выход один - переписать программу.Yftul писал(а):... подсказать ключевые точки несовместимости subj, чтобы знать куда копать.
Re: Замена atmega8 на atmega168
Ну... практика уже показала, что нужно вносить изменения. Логично предположить, что алгоритмы на C вряд ли нуждаются в корректировке. Остаются аппаратные устройства. Список используемых устройств я привел, хотелось бы услышать советы тех, кто уже это делал - какие именно устройства нуждаются в изменении алгоритма работы?
Последний раз редактировалось Yftul Ср июн 08, 2011 21:19:56, всего редактировалось 1 раз.
Re: Замена atmega8 на atmega168
добавьте контрольные точки по методу отладки через UART - www.proavr.narod.ru/z4.htmYftul писал(а): выдает половину инициализационной строки в UART и намертво виснет.
и смотрите где виснет - станет ясно почему.
Будете проходить мимо- проходите!
Re: Замена atmega8 на atmega168
Спасиб за совет, вообще планирую отключить все устройства и пробовать включать их по очереди с целью выяснить что именно глючит. Но все же, может кто делал нечто подобное, хотелось бы увидеть кто какие грабли проверил на своем лбу, чтобы не набивать уже набитых кем-то шишек?
Upd: набрел на атмеловский апноут по переходу с mega8 на mega88:
appnote AVR094
так как mega88 принципиально не отличается от mega168, буду курить.
Upd: набрел на атмеловский апноут по переходу с mega8 на mega88:
appnote AVR094
так как mega88 принципиально не отличается от mega168, буду курить.
- Реклама
- SubDia
- Держит паяльник хвостом
- Сообщения: 995
- Зарегистрирован: Сб апр 02, 2011 17:59:22
- Откуда: Город-герой Севастополь
Re: Замена atmega8 на atmega168
можете еще Appnote AVR095 посмотреть ("Migrating between ATMega48, ATMega88&ATMega168").
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Re: Замена atmega8 на atmega168
А чего бы просто в дебагере не запустить и не пройти по шагам все и посмотреть ?
Re: Замена atmega8 на atmega168
К сожалению протеус 7.4 намертво виснет при попытке запустить данный проект. В железе все работает нормально(на старом процессоре).
Впрочем спасибо за совет, попробую обновить протеус и погонять проект в нем.
Впрочем спасибо за совет, попробую обновить протеус и погонять проект в нем.
Re: Замена atmega8 на atmega168
Вобще я имел ввиду собрать железяку с атмегой168 и на ней программу дебагом посмотреть.
Re: Замена atmega8 на atmega168
Хм. Когда я работал с контроллерами cygnal, их программатор работал также и отладчиком. Насколько я могу судить, программатор от Петьки этого делать не может. Ошибаюсь?Satyr писал(а):Вобще я имел ввиду собрать железяку с атмегой168 и на ней программу дебагом посмотреть.
Re: Замена atmega8 на atmega168
Я давно не могу понять, на кой народ наплодил мильон программаторов самопалов, ни на что не способных и не совместимых с чем либо, кроме себя.
Есть атмеловский внутрисхемные отладчики jtagice, jtagice2, one. первый давно сворован и проклонирован и не сложнее среднестатистического колхозного прошивальщика на USB от дяди Васи.
На кой весь этот гемморой ?
p.s. пример http://easyelectronics.ru/vnutrisxemnay ... g-ice.html
Есть атмеловский внутрисхемные отладчики jtagice, jtagice2, one. первый давно сворован и проклонирован и не сложнее среднестатистического колхозного прошивальщика на USB от дяди Васи.
На кой весь этот гемморой ?
p.s. пример http://easyelectronics.ru/vnutrisxemnay ... g-ice.html
Re: Замена atmega8 на atmega168
Попрошу, меньше экспрессии. За ссылочку спасибо.
Re: Замена atmega8 на atmega168
Изучение литературы показало, что mega168 не поддерживает jtag, а для debugwire нужен фирменный отладчик.
Так что этот путь отпадает.
Так что этот путь отпадает.
Re: Замена atmega8 на atmega168
Спасибо всем, кто откликнулся, проблема решена - заработало. Помог appnote atmel.
Основными проблемами были:
1. Несовпадение имен некоторых регистров;
2. Разница в инициализации части устройств(я полностью перегенерировал в визарде инициализационный блок);
3. Разница в USART - пришлось полностью перегенерить все что отвечает за прием/передачу;
4. Разница в регистре, управляющим поведением процессора при выполнении команды "sleep"
Алгоритмы работы SPI(внешняя память), TWI(DS1307+eeprom+дочерний контроллер на tiny26), Timer1 + захват(приемник RC-5)
не изменились. ADC пока не трогал, но нужно учесть изменившийся Vref, внешние прерывания также пока не трогал.
ЗЫ: а зависало по моей собственной криворукости - случайно включил прерывание SPI при генерации конфига устройств, хотя обмен с памятью ведется с помощью spi.h, без использования прерываний и обработчика естественно не предусмотрено.
Основными проблемами были:
1. Несовпадение имен некоторых регистров;
2. Разница в инициализации части устройств(я полностью перегенерировал в визарде инициализационный блок);
3. Разница в USART - пришлось полностью перегенерить все что отвечает за прием/передачу;
4. Разница в регистре, управляющим поведением процессора при выполнении команды "sleep"
Алгоритмы работы SPI(внешняя память), TWI(DS1307+eeprom+дочерний контроллер на tiny26), Timer1 + захват(приемник RC-5)
не изменились. ADC пока не трогал, но нужно учесть изменившийся Vref, внешние прерывания также пока не трогал.
ЗЫ: а зависало по моей собственной криворукости - случайно включил прерывание SPI при генерации конфига устройств, хотя обмен с памятью ведется с помощью spi.h, без использования прерываний и обработчика естественно не предусмотрено.
Re: Замена atmega8 на atmega168
Так и jtag надо "фирменный" для отладки -)))Yftul писал(а):что mega168 не поддерживает jtag, а для debugwire нужен фирменный отладчик.
debugwire тормозно очень шевелится, но жить можно.
Re: Замена atmega8 на atmega168
JTAG-отладчик несложно собрать самому, в том числе по Вашей же ссылке, а debugwire-отладчик придется покупать, причем не за копейки.


