|
Расположение векторов прерываний, обработка прерываний, Само - программирование МК и прерывания |
|
|
|
Jul 19 2007, 20:46
|

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

|
Цитата(Alex ma @ Jul 19 2007, 21:23)  Так как таблица прерываний одна, а подпрограмм обработки прерываний две Это заблуждение. Таблиц прерываний тоже 2. Копайте в сторону IVSEL. Вот из ДШ на M16 Цитата When the IVSEL bit in GICR is set, interrupt vectors will be moved to the start of the Boot Flash section. The address of each Interrupt Vector will then be the address in this table added to the start address of the Boot Flash section.
|
|
|
|
|
Jul 20 2007, 03:43
|
Местный
  
Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377

|
При заливке программы нужно как то реализовать таймаут, чтоб вечно не ждать следующего байта, посчитать контрольную сумму, с программным переключением векторов надо попробовать, вроде то что надо, попал в загрузчик включил вектора в загрузчике, вышел, включил в программе. Думаю реализовать заливку бинариком, мне кажется проще, побайтно с $0000.
|
|
|
|
|
Jul 20 2007, 10:05
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Прерывания полезно для ускорения процесса программирования,тоесть пока мы принимаем следующую страницу в это время загружаем и программируем предыдущую, хотя можно и по другому ,принять данные прочитать с флеши туже страницу и сравнить ,если одинаковые едем дальше .Можно оба способа совместить - по ходу принимаем и сразу сравниваем. Короче тут уже зависит уже от желания и задач. Если охота с прерваниями ,нужно шаманить с переносом таблицы и запрещать прервания в нужных местах.
Выход ,если не дождались байта - это не проблема ,можно на стороне бута в цикле ожидания или по прерванию ,можно на стороне проги ПК, ждать пару сек ,если не пришло подтверждение приема или записи страницы (блока) данных ,ресетим МК соответственно опять входим в бутлоадер.Хотя вообще при нормально отлаженном бутлоадере и программе таких вещей не происходит.
|
|
|
|
|
Jul 20 2007, 10:40
|

Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544

|
Цитата нужно шаманить с переносом таблицы "Шаманить" нужно будет в *.xcl файле. Но там всё достаточно просто. А в самой программе перенос таблицы векторов - всего одна СИшная строчка. Использовать или не использовать прерывания в БутЛоадере - это вопрос из той же оперы, что и "использовать или не использовать прерывания в основной программе". Я лично в БутЛоадере ВСЕГДА использую прерывания.
|
|
|
|
|
Jul 23 2007, 13:43
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598

|
Цитата(bodja74 @ Jul 20 2007, 13:05)  Прерывания полезно для ускорения процесса программирования,тоесть пока мы принимаем следующую страницу в это время загружаем и программируем предыдущую,... Круто! Насколько я помню в режиме программирования FLASH-страницы должен быть запрещен WDT. Это вероятно говорит о том, что процессор временно подвисает. Думаю, что во время программирования страницы ничего работать не будет вообще.
|
|
|
|
|
Jul 23 2007, 14:48
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(IEC @ Jul 23 2007, 16:43)  Круто! Насколько я помню в режиме программирования FLASH-страницы должен быть запрещен WDT. Источник не внушает доверия  Даташит о должен быть запрещен умалчивает, а практика показывает что программирование flash и WDT прекрасно работают вместе. Цитата(IEC @ Jul 23 2007, 16:43)  Это вероятно говорит о том, что процессор временно подвисает. Неверная предпосылка, неверные выводы. Прочитайте даташит на предмет NRWW и RWW секций флеш-памяти.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 23 2007, 15:49
|
Знающий
   
Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984

|
Цитата(IEC @ Jul 23 2007, 16:43)  Круто! Насколько я помню в режиме программирования FLASH-страницы должен быть запрещен WDT. Собственно WDT в бутлоадере особо делать нечего,хотя о вкусах не спорят. Запрещать действительно прерывания нужно с момента записи в SPMCR и пока не будет выполнена SPM ,это касается всех прерываний. Цитата Это вероятно говорит о том, что процессор временно подвисает. Думаю, что во время программирования страницы ничего работать не будет вообще. В таком случае ,зачем тогда флаг SPMEN нужен ?И прерывание готовности SPM ,если в это время все равно ничего не выполняется?
|
|
|
|
|
Jul 24 2007, 04:53
|

Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544

|
Цитата WDT надо учитывать в бутлоадере Безоговорочно согласен! Когда я писАл самый первый бутлоадер, то только с включеным WDT смог выловить неприятный, редко возможный, косяк.
|
|
|
|
|
Jul 24 2007, 07:54
|
Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598

|
Цитата(defunct @ Jul 24 2007, 00:26)  Или напр, с установленным фузом WDTON.. А что, если установлен фуз WDTON, его действие можно запретить програмно?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|