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

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

Отправлено gorb 10 июня 2006 г. 14:44
В ответ на: ошибка в теле отправлено nestandart 09 июня 2006 г. 23:15

Собственно код
void main(void)
{
LONG ADelay;
BYTE ABreak = 0;
BYTE AReceive;

_CLI();

DDRD = 0x44;
PORTD = 0x00;

UCR = 0x1B;
UBRR = 51;

CLKPR = 0x80;
CLKPR = 0x00;

while(1)
{
if (CHECKBIT(USR,RXC) == 0x80)
{
AReceive = UDR;
if (AReceive == 'G')
{
ADelay = 0;
while (CHECKBIT(USR,RXC) != 0x80)
{
ADelay = ADelay + 1;
if (ADelay >= 10000)
{
ABreak = 1;
break;
}
}

if (ABreak == 0)
{
AReceive = UDR;
if (AReceive == 'R')
{
ADelay = 0;
while (CHECKBIT(USR,RXC) != 0x80)
{
ADelay = ADelay + 1;
if (ADelay >= 10000)
{
ABreak = 1;
break;
}
}

if (ABreak == 0)
{
AReceive = UDR;
if (AReceive == 'P')
{
ADelay = 0;
while (CHECKBIT(USR,RXC) != 0x80)
{
ADelay = ADelay + 1;
if (ADelay >= 10000)
{
ABreak = 1;
break;
}
}

if (ABreak == 0)
{
AReceive = UDR;
if (AReceive == 1)
{
while (CHECKBIT(USR,UDRE) == 0x00);
UDR = 'G'; //WDT v1.00'+ #1
while (CHECKBIT(USR,UDRE) == 0x00);
UDR = 'R';
while (CHECKBIT(USR,UDRE) == 0x00);
UDR = 'P';
while (CHECKBIT(USR,UDRE) == 0x00);
UDR = '0 ';
while (CHECKBIT(USR,UDRE) == 0x00);
UDR = '0';
while (CHECKBIT(USR,UDRE) == 0x00);
UDR = '1';
while (CHECKBIT(USR,UDRE) == 0x00);
UDR = 1;

}
}
}
}
}
}
}
ABreak = 0;
}
}
Проще некуда, решение в лоб, но почему то работает не всегда корректно. Когда пограммировал mega128 прием вешал на прерывание по переполнению таймера (команда из одного байта состояла), а передачу вешал на одну из функций в теле main, на любой скорости никаких проблем. Принимаю сообщения с помощью компа, программа коректно работает, с другими устройствами никаких проблем. Дело скорее всего в приведенной программе. Имена регистров UART умышленно заменены в h файле для совместимости с кодом для 90S2313. Заранее спасибо!

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru