Посмотрите ещё здесь.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Бав 27 октября 2003 г. 15:39
В ответ на: Уважаемые, подскажите грамотный алгоритм декодирования манчестера. отправлено Зуб 27 октября 2003 г. 08:31

Сразу скажу - только написал,ещё не проверял.Для меги8.


void ComparatorIsr()
{
ACSR &= ~(1 << ACIE);
TCCR1B = 0;
TCNT1H = 0;
TCNT1L = 0;
OCR1AH = high_byte(Delay1Timer1A);
OCR1AL = low_byte(Delay1Timer1A);
TCCR1B = 0x1;
TIFR |= 0x18;
}

void IsrCOMPA()
{
static uchar StateReceiv;
static uchar nbit,nbyte,ReceivByte;
BitIn = ACSR & (1 << ACO);
ReceivByte = ((ReceivByte << 1) | BitIn);
switch (StateReceiv)
{
case 0://маркер ещё не обнаружен
if (ReceivByte == 0xc1)
{//Стартовый маркер обнаружен
StateReceiv++;
crc16h = 0;
crc16l = 0;
nbit = 0;
nbyte = 0;
}
break;
case 1://маркер обнаружен
if (++nbit == 8)
{
nbit = 0;
BuferRF[nbyte++] = ReceivByte;
if (nbyte == 5)
{
nbyte = 0;
StateReceiv = 0;;
DecoderCommand();
}
}
break;
}
ACSR |= (1 << ACIE);
ACSR |= (1 << ACI);
TCCR1B = 0;
}

void DecoderCommand()
{
CalcCrc();
if ((crc16h | crc16l) == 0)
{
if ((uint)BuferRF[0] | ((uint)BuferRF[1] << 8) == Address)
{
SetPin();
}
}
}


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

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru