gremlinable (gremlinable) wrote,
gremlinable
gremlinable

Category:

AVR. Танцы с бубном успеха не принесли.

Потерпел сегодня эпическое поражение в схватке с AVRами. Дело в том, что мы сейчас делаем экспериментальный прибор и я наткнулся на нехватку памяти. Ну, точнее, не то что бы нехватку, но если бы её было больше, можно было бы сохранять больше информации. В общем, решил я поменять ATmega644PA на ATmega1284P. Казалось бы, камни одного семейства, даташит у них общий, начинка одинаковая - всего-то надо снять один, поставить другой да пересобрать прошивку. Ага, как же...
Первое, на что я напоролся, это то, что любимый avr-gcc собранный crossdev`ом в генте наотрез отказывается линковать под m1284 - говорит, мол libgcc у тебя несовместимый. Долго бился, так ничего с этим сделать не смог и пошёл под винду. Под виндой у меня, надо отметить, как минимум два комплект компиляторов - один, скачанный с сайта атмела вручную и один, прилетевший с Atmel Studio 6 (наверняка есть ещё прилетевший с Studio 5, но не проверял). Оба собирают, с сильно разным качеством оптимизации, но не суть.
И тут я наткнулся на вторые грабли - компиляторы дружно не знают что такое регистр PRR (вторые потому что сначала компилил бутлоадер, где PRR не используется). Причём для 644-той меги, почему-то, знают. Натравил диф на заголовки, выяснил, что оно называется PRR0, задумался... Скачал свежий даташит - и правда, теперь регистров PRR два - PRR0 и PRR1, в котором находится один флаг - отключающий таймер 3. Вот мне теперь интересно, когда это там успел появиться второй 16-разрядный таймер? А то мне их вечно не хватает... Ну и не ясно, почему для 644 есть алиас PRR -> PRR0, а для 1284 - нет?
Но это фигня, фатальным оказался третий косяк: контроллер наглухо виснет где-то в функции strcpy_P (копирование строки из флеша в оперативку). Грешат этим оба виндовых компилятора, причину не нашёл...
Tags: avr, gcc, программирование, электроника
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments