|
mega48 и INT0, Не пойму в чем дело! |
|
|
|
 |
Ответов
|
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.
|
|
|
|
|
Jun 27 2006, 15:46
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(SpiritDance @ Jun 27 2006, 18:04)  Цитата(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). device codes ;* ;* DESCRIPTION ;* The following device codes must be used by the host computer. Note ;* that the device codes are arbitrary selected, they do not have any ;* thing in common with the signature bytes stored in the device. ;* This are the device Codes recognized by the AVRprog Software. Some ;* Devices may require special hardware or a different, not yet ;* implemented Protocol! Use at your own risk. Используется AVRProg и AVROSP Цитата(SpiritDance @ Jun 27 2006, 18:04)  Цитата(alux @ Jun 27 2006, 16:13)  У меня для 48 было такое решение. В начале прошивки находится прыжок на старт программы. Он подменялся на прыжок к старту загрузчика. Плюс в прошивке по определнному адресу, скажем 0080h размещается прыжок на старт основной программы. В этом случае контроллер при старте попадает на загрузчик. Загрузчик при необходимости старта основной программы делает абсолютный прыжок по адресу 0080h. Как-то закручено. Мой вариант проще. Цитата(SpiritDance @ Jun 27 2006, 18:04)  Цитата(alux @ Jun 27 2006, 16:13)  Ваша проблема наверняка в загрузчике. Пробовали прошивать программу без него? Попробую сегодня вечером. Думаю, Sergio66 прав.
|
|
|
|
|
Jun 29 2006, 07:09
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Цитата(SpiritDance @ Jun 27 2006, 20:15)  Цитата(alux @ Jun 27 2006, 19:46)  Как-то закручено. Мой вариант проще.
Вам конечно виднее. А я вот как раз не понял как ваш вариант прыгает на основную программу. Все! Нашел!!! Кратко объясню еще раз, в чем суть проблемы. Для меги48 написал бутлодер. Он размещен в последних 512байт памяти. Да, кстати метка boot_start действительно стояла перед директивой .org BOOTLOADER. Исправил.Но это не критично. По сбросу МК rjmp boot_start. Если во время сброса кнопка PINC, 5 была нажата, то переход в режим программирования. Если нет, то переход к инициализационной части основной программы (rjmp init). Вот здесь начинается интересное. Бутлодер запрограммировал при помощи avreal. Когда сравнил hex-файлы исходника и прочитанного через бутлодер, выяснилось, что бутлодер не правильно вычислил переход к метке init. AVROSP (host-программа для управлением бутлодером) использует расширенный формат hex-файла. А avreal отсекает все лишнее. Поэтому имеем смещение init -2 байта. Проблема решается довольно просто. Инициализацию разместил сразу за таблицей векторов прерываний. И метку init закрепить конкретным адресом директивой .org $01a . Все!!! Всем спасибо . Отдельное человеческое спасибо Sergio66 и SpiritDance.
|
|
|
|
Сообщений в этой теме
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 Цитата(alux @ Jun 27 2006, 11:08) ... Ука... Jun 27 2006, 10:26 IgorKossak Цитата(GeorgyBey @ Jun 27 2006, 13:26) Ст... Jun 27 2006, 10:29  GeorgyBey Цитата(IgorKossak @ Jun 27 2006, 13:29) Ц... Jul 10 2006, 15:21   IgorKossak Цитата(GeorgyBey @ Jul 10 2006, 18:21) А ... Jul 11 2006, 12:34    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   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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|