AVR + UART + FreeRTOS
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено groovy 21 ноября 2006 г. 01:07

К Atmega128 подцеплен модем sim300.
Чтобы вывести его из датамода, ему надо заслать последовательность "+++" с интервалом не более 20мс, ну и соответственно подождать 500мс до посылки и 500мс после, если одно из условий не выполняется "+++" трактуются как данные, а не как команда к выходу их датамода.

Проблема в том что примерно раз из десяти что-то не срастается и +++ уходят в виде данных, т.е. по всей видимости не выдерживаются интервалы, за 500мс я уверен, т.к. жду по секунде.

Отправка +++ идет через прерывания, т.е. запись в UDR0->прерывание->запись в UDR0 и т.д.

Т.к. юзается FreeRTOS, там частенько запрещаются прерывания, и хотя я вижу снифером что уходят все три плюса, за 20мс ручаться не могу.

Вопрос в том, может ли запрещение прерываний затормозить процесс отправки??

В моем понимании если на момент когда байт из UDR0 отправлен и прерывания запрещены, то просто установится флаг, а прерывания не будет даже после того как ОС их разрешит.

Могу ли я быть уверен, при такой схеме, что если уходят все данные, задержек точно не было и интервал отправки не превышает 20мс??

Скорость порта 9600.

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

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

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

Ссылка на URL: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание