[an error occurred while processing this directive]
Ответ: отож :о)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено радиолюбитель без лицензии 14 сентября 2005 г. 14:41
В ответ на: Теоретически должен теряться, но это - тоже самое =) отправлено † 14 сентября 2005 г. 14:31

Паэтому, судя из того, что проблема автора - в влиянии работы с одним битом на другой бит (асинхронно изменяемый), судя по всему истекает из того, что операция установки/сброса бита не атомарна (lds->andi/ori->sts), вижу следующие выходы:
1) размещение переменной с флагами в регистре общего назначения - благо их много - итого установка/сброс бита - одна команда andi(and)/ori(or).
2) размещение переменной с флагами в io space - (идеал - специально выделенный general purpose io register, где такого нет - то в неиспользуемом регистре периферии) - sbi/cbi, тоже атомарные операции.
3) обрамление операции по сбросу/установке флагов в основной программе кодом, запрещающим и затем разрешающим прерывания.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru