Сергей Борщ 119 20 января, 2008 Опубликовано 20 января, 2008 · Жалоба дошел просто до пустой функции main(void) - он в функцию входит но из нее не выходит и висит - что это может быть?Где-то ошибка. Попробуйте получившийса .hex пройти по шагам в симуляторе AVRStudio. Сразу увидите - куда код входит и куда выходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Breese 0 20 января, 2008 Опубликовано 20 января, 2008 · Жалоба Эмм ошибка в пустой функции??? Кстати в АврСтудио все норм, как и должно быть а в железе чушь ((( Уже 5 ночей бьюсь ничего не помогает... Контроллер скажете вы, увы, пробовал на 3-х - один результат. Я грешу на настройки компилятора или фьюзы. Может есть какой нить заковыйрестый фьюзик? Вообще был бы благодарен если бы кто нить откомпили пустую функцию main в IAR 4 - тогда сразу бы нашел у себя ошибку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aesok 0 20 января, 2008 Опубликовано 20 января, 2008 · Жалоба Может есть какой нить заковыйрестый фьюзик? А что там у вас с M103C ? Анатолий. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Breese 0 20 января, 2008 Опубликовано 20 января, 2008 · Жалоба А что там у вас с M103C ? Анатолий. Был запрограммирован (PonyProg), щас распрограммировали и... ЗАРАБОТАЛО!!! Ребята вы боги!!! :yeah: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arttab 0 22 января, 2008 Опубликовано 22 января, 2008 · Жалоба Breese были приколы с "пустой функции main(void)". она была заоптимизирована. можно указать чтоб она не оптимизировалась или вставить в нее переход по метки, расположенной в main Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YWAS 0 22 августа, 2009 Опубликовано 22 августа, 2009 · Жалоба вот и у меня пришло время писать boot loader, начитавшись и натренировавшись столкнулся с такой проблемой... бут лоадер грузит программу с адреса 000000 и вроде запускает, первые команды проходят а дальше тишина, такое впечатление что не работают прерывания, может кто сталкивался с подобным - помогите - сижу уже битый час и все никак.. (компилятор IAR проц ATMega1280) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 22 августа, 2009 Опубликовано 22 августа, 2009 · Жалоба такое впечатление что не работают прерывания,Или вы переключили вектора на нулевые адреса, но забыли отключить какое-то из прерываний загрузчика. В результате оно стало попадать на пустой обработчик, а часть прерываний (TXE, UDR) не сбрасываются просто от самого факта входа в обработчик. Поставьте заглушки на все неиспользуемые вектора и дергайте в каждой заглушке своей ногой. Легко найдете, в каком прерывании вы зацикливаетесь. Если свободных ног мало, но есть осциллограф, можно наблюдать разные затычки на одной ноге так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YWAS 0 23 августа, 2009 Опубликовано 23 августа, 2009 · Жалоба Сергей спасибо за подсказки... Все оказалось тривиально просто, после возвращения из бут лоадера не переключился бит IVSEL, и вектора остались в бут области, переключив этот бит в 0 все заработало на ура....чего и всем желаю... :) ------------------------------------------------------------------------------------------ __disable_interrupt(); char temp; temp = MCUCR; // Get MCUCR MCUCR = temp|(1<<IVCE); // Enable change of Interrupt Vectors MCUCR = temp|(1<<IVSEL); // Move interrupts to Boot Flash section ------------------------------------------------------------------------------------------- __disable_interrupt(); temp = MCUCR; // Get MCUCR MCUCR = temp|(1<<IVCE); // Enable change of Interrupt Vectors MCUCR = temp&(0<<IVSEL); // Move interrupts to 0x00000 Flash section Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 23 августа, 2009 Опубликовано 23 августа, 2009 · Жалоба после возвращения из бут лоадера не переключился бит IVSELТо есть как это? Вы его переключали, а он сопротивлялся? ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YWAS 0 23 августа, 2009 Опубликовано 23 августа, 2009 · Жалоба типа того, ошибся немного, было так MCUCR = temp|(0<<IVSEL); // Move interrupts to 0x00000 Flash section Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 17 февраля, 2011 Опубликовано 17 февраля, 2011 · Жалоба Имеется основная программа в ATmega16, которая по команде с UARTа стирает одну страницу, вызывая следующую подпрограмму: void erase_test(void) @ "BOOTSECTION" { _WAIT_FOR_SPM(); _ENABLE_RWW_SECTION(); _PAGE_ERASE(0x2800); } Непосредственно перед вызовом прерывания запрещаю. Сама подпрограмма лежит в области загрузчика (в линкере секция BOOTSECTION прописана "куда надо"), страницу действительно стирает, но назад в основную программу не возвращается. Контроллер, кстати, продолжает генерировать ШИМ по одному из таймеров. В чём может быть проблема? Добавлю, что по адресу 0x2800..0x2880 (1 страница = 128 байт) нет кода программы, там лежат данные, так что сама себя программа стиранием этой области не портит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 17 февраля, 2011 Опубликовано 17 февраля, 2011 · Жалоба но назад в основную программу не возвращается.Там нужно еще что-то типа unlock делать, насколько помню - чтобы область приложения стала доступной на чтение. В avr-gcc это boot_rww_enable(); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 17 февраля, 2011 Опубликовано 17 февраля, 2011 · Жалоба Сергей Борщ, спасибо. Похоже, надо делать так: void erase_test(void) @ "BOOTSECTION" { _PAGE_ERASE(0x2800);//стираем страницу _WAIT_FOR_SPM();//ждём выполнения команды SPM _ENABLE_RWW_SECTION();//активируем RWW-секцию _WAIT_FOR_SPM();//опять ждём выполнения команды SPM } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 18 февраля, 2011 Опубликовано 18 февраля, 2011 · Жалоба Добавлено: теперь работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться