Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

LPC2138. Запретить - разрешить прерывание.

Отправлено yurich 10 февраля 2007 г. 14:57


LPC2138 принимает GPS дату по одному компорту, UART0, процессит её, и по срабатыванию таймера шлет в UART1. Транспондер, короче.

Данные в UART1 шлются в прерывании таймера. Так приходится делать, потому что их надо послать в священный момент времени, таймслот.

Проблема в том, что данные, передаваемые UART1, портятся. Это происходит, по моим понятиям, потому, что в момент копирования строчки в функцию посылки в УАРТ может придти прерывание таймера, и начнется отсылка недокопированной строчки.

Вопрос: можно ли как-то запретить прерывание таймера на время копирования строчки, не потеряв само прерывание.
__disable_interrupt не работает.
Запрешение в VIC похоже сбрасывает прерывание.

Может, еще какие-то способы есть?

ОС нет. IAR4.30A

Код обработчика таймера

void TIMER1Interrupt (void)
{
T1IR |= (1 << 0);//reset irq flag
T1TCR = 0; //stop timer. TIMER1 is enabled again at EINT2, when 1PPS comes
if(datardy == 1)
{
Send1String(mt2send);
datardy = 0;
}
Led2Toggle();
VICVectAddr = 0;
}

Сорри за путаное изложение....мозги в кучку...

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

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

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 63:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru