Микроконтроллеры AVR имеют в своем составе модули, реализующие стандартные интерфейсы. Эти модули используются для обмена данными с различными периферийными устройствами, например, цифровыми датчиками, микросхемами памяти, ЦАП, АЦП, другими микроконтроллерами и так далее. В этой статье, на примере микроконтроллера atmega16, мы разберемся, как работать с модулем последовательного периферийного интерфейса или модулем SPI (serial peripheral interface).


   Однажды мне понадобилось управлять устройством с помощью пульта дистанционного управления. Дистанция требовалась небольшая (до 10 метров) и я решил использовать для этих целей ИК приемник и инфракрасный пульт от бытовой аппаратуры. 
   Для инфракрасных пультов дистанционного управления (ИК ПДУ) существует несколько протоколов передачи данных. Они отличаются способами кодирования битов,  длительностями сигналов, несущей частотой и количеством передаваемых данных. Один из самых распространенных протоколов, судя по интернету,  – это RC5.  Изначально я думал, что придется разбираться с ним, но ни одного пульта с таким протоколом у меня под рукой не оказалось. Зато нашлись три пульта от DVD плееров, использующих протокол фирмы NEC.  

    
   Все (и в том числе я) называют DS18B20 цифровым датчиком температуры. Однако это не просто датчик, это программируемый цифровой термометр. Он измеряет температуру в диапазоне от –55 до +125 градусов Цельсия, имеет программируемое температурное разрешение от 9 до 12 бит и позволяет задавать верхний и нижний температурные пороги, в случае превышения которых,  устанавливается флаг аварии. 
   Каждый термометр DS18B20 имеет уникальный 64 битный серийный номер, который используется для его адресации на 1-Wire шине. Это позволяет объединять на одной шине несколько независимо работающих термометров и осуществлять между ними и микроконтроллером обмен данными по 1-Wire протоколу. 
   Также особенностью данного термометра является то, что его можно запитывать не только от источника питания, но и от сигнального провода. Это так называемый режим паразитного питания. В этом режиме для подключения DS18B20 требуется всего два провода — сигнальный и возвратный (земляной, GND).