Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega32][RC5] - Nadajnik RC5 modyfikacja programu

kleszcz10 09 Sty 2013 22:51 1212 0
  • #1 09 Sty 2013 22:51
    kleszcz10
    Poziom 11  

    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

    Code:

    [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.

    Code:

    #
    # 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

    0 0