rc5 IR Transmitter

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 2
Зарегистрирован: Сб дек 14, 2013 12:08:11

Сообщение 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); 
   } 
}
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Да, похоже на то.
Ставим плюсы: )
Реклама
Родился
Сообщения: 1
Зарегистрирован: Пн янв 13, 2014 03:34:12

Сообщение Leschinho »

Доброго времени суток!
Я тоже наткнулся на этот код в сети, однако осталось пара вопросов, надеюсь смогу получить на них ответы тут.

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

Заранее спасибо за помощь
Вложения
lesson17-1.png
(32.06 КБ) 416 скачиваний
Ответить

Вернуться в «AVR»