Внедряем ИК управление в усилитель.

В прошлой статье я рассмотрел принципы работы с протоколом RC5, пришло время применять его на практике, а именно – внедрить его в усилок.

Особых сложностей в процессе не возникло, поэтому я просто опишу свою последовательность действий кратко.

Для начала я перевесил кнопку энкодера, которая у меня в ранних версиях висела на прерываниях по RB0 на прерывания по пинам 4-7. При этом добавив в код условия срабатывания по определенному входу. Выглядит это примерно так:


if (RBIF) {
GIE = 0;
__delay_ms(100);       //программный антидребезг
if (!ebutton) {            //если была нажата именно наша кнопка

...

Затем в главном цикле надо добавить обработчик ИК команд, у меня он выглядит примерно так:

if (bytecount>13)
 {
 GIE = 0;
  if (oldtogglebit != togglebit)          //одно нажатие - одна команда
   {
     printf("\r\nPressed button is %d", IRbyte);
     switch(IRbyte)
       {
        case 10 : if (!muteIR)            //приглушение звука с пульта
                    {
                    itemp = 0;
                    volume_flag = 0;
                    mute_status = 0;
                    mute();
                    muteIR = 1;
                    } else
                       {
                        TRISB2 = 1;
                        TRISB1 = 1;
                        volume_flag = 1;
                        bass_flag = 0;
                        treble_flag = 0;
                        menu(0);
                        muteIR = 0;
                        }
                 break;
         case 16 : IRcom = 16; //right
                   break;
         case 17 : IRcom = 17; //left
                   break;
         case 13 : IRcom = 13; //Enter
                   break;
         case 32 : IRcom = 32; //Up
                   break;
         case 33 : IRcom = 33;
                   break;
         case 41 : IRcom = 41; //exit
                   break;
         case 43 : IRcom = 43; //volume+
                   break;
         case 44 : IRcom = 44; //volume-
                   break;
        }
 }
 IRbyte = 0;
 bytecount=0;
 INTEDG = 0;
 buffer = 0;
 oldtogglebit = togglebit;
 GIE = 1;
 }

Ну и дальше по коду подобавлял нужные вставки, примерно вот так: main и дело сделано, теперь у нашего девайса есть дистанционное управление.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.