реклама на сайте
подробности

 
 
> Загрзчик AVR230 для AT90CAN128
Д_М
сообщение Apr 26 2016, 15:30
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Приветствую!
Давно пользуюсь этим загрузчиком на Mega128. http://www.atmel.com/Images/doc2541.pdf Работает чётко всем советую. Нужда заставила связаться с AT90CAN128. Решил сделать загрузчик для этого чипа. Этот загрузчик очень старый. На момент его выхода ещё не существовало AT90CAN128. Загрузчик был написан для IAR v2.28. Когда я его перенёс на IAR v6.4 транслятор выдал ощибку на ассемблеровскую инструкцию espm. И действительно не у AT90CAN128 не у Mega128 такой команды нет. Получается, что espm - это макрос, который знает IAR v2.28, но не знает IAR v6.4. В инклудах траслятора я этот макрос не нашёл. Ниже кусок кода, где этот макрос используется.

CODE
spmSPM:
movw r31:r30, r17:r16

rcall spmWait

in r20, SREG
cli

#ifdef __RAMPZ__
in r21, RAM_PZ
out RAM_PZ, r18
#endif

#ifdef __MEMSPM__
sts SPMREG, r22
#else
out SPMREG, r22
#endif

#ifdef __RAMPZ__
espm
#else
spm
#endif

У меня __MEMSPM__ включено, так как памяти больше, чем 64к. Ума не могу приложить что может делать этот макрос, помимо (вместо команды SPM). Единственно, чем он может отличать от spm - это выбором страницы, но это сделано выше out RAM_PZ, r18. Пробовал перехитрить судьбу. Решил взять проект Mega128 и забить адреса всех регистров AT90CAN128. Процесс загрузки идёт, но в память ничего не записывается. Значит заковырка именно в этом макросе. А именно обращение к какому-то регистру, ответственному за запись в память.

Заранее благодарен!

Сообщение отредактировал IgorKossak - Apr 27 2016, 19:16
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Д_М
сообщение Apr 26 2016, 21:14
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



В загрузчике для Мега 128 попробовал заменить ESPM на SPM. Работает. Попробовал тоже самое на AT90CAN128 - безрезультатно. Процесс идёт, в память ничего не записывается. Проверял выглузкой из флэш памяти контроллеря.
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 27 2016, 10:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Д_М @ Apr 27 2016, 00:14) *
В загрузчике для Мега 128 попробовал заменить ESPM на SPM. Работает. Попробовал тоже самое на AT90CAN128 - безрезультатно. Процесс идёт, в память ничего не записывается. Проверял выглузкой из флэш памяти контроллеря.

Значит проблема не в SPM/ESPM.
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение Apr 27 2016, 11:40
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



У меня был случай. IAR. Проблему обнаружил случайно. Программа была написана для станка. Серия блоков управления. При пропадании напряжения питания нужно сохранять параметры в EEPROM. Изначально я собирался использовать ATMEGA8535. Написал проект. Прошиваю МК. Сама программа работает. В EEPROM не пишет. Я проверил все что можно, в дизассемблер заглядывал. Вроде все нормально. Но в EEPROM упорно не хочет писать. На тот момент была в наличии ATMEGA32. Компилирую программу под этот МК, заливаю прошивку - все работает.
В общем, на тот момент мне некогда было разбираться. Собрал блоки управления на ATMEGA32A. Проблема была в IAR. Я брал старые проекты с использованием EEPROM и написанные на ассемблере в AVR-Studio. На той же 8535 запись в EEPROM исправно работала.

Я это написал к тому, что походу старые МК чем-то отличаются от МК выпущенных с определенного периода. И нужно брать старые версии IAR, и сравнивать результат компиляции с более поздними версиями IAR.

В моем случае, судя по всему, проблема была в порядке ассемблерных команд записи в EEPROM. Свежий IAR давал не тот порядок команд. И из-за этого на старых МК запись в EEPROM не работает, а на новых МК этот порядок команд прокатывает.

Сообщение отредактировал demiurg1978 - Apr 27 2016, 11:45
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Д_М   Загрзчик AVR230 для AT90CAN128   Apr 26 2016, 15:30
- - Д_М   Включил ассемблерный листинг получилось: 114 ...   Apr 26 2016, 16:36
|- - zombi   Цитата(Д_М @ Apr 26 2016, 19:36) Просмотр...   Apr 26 2016, 21:50
- - aiwa   Скорее всего это из разряда: "The behavior wa...   Apr 26 2016, 22:03
|- - demiurg1978   Обратитесь к Ксении на этом форуме. http://electro...   Apr 27 2016, 03:30
- - aiwa   Действительно, оказывается раньше, в редакции 1999...   Apr 27 2016, 10:13
- - pavel-pervomaysk   Ничего там особого нет, адрес страницы он и в Афри...   Apr 27 2016, 13:38
- - Д_М   Приветствую, Коллеги! Прошу прощения, что откр...   Jun 15 2016, 19:08
- - pavel-pervomaysk   Я дал код с рабочего проекта.   Jun 15 2016, 20:10
- - Д_М   Получилось! Всем большое спасибо за участие...   Jun 17 2016, 11:13
- - asellus   Специально зарегиcтрировался чтобы сказать спасибо...   Feb 10 2017, 13:16


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016