[an error occurred while processing this directive]
Народ у iar avr 4.10В на большой оптимизации есть глюки? Дело в том, что немогу понять где порылась собака. (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Igor 14 сентября 2005 г. 11:23

Есть небольшая программа.Трахаюсь уже день третий...
В основном цикле выполняются две задачи, которые запускаются по флагам. Один выставляется в прерывании RX, второй по таймеру, т.е. выставлятся асинхронно. Задача которая выполняется по флагу от таймера, через какое-то время (произвольное) перестает работать, т.е. флаг в какой-то момент теряется (достаточно одного пропадания). Прерывание вызываться продолжает. Этот глюк исчезает если я заремливаю обработку второй задачи. В конечном итоге вторая задача имеет вид:
if (Flags.One==1)
{
Flags.One=0;
}
Даже этого действия достаточно, чтобы флаг начал терятся. Вот как объявленны флаги:
union
{
unsigned char Byte;
struct
{
unsigned char One:1; // флаг выставлемый в прерывании RX
unsigned char Two:1; // флаг выставляемый в прерывании от таймера
};
}Flags;

Понимаю, что информации может быть недостаточно, но если понадобится опишу поподробнее.
Сейчас я отключил оптимизацию полностью. Глюк пока не проявляется.
Попробую эту программулину откомпилировать в WinAvr, что получится отпишу. Но интересны и сейчас какие-нибудь мысли. Может нельзя так объявлять битовую поля? Хотя так рекомендовали объявлять иаровцы.

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru