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

 
 
> Прерывания в области загрузчика в 8-й меге
Hz!
сообщение Nov 27 2006, 17:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



В чем может быть причина, почему не работают прерывания в область загрузчика.
При аппаратном UART-е функционирует как надо, но расстраивает небольшая скорость
(стабильно работает тока на 4800 при 8МГц). Может кто сталкивался с такой проблемой и решил ее.
BOOTRST ставлю в 0.
В поиске нашел, что кто-то поборол подобную проблему следующим образом:
GICR = _BV(IVCE);
GICR = _BV(IVSEL); , а не
GICR = _BV(IVCE);
GICR |= _BV(IVSEL); , но мне это не помогло.
Линкуется все правильно, размещается в памяти с адреса 0x1С00 (BOOTSZ = 0);
В листинге вектор прерывания от RX указывает на адрес обработчика, а в реале туда не переходит.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hz!
сообщение Nov 28 2006, 22:18
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



значение регистра GICR в начале = 0 и после установки IVSEL становится равным 0х02. Бит I в SREG тоже устанавливается.
После наступления прерывания программа прыгает по неизвестному адресу(не знаю как его определить) и больше не возвращается.
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 28 2006, 23:58
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Hz! @ Nov 28 2006, 22:18) *
После наступления прерывания программа прыгает по неизвестному адресу(не знаю как его определить) и больше не возвращается.

Значит все более-менее хорошо. Адрес определить не сложно, всего 5 точек куда может прыгнуть
1. по вектору таблицы векторов в начале памяти (адрес 0),
либо по вектору в секции бутлоадера, начало секции бутлоадера взависимости от размера секции (256, 512, 1024, 2048 байт) может располагаться по четырем различным адресам.
2. Flashsize - 128.
3. Flashsize - 256.
4. Flashsize - 512.
5. Flashsize - 1024.

Вероятно вы просто ошиблись с адресом начала секции бутлоадера, вот оно и прыгает бог знает куда.
Если смотрели в симуляторе, где размер секции бутлоадера (boot size) не задан (и не может быть задан) программа прыгает в неизвестном направлении.
Если же смотрели через JTAG эмулятор, то очевидно неверно запрограммированы Fuses BOOTSZ.
Go to the top of the page
 
+Quote Post



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

 


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


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