logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega32][RC5] - Nadajnik RC5 modyfikacja programu

kleszcz10 09 Sty 2013 22:51 1608 0
REKLAMA
  • #1 11767217
    kleszcz10
    Poziom 12  
    Posty: 56
    Ocena: 125
    Witam

    Chciałem zrobić nadajnik RC5 który włączał by moją wieże. Niestety pilot nie nadaje w standardzie RC5. Proszę o pomoc w modyfikacji kodu aby działał w standardzie mojego pilota.

    Kod pilota RC5 pobrany ze strony abxyz.bplaced.net

    
    [syntax=c]
    /***************************************************************
       Plik "main.c"
    
       KURS AVR-GCC (abxyz.bplaced.net)
     
       nadajnik  RC5
     
       (schemat i opis działania w artykule)
       testowanie na atmega8 (8MHz)
    *****************************************************************/
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>
    
    
    typedef unsigned char  u8;
    typedef  unsigned int  uint;
    
    //---------------------------------------------------------------
    // Funkcja wysyła komendę  RC5                                             
    //---------------------------------------------------------------
     void send_cmd(uint cmd)
     {
        uint m;
    
        // dołącza 2 bity startowe 
        cmd |= (3<<12); 
    
        for(m=(1<<13); m>0; m>>=1)
        {
           if(cmd & m)// jeśli bit o wartości 1
           {   
               // Dioda nadawcza  nie świeci 
               TCCR2= (1<<FOC2)|(1<<COM21)|(1<<CS20); 
               _delay_ms(0.89); // czas trwania połowy bitu 
               // świeci 
               TCCR2= (1<<FOC2)|(1<<WGM21)|(1<<COM20)|(1<<CS20); 
               _delay_ms(0.89);
           }
           else // jeśli bit o wartości 0 
           {   
               // Dioda nadawcza świeci  
               TCCR2= (1<<FOC2)|(1<<WGM21)|(1<<COM20)|(1<<CS20); 
               _delay_ms(0.89);
               // Nie świeci 
               TCCR2= (1<<FOC2)|(1<<COM21)|(1<<CS20); 
               _delay_ms(0.89);
           } 
        }
        TCCR2= (1<<FOC2)|(1<<COM21)|(1<<CS20); // wyłączamy LED i timer2
        TCCR2= 0;  
       
     }
    
    //---------------------------------------------------------------
    // GLÓWNA FUNKCJA PROGRAMU                                                   
    //---------------------------------------------------------------
    int main(void)
    {
       uint  i,cmd;
       u8 toggle = 0 ;  
    
       // PB3(OC2) wyjście - dioda nadawcza podczerwieni 
       DDRB = (1<<PB3);
    
       // Timer2, CTC mode, no prescaling ,Toggle OC2 on compare match 
       // TCCR2= (1<<WGM21)|(1<<COM20)|(1<<CS20);   
       // OC2 - 36 KHz
       OCR2 = 110; 
     
       while(1)
         // Wysyła po kolei wszystkie komendy 
         for(i=0; i<64; i++)
         {
            // do kolejnej komendy dostawia toggle bit
            cmd =  i|((toggle & 0x01)<<11);
            toggle++;
      
            // Wysyła  komendę 
            send_cmd(cmd); 
            _delay_ms(89); // 50 bitów "ciszy"
    
            // Komendy wysyłamy sobie co sekundę 
            _delay_ms(1000);  
         }
    
       return 0;
    }
    [/syntax]
    


    Kody pilota.

    
    # 
    # this config file was automatically generated 
    # using lirc-0.6.5(any) on Wed Aug 28 09:30:43 2002 
    # 
    # contributed by Christian von Petery 17knochen(małpa)freenet.de 
    # 
    # brand:                       Kenwood 
    # model no. of remote control: RC-R0602 
    # devices being controlled by this remote: tuner, cd, tape, surround 
    # 
    
    begin remote 
    
      name  Kenwood 
      bits           24 
      flags SPACE_ENC|CONST_LENGTH 
      eps            30 
      aeps          100 
    
      header       9070  4454 
      one           608  1642 
      zero          608   516 
      ptrail        607 
      repeat       9070  2204 
      pre_data_bits   8 
      pre_data       0x1D 
      gap          108049 
      toggle_bit      0 
    
    
          begin codes 
              power                    0x0000000000E2B946 
              pty                      0x00000000008039C6 
              af                       0x000000000080B946 
              display                  0x0000000000E21AE5 
              band                     0x0000000000E2F10E 
              direct                   0x0000000000E27986 
              p_call_down              0x0000000000E231CE 
              p_call_up                0x0000000000E29966 
              1                        0x0000000000E2817E 
              2                        0x0000000000E241BE 
              3                        0x0000000000E2C13E 
              4                        0x0000000000E221DE 
              5                        0x0000000000E2A15E 
              6                        0x0000000000E2619E 
              7                        0x0000000000E2E11E 
              8                        0x0000000000E211EE 
              9                        0x0000000000E2916E 
              0                        0x0000000000E201FE 
              +10                      0x0000000000E2B04F 
              disc                     0x0000000000E210EF 
              disc_prev                0x0000000000E2738C 
              disc_next                0x0000000000E2F30C 
              disc_stop                0x0000000000E2936C 
              disc_play                0x0000000000E2D32C 
              tape_a_left              0x0000000000E20BF4 
              tape_a_right             0x0000000000E28B74 
              tape_b_left              0x0000000000E21BE4 
              tape_b_right             0x0000000000E29B64 
              tape_a_rew               0x0000000000E24BB4 
              tape_a_ffw               0x0000000000E2CB34 
              tape_b_rew               0x0000000000E25BA4 
              tape_b_ffw               0x0000000000E2DB24 
              tape2                    0x0000000000E2A956 
              tape_a_stop              0x0000000000E2AB54 
              tape_b_record            0x0000000000E27B84 
              tape_b_stop              0x0000000000E2BB44 
              input                    0x00000000008033CC 
              test_tone                0x0000000000E26A95 
              surround                 0x0000000000E2EB14 
              mute                     0x0000000000E239C6 
              multi_lvl_up             0x00000000008049B6 
              rear                     0x0000000000E2E31C 
              center                   0x0000000000E2D02F 
              vol_up                   0x0000000000E2D926 
              multi_lvl_down           0x0000000000808976 
              delay                    0x0000000000E2B24D 
              vol_down                 0x0000000000E259A6 
          end codes 
    
    end remote
    
  • REKLAMA
REKLAMA