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

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

Ответ:

Отправлено Vit 11 февраля 2007 г. 13:17
В ответ на: Строчка формируется в цикле (+) отправлено yurich 10 февраля 2007 г. 16:41

Кажись разобрал - там, похоже, всё прямоугольно.
когда готовится строка nmeastr, из неё копировать низзя. А кто ж это заблокировал? Получается нужно два признака блокировки - один - это datardy - для того, чтоб узнать, что данные можно перегружать из nmeastr в mt2send, а второй, обзову data_tx_proceed, - для того, чтоб разрешать передачу только после копирования до начала следующей подготовки nmeastr. datardy = 1 нужно вставить в начало подготовки nmeastr. Втаком варианте могут быть "проскальзывания" посылок, но испортить данные врятли получится

Типа


while(1)
{
ParseNMEA()
}

void ParseNMEA (void)
{
...
if((datardy == 0)||(data_tx_proceed==0))
{
strcpy(mt2send, nmeastr);
if(datardy == 0) data_tx_proceed=1;

}
}

И в ISR таймера шлем

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

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

Ответы


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

Сообщение:

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

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

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

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