|
Конфликт флагов прерываний SREG- TCCR1A. |
|
|
|
Jun 5 2011, 04:03
|
Группа: Новичок
Сообщений: 8
Регистрация: 5-06-11
Пользователь №: 65 486

|
Конфликт флагов прерываний SREG- TCCR1A. Установлено ПО: WinAVR-20100110, AvrStudio418Setup+ AVRStudio4.18SP1. Программа на AVR GCC. При загрузке регистр TCCR1A=0x02. Последней операцией идёт разрешение прерываний SREG|=(1<<SREG_I);. Пробовал и SREG=0x80; - результат один и тот же: одновременно с флагом I (7-й разряд) устанавливается так же 7-й разряд в TCCR1A. И результат становится TCCR1A=0x82. Кто-нибудь сталкивался с такой проблемой? И как она решается? На форуме уже обсуждался аналогичный вопрос с взаимовлияниями TCCR1A и SREG, но я не понял решения и ситуация там была с выходом из программы, а не во время загрузки. В загрузке я после установки SREG добавил TCCR1A=0x02; - это помогло. Но как этот дефект скажется во время работы программы? Опасаюсь.
|
|
|
|
|
 |
Ответов
|
Jun 6 2011, 04:48
|

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

|
Цитата(ARV @ Jun 6 2011, 08:38)  поэтому оператор SREG|=(1<<SREG_I); выполняется неатомарно, что может давать странные эффекты. Практически исключено (может кроме нулевого уровня оптимизации). SREG в SFR области и такой код превратится в атомарные инструкции SBI и CBI. Хотя нет я погорячился. SBI и CBI адресуют лишь 32 байта, а SREG за этой границей. Так что очистка-установка битиков регистра SREG по маске в общем случае - неатомарная операция. Также стоит покопать в сторону: Цитата(Палыч @ Jun 5 2011, 10:59)  Вероятнее всего, что как только Вы разрешили прерывания глобально (бит I в SREG), то какое-то прерывание тут же и случилось... В процедуре обработки этого прерывания был установлен 7-ой бит регистра таймера TCCR1A.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jun 6 2011, 05:47
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(demiurg_spb @ Jun 6 2011, 07:48)  Хотя нет я погорячился. SBI и CBI адресуют лишь 32 байта, а SREG за этой границей. Так что очистка-установка битиков регистра SREG по маске в общем случае - неатомарная операция. Вы так больше не пугайте  Код sei/cli set/clt sev/clv sen/cln sez/clz sec/clc - что еще забыл? Да и ладно - смысл и так понятен - это атомарные операции.
|
|
|
|
Сообщений в этой теме
mogikanin Конфликт флагов прерываний SREG- TCCR1A. Jun 5 2011, 04:03 VladislavS Даташит:ЦитатаThe I-bit can also be set and cleare... Jun 5 2011, 06:40 Палыч Цитата(mogikanin @ Jun 5 2011, 08:03) одн... Jun 5 2011, 06:59 mogikanin Цитата(Палыч @ Jun 5 2011, 13:59) Вероятн... Jun 6 2011, 02:00  Палыч Цитата(mogikanin @ Jun 6 2011, 06:00) ...... Jun 6 2011, 05:20   mogikanin Цитата(Палыч @ Jun 6 2011, 12:20) Хорошо ... Jun 6 2011, 10:22   demiurg_spb Цитата(_Pasha @ Jun 6 2011, 09:47) Кодsei... Jun 6 2011, 05:56 VladislavS 1. Смотри ассемблерный код. Чудес не бывает.
2. Ис... Jun 6 2011, 11:12 Палыч Закоментируйте всё до приведенной Вами конструкции... Jun 6 2011, 12:33 mogikanin Цитата(VladislavS @ Jun 6 2011, 18:12) 1.... Jun 7 2011, 03:53  demiurg_spb Цитата(mogikanin @ Jun 7 2011, 07:53) sei... Jun 7 2011, 04:28   mogikanin Цитата(demiurg_spb @ Jun 7 2011, 11:28) Н... Jun 8 2011, 02:13    Палыч Цитата(mogikanin @ Jun 8 2011, 06:13) Я п... Jun 8 2011, 05:51     mogikanin Цитата(Палыч @ Jun 8 2011, 12:51) Если са... Jun 9 2011, 04:22      SysRq Цитата(mogikanin @ Jun 9 2011, 08:22) ...... Jun 9 2011, 14:26      Marian Цитата(mogikanin @ Jun 9 2011, 07:22) Хор... Jun 9 2011, 17:22       mogikanin Цитата(Marian @ Jun 10 2011, 00:22) Время... Jun 10 2011, 05:37        demiurg_spb Цитата(mogikanin @ Jun 10 2011, 09:37) if... Jun 10 2011, 11:43         Палыч Цитата(demiurg_spb @ Jun 10 2011, 15:43) ... Jun 10 2011, 11:58          mogikanin Цитата(Палыч @ Jun 10 2011, 18:58) Почему... Jun 12 2011, 12:58          demiurg_spb Цитата(Палыч @ Jun 10 2011, 15:58) Почему... Jun 13 2011, 16:35           Палыч Цитата(demiurg_spb @ Jun 13 2011, 20:35) ... Jun 14 2011, 07:21  _Pasha Цитата(mogikanin @ Jun 7 2011, 06:53) А с... Jun 7 2011, 05:50 Marian Цитата(mogikanin @ Jun 5 2011, 07:03) Кон... Jun 7 2011, 11:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|