|
|
  |
mega48 и INT0, Не пойму в чем дело! |
|
|
|
Jun 27 2006, 08:20
|
Местный
  
Группа: Новичок
Сообщений: 232
Регистрация: 24-06-06
Пользователь №: 18 332

|
Цитата(alux @ Jun 27 2006, 12:08)  в симуляторе (AVRStudio) все работает как положено. Не могу понять в чем дело. В обработчике ничего не делаю! Исчерпал все варианты. Помогите, пожалуйста. проверьте в симуляторе VMLAB.
|
|
|
|
|
Jun 27 2006, 09:18
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Цитата Как может вставка вектора прерывания ИНТ0 повлиять на программу? При определенных условиях, но это маловероятно. На чем пишите? И плз критичные места кода в студию( в т.ч. инит и обработчик прерывания).
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Jun 27 2006, 09:46
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(beer_warrior @ Jun 27 2006, 12:18)  Цитата Как может вставка вектора прерывания ИНТ0 повлиять на программу? При определенных условиях, но это маловероятно. На чем пишите? И плз критичные места кода в студию( в т.ч. инит и обработчик прерывания). Прилагаю код
Прикрепленные файлы
boot48.txt ( 19.01 килобайт )
Кол-во скачиваний: 163
|
|
|
|
|
Jun 27 2006, 10:26
|
Местный
  
Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593

|
Цитата(alux @ Jun 27 2006, 11:08)  ... Указал вектор .org INT0addr rjmp metka . Сталкивался с тем, что RJMP-у не хватает адресных возможностей перескочить доступную память Команде "jmp" (она дальше "прыгает") тоже может возможностей не хватить. "Развесьте" метки по пространству адресов через малые промежутки, вместо "rjmp metka" сделайте "rjmp m1", оттуда "rjmp m2"..."rjmp metka" и посмотрите - не заработает ли. Или вспоминайте команду перехода на физический конкретный адрес в начало, а оттуда "rjmp", но в любом случает почитайте в ПОЛНОМ даташите про команды переходов Удачи
--------------------
На "нет" и "нах" :)
|
|
|
|
|
Jun 27 2006, 12:41
|
Местный
  
Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526

|
Цитата(alux @ Jun 27 2006, 15:55)  Цитата(Sergio66 @ Jun 27 2006, 13:30)  Была аналогичная проблема. Дело оказалось в том, что случайно переключил формат выходного hex файлв в Intel Exdended вместо Intel Standard. Разница в том, что в перы=вом случае в начале файла присутствуют доп. 2 байта. А загрузчик этого не учитывал. Вот все вектора и сдвигались. Проверьте формат выходного файла.
Интересная мысль! Но почему тогда обработчик по совпадению таймера работает без проблем? Обработчик таймера (точнее JAMP) может попадать на пространство, заполненное 0 (NOP) и "добегать" по ним до нужного кода.
|
|
|
|
|
Jun 27 2006, 15:04
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288

|
Цитата(alux @ Jun 27 2006, 16:13)  И кстати, какой родной DT для mega48? ATmega48 Signature Bytes 1. 0x000: 0x1E (indicates manufactured by Atmel). 2. 0x001: 0x92 (indicates 4KB Flash memory). 3. 0x002: 0x05 (indicates ATmega48 device when 0x001 is 0x92). Что за девайс type такой 0x77? (я правда не знаю) Ваша проблема наверняка в загрузчике. Пробовали прошивать программу без него? Как-то Вы сумбурно описали алгоритм его работы. До конца не понятно что значит работает на ура. в пробовали считать флешку у контроллера с неработающей программой и сверить с тем что там должно находится на самом деле? У меня для 48 было такое решение. В начале прошивки находится прыжок на старт программы. Он подменялся на прыжок к старту загрузчика. Плюс в прошивке по определнному адресу, скажем 0080h размещается прыжок на старт основной программы. В этом случае контроллер при старте попадает на загрузчик. Загрузчик при необходимости старта основной программы делает абсолютный прыжок по адресу 0080h.
--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|