Вот пробую реализовать SIR сам...
передатчик получился... а вот с приемом...
Проблема в следующем... В IrDA(на физическом уровне)
импулься могут быть довольно короткими (1.62мкс)
Как можно их все отловить...
Я например вижу только два способа (с 1ым не получается, со вторым щаз пробую)
1ый:
1) Ловим прерываение на ноге контроллера по нарастающему фрогту.
2) Устанавливаем таймер, так чтоб его прерываение попало на импульс следующего бита.
3) смотрим что на ноге.
И так пока не примем весь байт.
Проблема в том, что не получается точно попасть на середину бита... (использую 8разрядный таймер, пределитель 8, частота камня 12Mhz)
Есть у кого идеи как все-таки обработать это дело?
Недавно придумал второй способ, но еще не проверял.
1) Ловим прерывание на ноге
2) Устанавливаем таймер0 на счет длины всего байта и разрешаем прерывание
3) сбрасываем значение таймера1
4) ловим прерывание
5) запоминаем значение таймера
...
когда приняли все восемь бит, расшифровываем байт, зная интервалы по идее можно понять где должны быть 0 а где 1...
Буду благодарен за любую помощь и идеи
|