Имеется два МК между которыми необходимо произвести пакетную передачу команд. Первый мк отсылает два пакета с периодом в пол секунды после чего дает на порта лог1 и уходит в бесконечный цикл.
Переменные
Код
char COMMAND[30];
int i = 0;
Код
putsf("run/");
delay_ms(500);
putsf("runb/");
PORTA=0xFF;
while(1){};
Второй МК принимает эти пакеты в обработчике прерывания получения символа. Обработчик собирает все сибволы в массив пока не будет получен символ окончания пакета - /.
Код
if (data != '/')
{
COMMAND[i] = data;
i++;
}
else
{
i = 0;
activeCommand(COMMAND);
}
}
Функция activeCommand проверяет совпадения и если совпадения верны то отправляет в потра разные комбинации(зажигает нужные светодиоды)
Код
void activeCommand(char c[])
{
if (c[0]=='r'&c[1]=='u'&c[2]=='n')
{
PORTA=0x03;
}
if (c[0]=='r'&c[1]=='u'&c[2]=='n'&c[3]=='b')
{
PORTA=0x07;
}
}
Проблема состоит в том что первый пакет передается и проверяется правильно, а вот на второй пакет реакцию нулевая.
И еще пугает вот что - на RXD принимающего напряжение равное напряжению питания...