📺 ІЧ сигнал
Продовжуючи тему з таймерами, варто розглянути ще один їх режим роботи, який був пропущений в попередній статті про таймери — режим захоплення вхідних даних (Input Capture). Розглядати будемо на прикладі безпровідного протоколу передачі даних японської компанії NEC. Зараз ця компанія належить Renesas, яка в свою чергу належить японській Hitachi (якій доречі також належить GlobalLogic). Протокол NEC — один із найпопулярніших протоколів передачі даних за допомогою інфра-червоного (ІЧ) випромінювання, особливо в японській побутовій техніці. Він використовується для керування недорогими побутовими приладами навіть сьогодні.
Передачу даних ІЧ випромінюванням можна вважати прародичем сучасних Bluetooth та Wi-Fi, хоча останні двоє надто сильно відрізняються від першого. Цей спосіб передачі даних використовувався повсюдно: мобільні телефони, пейджери, звичайні пульти і навіть принтери, відеокамери, Nintendo Game Boy.
🔦 NEC
Для початку розглянемо фізичний рівень передачі ІЧ сигналу:
- Передавач (пульт) випромінює імпульси невидимого інфрачервоного світла (940nm) з частотою 38 kHz
- Приймач вловлює ці швидкі імпульси світла, але натомість видає безперервний низький рівень напруги на своєму виході
Dataвпродовж всього часу поки імпульси надходять. Коли імпульси припиняються, то на виході м аємо високий рівень. Це має наступний вигляд:
⚡ Електричний сигнал
Отже ІЧ приймач отримав світлові імпульси, а на своєму виводі видав електричний сигнал. Розглянемо формат цього електричного сигналу:
- Повідомлення завжди починається з довгого імпульсу (низький рівень) в 9 ms (мілісекунд) та павзою (високий рівень) 4.5 ms після нього
- Біти даних кодуються не імпульсами, а тривалістю павзи після цих імпульсів
- Тривалість імпульсу — 562.5 μs (мікросекунди). Якщо після цього імпульс був відсутній стільки ж — значить маємо 0, якщо відсутні й 3 x 562.5 μs часу — маємо 1
- Точна тривалість імпульсу 562.5 μs не завжди може бути забезпечена, тому допускаються відхилення в кілька відсотків. Це потрібно буде врахувати в коді
- Структура даних наступна: 8 біт адреси і знову 8 біт цієї ж адреси, але побітово інвертованої; 8 біт команди і знову 8 біт інвертованої команди
- Інвертовані адреса та команда виконують роль свого роду хеш-суми для перевірки чи оригінальні 8 біт були отримані правильно
- Закінчення повідомлення після 32-ох біт даних фіксується тим самим імпульсом тривалістю 562.5 μs
- якщо користувач після завершення передачі пакету даних досі тримає кнопку пульта натиснутою, то передається спеціальний короткий пакет даних кожні 108 ms: 9 ms імпульс + 2.25 ms павза + 562.5 μs імпульс
Все, що було описане вище можна роздивитися на діаграмі з логічного аналізатора:



