Страница 1 из 1

Замена atmega8 на atmega168

Добавлено: Ср июн 08, 2011 18:47:15
Yftul
Уважаемые коты, в одной из своих самоделок столкнулся с недостатком flash-памяти, в связи с чем была куплена mega168. Программа под cvavr перекомпилирована с mega168.h и mega168_bits.h, поправлены очевидные баги с регистрами.

Результат - программа не работает. Может кто подсказать ключевые точки несовместимости subj, чтобы знать куда копать.

В самоделке использованы следующие ресурсы контроллера:
TWI - на этот блок наибольшие подозрения;
SPI, UART, Timer0, Timer1 - ctc mode + захват, ADC, Ext int. Также идет обращение к eeprom.

Видимый результат - программа выдает половину инициализационной строки в UART и намертво виснет.

Re: Замена atmega8 на atmega168

Добавлено: Ср июн 08, 2011 20:56:43
ChipKiller
Yftul писал(а):... подсказать ключевые точки несовместимости subj, чтобы знать куда копать.
... копать нужно в сторону datasheeta. mega168 можно поставить вместо mega48 или mega88, а с mega8 - различия очень существенны (сравните хотя-бы *.h-файлы в любом текстовом редакторе ). Выход один - переписать программу.

Re: Замена atmega8 на atmega168

Добавлено: Ср июн 08, 2011 21:14:09
Yftul
Ну... практика уже показала, что нужно вносить изменения. Логично предположить, что алгоритмы на C вряд ли нуждаются в корректировке. Остаются аппаратные устройства. Список используемых устройств я привел, хотелось бы услышать советы тех, кто уже это делал - какие именно устройства нуждаются в изменении алгоритма работы?

Re: Замена atmega8 на atmega168

Добавлено: Ср июн 08, 2011 21:17:05
radio-kot
Yftul писал(а): выдает половину инициализационной строки в UART и намертво виснет.
добавьте контрольные точки по методу отладки через UART - www.proavr.narod.ru/z4.htm

и смотрите где виснет - станет ясно почему. :beer:

Re: Замена atmega8 на atmega168

Добавлено: Ср июн 08, 2011 21:22:41
Yftul
Спасиб за совет, вообще планирую отключить все устройства и пробовать включать их по очереди с целью выяснить что именно глючит. Но все же, может кто делал нечто подобное, хотелось бы увидеть кто какие грабли проверил на своем лбу, чтобы не набивать уже набитых кем-то шишек?

Upd: набрел на атмеловский апноут по переходу с mega8 на mega88:
appnote AVR094
так как mega88 принципиально не отличается от mega168, буду курить.

Re: Замена atmega8 на atmega168

Добавлено: Ср июн 08, 2011 23:28:42
SubDia
можете еще Appnote AVR095 посмотреть ("Migrating between ATMega48, ATMega88&ATMega168").

Re: Замена atmega8 на atmega168

Добавлено: Чт июн 09, 2011 10:05:56
Satyr
А чего бы просто в дебагере не запустить и не пройти по шагам все и посмотреть ?

Re: Замена atmega8 на atmega168

Добавлено: Чт июн 09, 2011 10:09:13
Yftul
К сожалению протеус 7.4 намертво виснет при попытке запустить данный проект. В железе все работает нормально(на старом процессоре).
Впрочем спасибо за совет, попробую обновить протеус и погонять проект в нем.

Re: Замена atmega8 на atmega168

Добавлено: Чт июн 09, 2011 10:44:38
Satyr
Вобще я имел ввиду собрать железяку с атмегой168 и на ней программу дебагом посмотреть.

Re: Замена atmega8 на atmega168

Добавлено: Чт июн 09, 2011 10:48:14
Yftul
Satyr писал(а):Вобще я имел ввиду собрать железяку с атмегой168 и на ней программу дебагом посмотреть.
Хм. Когда я работал с контроллерами cygnal, их программатор работал также и отладчиком. Насколько я могу судить, программатор от Петьки этого делать не может. Ошибаюсь?

Re: Замена atmega8 на atmega168

Добавлено: Чт июн 09, 2011 11:23:26
Satyr
Я давно не могу понять, на кой народ наплодил мильон программаторов самопалов, ни на что не способных и не совместимых с чем либо, кроме себя.

Есть атмеловский внутрисхемные отладчики jtagice, jtagice2, one. первый давно сворован и проклонирован и не сложнее среднестатистического колхозного прошивальщика на USB от дяди Васи.

На кой весь этот гемморой ?

p.s. пример http://easyelectronics.ru/vnutrisxemnay ... g-ice.html

Re: Замена atmega8 на atmega168

Добавлено: Чт июн 09, 2011 11:39:12
Yftul
Попрошу, меньше экспрессии. За ссылочку спасибо.

Re: Замена atmega8 на atmega168

Добавлено: Чт июн 09, 2011 12:54:08
Yftul
Изучение литературы показало, что mega168 не поддерживает jtag, а для debugwire нужен фирменный отладчик.
Так что этот путь отпадает.

Re: Замена atmega8 на atmega168

Добавлено: Пт июн 10, 2011 12:56:44
Yftul
Спасибо всем, кто откликнулся, проблема решена - заработало. Помог appnote atmel.

Основными проблемами были:
1. Несовпадение имен некоторых регистров;
2. Разница в инициализации части устройств(я полностью перегенерировал в визарде инициализационный блок);
3. Разница в USART - пришлось полностью перегенерить все что отвечает за прием/передачу;
4. Разница в регистре, управляющим поведением процессора при выполнении команды "sleep"

Алгоритмы работы SPI(внешняя память), TWI(DS1307+eeprom+дочерний контроллер на tiny26), Timer1 + захват(приемник RC-5)
не изменились. ADC пока не трогал, но нужно учесть изменившийся Vref, внешние прерывания также пока не трогал.

ЗЫ: а зависало по моей собственной криворукости - случайно включил прерывание SPI при генерации конфига устройств, хотя обмен с памятью ведется с помощью spi.h, без использования прерываний и обработчика естественно не предусмотрено.

Re: Замена atmega8 на atmega168

Добавлено: Пт июн 10, 2011 13:18:44
Satyr
Yftul писал(а):что mega168 не поддерживает jtag, а для debugwire нужен фирменный отладчик.
Так и jtag надо "фирменный" для отладки -)))

debugwire тормозно очень шевелится, но жить можно.

Re: Замена atmega8 на atmega168

Добавлено: Пт июн 10, 2011 13:21:37
Yftul
JTAG-отладчик несложно собрать самому, в том числе по Вашей же ссылке, а debugwire-отладчик придется покупать, причем не за копейки.