Страница 1 из 1

rc5 IR Transmitter

Добавлено: Пн дек 16, 2013 23:36:50
avrnoob
Здравствуйте!
Подскажите пожалуйста, это код rc5 IR Transmitter-а? код для ATMega8

Код: Выделить всё

#include <avr/io.h> 
#include <avr/delay.h> 

void send_one(); 
void send_zero(); 

void send_one() { 
   _delay_us(925); 
   TCCR1A |= (1<<COM1A0); 
   TCCR1B |= (1<<CS10); 
   _delay_us(925); 
   TCCR1B &= ~(1<<CS10); 
   TCCR1A &= ~(1<<COM1A0); 
   PORTB &= ~(1<<PB1); 
   TCNT1 = 0; 
} 

void send_zero() { 
   TCNT1 = 0; 
   TCCR1A |= (1<<COM1A0); 
   TCCR1B |= (1<<CS10); 
   _delay_us(925); 
   TCCR1B &= ~(1<<CS10); 
   TCCR1A &= ~(1<<COM1A0); 
   PORTB &= ~(1<<PB1); 
   TCNT1 = 0; 
   _delay_us(925); 
} 

int main(void) { 
   DDRB |= (1<<PB1); 
   OCR1A = 105; 
   TCCR1B |= (1<<WGM12); 
   TCNT1 = 0; 

   unsigned int rc5code; 



   while(1) { 
      rc5code = 0b11000001100000; 
      for (int i = 13; i >= 0; i--) { 
         if (rc5code & (1<<i)) { 
            send_one(); 
         } else { 
            send_zero(); 
         } 
      } 
      _delay_ms(2000); 


      rc5code = 0b11000001000001; 
      for (int i = 13; i >= 0; i--) { 
         if (rc5code & (1<<i)) { 
            send_one(); 
         } else { 
            send_zero(); 
         } 
      } 
      _delay_ms(2000); 

      rc5code = 0b11000011000011; 
      for (int i = 13; i >= 0; i--) { 
         if (rc5code & (1<<i)) { 
            send_one(); 
         } else { 
            send_zero(); 
         } 
      } 
      _delay_ms(2000); 

      rc5code = 0b11000111000111; 
      for (int i = 13; i >= 0; i--) { 
         if (rc5code & (1<<i)) { 
            send_one(); 
         } else { 
            send_zero(); 
         } 
      } 
      _delay_ms(2000); 

      rc5code = 0b11001111001111; 
      for (int i = 13; i >= 0; i--) { 
         if (rc5code & (1<<i)) { 
            send_one(); 
         } else { 
            send_zero(); 
         } 
      } 
      _delay_ms(2000); 

      rc5code = 0b11011111011111; 
      for (int i = 13; i >= 0; i--) { 
         if (rc5code & (1<<i)) { 
            send_one(); 
         } else { 
            send_zero(); 
         } 
      } 
      _delay_ms(2000); 
   } 
}

Re: rc5 IR Transmitter

Добавлено: Чт дек 19, 2013 22:37:09
ibiza11
Да, похоже на то.

Re: rc5 IR Transmitter

Добавлено: Пн янв 13, 2014 03:42:12
Leschinho
Доброго времени суток!
Я тоже наткнулся на этот код в сети, однако осталось пара вопросов, надеюсь смогу получить на них ответы тут.

1) как я понял код передаёт 6 разных rc5 команд. Если мне надо переслать только одну, то остальные 5 блоков можно просто стирать?
2) микропроцессор подключается выходом PB1?
3) Как лучше привязать схему (из вложения) к данному коду? т.е. к каким выходам процессора правильнее/лучше/проще подключить это?

Заранее спасибо за помощь