|
ATMega |
|
|
|
 |
Ответов
|
May 24 2011, 07:56
|

Профессионал
    
Группа: Свой
Сообщений: 1 433
Регистрация: 27-10-08
Из: Украина, Киев
Пользователь №: 41 215

|
Цитата(Сергей Борщ @ May 22 2011, 00:35)  EEPROM стиралась вместе ко старым кодом перед записью новой прошивки? Да, именно так  Цитата(Diusha @ May 23 2011, 07:16)  А по делу на всякий пожарный напомню, что между запись EEWE д. б. после EEMWE в теч. не более 4-х тактов. Если у Вас в программе разрешены прерывания, условие может нарушиться То есть лучше кусочек который пишет значения в ЕЕПРОМ, заключить в: Код __disable_interrupt(); ... __enable_interrupt(); ? Подскажите, как программно выполнить ресет? Вот у меня в программе есть место где по сути дела алгоритм должен просто начать выполняться с самого начала, как выполнить ресет программно? Спасибо! АТMega8, IAR
--------------------
Брак - это такой вид отношений, в которых один всегда прав, - а другой - муж.
|
|
|
|
|
May 24 2011, 08:47
|
Частый гость
 
Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764

|
Цитата(Буратино @ May 24 2011, 11:56)  То есть лучше кусочек который пишет значения в ЕЕПРОМ, заключить в: Код __disable_interrupt(); ... __enable_interrupt(); ? Это небезопасно, т.к. этим кодом можно несанкционированно разрешить прерывания там, где они запрещены. Лучше так: Код char temp = SREG; __disable_interrupt(); ... SREG = temp; Про ресет тут целая тема на нескольких страницах была. В кратце: если аппаратно надо сбросить, то только с помощью WatchDog это можно сделать, если просто програмно перепрыгнуть куда-либо, то как-то так: Код unsigned short Addr = (unsigned short)main; ((void(*)(void))Addr)();
|
|
|
|
|
May 26 2011, 03:42
|

Участник

Группа: Свой
Сообщений: 66
Регистрация: 5-08-10
Из: Томск
Пользователь №: 58 761

|
Цитата(Sergey_Aleksandrovi4 @ May 24 2011, 15:47)  Это небезопасно, т.к. этим кодом можно несанкционированно разрешить прерывания там, где они запрещены. Лучше так: Код char temp = SREG; __disable_interrupt(); ... SREG = temp; Если используете gcc (он же WinAVR), то в util/atomic.h есть средства для работы с атомарными блоками. Можно использовать такую конструкцию Код ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { // тут код блока с атомарным доступом }
|
|
|
|
|
May 26 2011, 04:26
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(Bass @ May 26 2011, 07:42)  Если используете gcc (он же WinAVR), то в util/atomic.h есть средства для работы с атомарными блоками. Можно использовать такую конструкцию Код ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { // тут код блока с атомарным доступом } Можно, но с переносимостью будут проблемы. ATOMIC_BLOCK реализован на специфических особенностях gcc и подобную конструкцию повторить средствами другого компилятора может не получиться. Так что не стоит...
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
Сообщений в этой теме
Буратино ATMega May 11 2011, 06:14 CYD В книжке написано, что тоглать можно только ОС1А. ... May 11 2011, 06:28 Буратино Цитата(CYD @ May 11 2011, 09:28) В книжке... May 11 2011, 06:32  Sergey_Aleksandrovi4 Ещё как вариант - пересесть с устаревшей восьмёрки... May 11 2011, 08:23 haker_fox QUOTE (CYD @ May 11 2011, 15:28) тоглать
... May 11 2011, 09:34 Сергей Борщ QUOTE (Буратино @ May 11 2011, 09:14) В р... May 11 2011, 09:18 Буратино Сделал вот так:
Кодvoid Init_Timer1 (void... May 11 2011, 09:53 Палыч Цитата(Буратино @ May 11 2011, 13:53) Не ... May 11 2011, 10:09  Буратино Цитата(Палыч @ May 11 2011, 13:09) Приори... May 11 2011, 10:27 Буратино ATMega8/8МHz кварц. Подскажите, как получить в мик... May 12 2011, 06:34 Сергей Борщ QUOTE (Буратино @ May 12 2011, 09:34) Но ... May 12 2011, 07:36 dimka76 А зачем все эти заморочки с прерываниями. В режиме... May 12 2011, 08:36 Буратино Цитата(dimka76 @ May 12 2011, 11:36) А за... May 13 2011, 07:49  Сергей Борщ QUOTE (Буратино @ May 13 2011, 10:49) Доб... May 13 2011, 08:02   Буратино Цитата(Сергей Борщ @ May 13 2011, 11:02) ... May 13 2011, 08:32    Сергей Борщ QUOTE (Буратино @ May 13 2011, 11:32) Схе... May 13 2011, 10:29     Буратино Цитата(Сергей Борщ @ May 13 2011, 13:29) ... May 13 2011, 11:13      Сергей Борщ QUOTE (Буратино @ May 13 2011, 14:13) У м... May 13 2011, 11:18  dimka76 Цитата(Буратино @ May 13 2011, 11:49) На ... May 13 2011, 08:20   Клим Цитата(dimka76 @ May 13 2011, 11:20) Можн... May 16 2011, 06:24    Буратино Цитата(Клим @ May 16 2011, 09:24) Самое п... May 21 2011, 12:02     Сергей Борщ QUOTE (Буратино @ May 21 2011, 15:02) Сам... May 21 2011, 21:35     Diusha Цитата(Буратино @ May 21 2011, 15:02) Все... May 23 2011, 04:16 Буратино ААААА теперь все работает даже с тремя лампами... May 13 2011, 11:41 Палыч Цитата(Буратино @ May 24 2011, 11:56) Под... May 24 2011, 08:49 Сергей Борщ QUOTE (Буратино @ May 24 2011, 10:56) То ... May 24 2011, 10:22 Буратино Спасибо! May 24 2011, 09:12 Буратино Скажите, а вот если я не использую АЦП микроконтро... Jun 1 2011, 17:23 demiurg_spb Думаю что да.
Входы АЦП-высокоимпедансные и не дол... Jun 2 2011, 04:11 Буратино Спасибо!
И еще один вопросик: вот если для пр... Jun 2 2011, 06:48 demiurg_spb Если у пищалки высокоимпедансный вход то всё будет... Jun 2 2011, 07:08  Буратино Цитата(demiurg_spb @ Jun 2 2011, 10:08) Е... Jun 2 2011, 07:16   demiurg_spb R20 увеличить можно до 4,7К
И проверить будет-ли о... Jun 2 2011, 07:21
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|