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

 
 
> mega48 и INT0, Не пойму в чем дело!
alux
сообщение Jun 27 2006, 08:08
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447



Ситуация тупая до безобразия... Сделал проект на меге48 с бутлодером. Так как у м48 нет отдельного загрузчика, сделал так. По сбросу делаю rjmp boot_start в последние 512 байт памяти. Там по нажатию на кнопку определяю, что делать: запускать пользовательскую программу или ждать команд от компьютера. Все работает с песней. Пишу, стираю, читаю. Теперь надо добавить обработчик внешнего прерывания. Все сделал как положено. Настроил внешнее прерывание INT0 по фронту. Разрешил его. Указал вектор .org INT0addr rjmp metka . Программа перестала работать(или работать не так как надо) Кстати, в симуляторе (AVRStudio) все работает как положено. Не могу понять в чем дело. В обработчике ничего не делаю! Исчерпал все варианты. Помогите, пожалуйста.
java script:emoticon(':help:', 'smid_14')
help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GeorgyBey
сообщение Jun 27 2006, 10:26
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Цитата(alux @ Jun 27 2006, 11:08) *
... Указал вектор .org INT0addr rjmp metka .


Сталкивался с тем, что RJMP-у не хватает адресных возможностей перескочить доступную память sad.gif
Команде "jmp" (она дальше "прыгает") тоже может возможностей не хватить.

"Развесьте" метки по пространству адресов через малые промежутки, вместо "rjmp metka" сделайте
"rjmp m1", оттуда "rjmp m2"..."rjmp metka" и посмотрите - не заработает ли.
Или вспоминайте команду перехода на физический конкретный адрес в начало, а оттуда "rjmp",
но в любом случает почитайте в ПОЛНОМ даташите про команды переходов smile.gif

Удачи cheers.gif


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jun 27 2006, 10:29
Сообщение #3


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(GeorgyBey @ Jun 27 2006, 13:26) *
Сталкивался с тем, что RJMP-у не хватает адресных возможностей перескочить доступную память sad.gif
Команде "jmp" (она дальше "прыгает") тоже может возможностей не хватить.

Однозначно хватит возможностей rjmp.
Речь идёт об ATmega48.
Go to the top of the page
 
+Quote Post
GeorgyBey
сообщение Jul 10 2006, 15:21
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 21-12-04
Из: Киев
Пользователь №: 1 593



Цитата(IgorKossak @ Jun 27 2006, 13:29) *
Цитата(GeorgyBey @ Jun 27 2006, 13:26) *

Сталкивался с тем, что RJMP-у не хватает адресных возможностей перескочить доступную память sad.gif
Команде "jmp" (она дальше "прыгает") тоже может возможностей не хватить.

Однозначно хватит возможностей rjmp.
Речь идёт об ATmega48.


А как объяснить?!:
D:\...asm(531): error: Relative branch out of reach


--------------------
На "нет" и "нах" :)
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jul 11 2006, 12:34
Сообщение #5


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(GeorgyBey @ Jul 10 2006, 18:21) *
А как объяснить?!:
D:\...asm(531): error: Relative branch out of reach

Приведите здесь эту самую строку (531) и посмотрите внимательно на размер флеши в настройках (*.h, *.inc, *.xcl в зависимости от среды).
Судя по исходным данным:
1. Device ATmega48 Flash 4K Bytes
2. RJMP - Relative Jump
Description:
Relative jump to a address within PC - 2K + 1 and PC + 2K (words). For AVR microcontrollers with Program memory not exceeding 4K words (8K bytes) this instruction can address the entire memory from every address location.
Т. е. возможности RJMP перекрывают пространство кода ATmega48 вдвое.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- alux   mega48 и INT0   Jun 27 2006, 08:08
- - beer_warrior   Проверять железо, дребезг, подтяжка итп.   Jun 27 2006, 08:17
|- - alux   Проверять железо, дребезг, подтяжка итп. Вывод I...   Jun 27 2006, 09:06
- - Shurmas   Цитата(alux @ Jun 27 2006, 12:08) в симул...   Jun 27 2006, 08:20
- - beer_warrior   ЦитатаКак может вставка вектора прерывания ИНТ0 по...   Jun 27 2006, 09:18
|- - alux   Цитата(beer_warrior @ Jun 27 2006, 12:18)...   Jun 27 2006, 09:46
- - alux   Появилась версия... В бутлодере я использовал в ка...   Jun 27 2006, 09:33
|- - GeorgyBey   Цитата(IgorKossak @ Jul 11 2006, 15:34) Ц...   Jul 12 2006, 10:46
|- - IgorKossak   Цитата(GeorgyBey @ Jul 12 2006, 13:46) А ...   Jul 12 2006, 11:31
- - Sergio66   Была аналогичная проблема. Дело оказалось в том, ч...   Jun 27 2006, 10:30
|- - alux   Цитата(Sergio66 @ Jun 27 2006, 13:30) Был...   Jun 27 2006, 11:55
|- - Sergio66   Цитата(alux @ Jun 27 2006, 15:55) Цитата(...   Jun 27 2006, 12:41
- - serg_am   Может быть у тебя происходит вызов прерывания во в...   Jun 27 2006, 11:53
- - alux   Повторяю. Может ли быть проблема в том , что в бут...   Jun 27 2006, 12:13
|- - SpiritDance   Цитата(alux @ Jun 27 2006, 16:13) И кстат...   Jun 27 2006, 15:04
|- - alux   Цитата(SpiritDance @ Jun 27 2006, 18:04) ...   Jun 27 2006, 15:46
|- - SpiritDance   Цитата(alux @ Jun 27 2006, 19:46) Как-то ...   Jun 27 2006, 17:15
||- - alux   Цитата(SpiritDance @ Jun 27 2006, 20:15) ...   Jun 29 2006, 07:09
|- - singlskv   Цитата(alux @ Jun 27 2006, 19:46) .cseg b...   Jun 27 2006, 17:22
- - defunct   Действительно. Ничего не понятно. Откуда взялось ...   Jun 29 2006, 19:29
- - alux   Цитата(defunct @ Jun 29 2006, 22:29) Дейс...   Jul 3 2006, 13:04
- - SpiritDance   Цитата(alux @ Jul 3 2006, 17:04) Какие ещ...   Jul 3 2006, 14:17
- - alux   Цитата(SpiritDance @ Jul 3 2006, 17:17) Ц...   Jul 5 2006, 07:02


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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:13
Рейтинг@Mail.ru


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