реклама на сайте
подробности

 
 
> Конфликт флагов прерываний SREG- TCCR1A.
mogikanin
сообщение Jun 5 2011, 04:03
Сообщение #1





Группа: Новичок
Сообщений: 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; - это помогло. Но как этот дефект скажется во время работы программы? Опасаюсь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Jun 5 2011, 06:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(mogikanin @ Jun 5 2011, 08:03) *
одновременно с флагом I (7-й разряд) устанавливается так же 7-й разряд в TCCR1A.

Вероятнее всего, что как только Вы разрешили прерывания глобально (бит I в SREG), то какое-то прерывание тут же и случилось... В процедуре обработки этого прерывания был установлен 7-ой бит регистра таймера TCCR1A.
Go to the top of the page
 
+Quote Post
mogikanin
сообщение Jun 6 2011, 02:00
Сообщение #3





Группа: Новичок
Сообщений: 8
Регистрация: 5-06-11
Пользователь №: 65 486



Цитата(Палыч @ Jun 5 2011, 13:59) *
Вероятнее всего, что как только Вы разрешили прерывания глобально (бит I в SREG), то какое-то прерывание тут же и случилось... В процедуре обработки этого прерывания был установлен 7-ой бит регистра таймера TCCR1A.

В силу обстоятельств программу из Ассемблера пришлось переделывать на СИ (AVR GCC). В варианте Ассемблера такого небыло никогда. Программа тупо переделана на СИ. Т.е., порядок загрузок и инициализаций, а также все процедуры. Потому и удивляет такая ситуация. Был у меня эпизод с незаписью ЕЕПРОМ. Оказалось, что это дефекты старой версии, потому я и указал установленные версии. Я перед операцией SREG|=(1<<SREG_I); записал значения TCCR1A и сразу после неё. Именно после установки I происходит запись в TCCR1A. Т.е., вроде прерывания не успевают отработать. Поэтому, складывается впечатление, что запись в 7-й разряд SREG и TCCR1A происходит одновременно.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jun 6 2011, 05:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(mogikanin @ Jun 6 2011, 06:00) *
...складывается впечатление, что запись в 7-й разряд SREG и TCCR1A происходит одновременно.
Хорошо бы узнать: отчего у Вас такое "складывается впечатление"? Каким образом, каким средством Вы проверяете выполнение программы? Симулятор? В "железе"? Как смотрите? Что получаете?

P.S. Хорошо бы было, если бы Вы сообщили: какой AVR применяете?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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 6 2011, 12:20) Хорошо ...   Jun 6 2011, 10:22
- - ARV   если вы "тупо" переделали программу на С...   Jun 6 2011, 04:38
|- - demiurg_spb   Цитата(ARV @ Jun 6 2011, 08:38) поэтому о...   Jun 6 2011, 04:48
|- - _Pasha   Цитата(demiurg_spb @ Jun 6 2011, 07:48) Х...   Jun 6 2011, 05:47
|- - 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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 07:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.03013 секунд с 7
ELECTRONIX ©2004-2016