Сообщение от Ara41
|
"=" на "=="
|
это в каком месте?
//Обработка внешнего прерывания от ПДУ
ISR(INT1_vect)
{
TCNT0=0xF4; // запускаем таймер на 96 мкс
TCCR0B=0x03; // частота таймера 125 кГц
if ((tick ›= 92) && (tick ‹ 96)) //если прошло от 8,832 мс до 9,216 мс
{
start_cond = 1; //фиксируем стартовое условие
addr_1 = addr_0 = cmd_1 = cmd_0 = 0; //обнуляем ранее полученную команду и адрес
}
if ((tick ›= 21) && (tick ‹ 25) && (start_cond)) //если прошло от 2,016 мс до 2,4 мс
{
b_cnt++; //приняли "1" и увеличили счетчик битов
if (b_cnt ‹ 9) addr_1 = (addr_1 ‹‹ 1) + 1; //первый байт - прямой адрес
if ((b_cnt ›= 9) && (b_cnt ‹ 17)) addr_0 = (addr_0 ‹‹ 1) + 1; //второй байт - инверсный адрес
if ((b_cnt ›= 17) && (b_cnt ‹ 25)) cmd_1 = (cmd_1 ‹‹ 1) + 1; //третий байт - прямая команда
if (b_cnt ›= 25) cmd_0 = (cmd_0 ‹‹ 1) + 1; //четвертый байт - инверсная команда
}
if ((tick ›= 10) && (tick ‹ 21) && (start_cond)) //если прошло от 0,96 мс до 2,112 мс
{
b_cnt++; //приняли "0" и увеличили счетчик битов
if (b_cnt ‹ 9) addr_1 = (addr_1 ‹‹ 1); //далее - аналогично по байтам
if ((b_cnt ›= 9) && (b_cnt ‹ 17)) addr_0 = (addr_0 ‹‹ 1);
if ((b_cnt ›= 17) && (b_cnt ‹ 25)) cmd_1 = (cmd_1 ‹‹ 1);
if (b_cnt ›= 25) cmd_0 = (cmd_0 ‹‹ 1);
}
tick = 0; //обнулили тики
if (b_cnt == 32) //если приняли уже 4 байта
{
//if ((cmd_1 + cmd_0) == 0xFF) //проверили правильность приема команды
//{
cmd = cmd_1;
Ressieve_Complete = 1; //Ставим флаг окончания приёма
//}
b_cnt = 0; //обнулили счетчик битов
start_cond = 0; //сбросили стартовое условие
TCCR0B=0x00; //остановили таймер
TCNT0=0x00;
}
}