hallo muraad, bei Bascom ist es timer 1, da gibt es den befehl "rc5send togbit, adress, command".
dies ist der anschluss " +5V <---[A Led K]---[220 Ohm]---> PD5 "
bei bascom. pd5 ist beim AVR16 oc1a.
ich habe mal ein beispiel mit us_889 und ms_89. oc1a ist bei mir am AVR16 pd5. der pd5 (oca1) wird je nach bit auf high oder low geschaltet. lieg ich hier verkehrt mit meiner ganzen theorie.
mfg pebisoftCode:#include <stdio.h> #include <inttypes.h> #include <avr/io.h> #include <avr/delay.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <string.h> #include <stdint.h> uint16_t zaehler; uint32_t zaehler1; void us_889(void) { for (zaehler=0; zaehler<1185; zaehler++) asm volatile("nop"); } void ms_89(void) { for (zaehler1=0; zaehler1<117105; zaehler1++) asm volatile("nop"); } void ir_init_send(void) { //36kHz Träger TCCR1A = (1<<COM1A1) | (1<<COM1A0) | (1<<WGM11); TCCR1B = (1<<WGM12) | (1<<WGM13) | (1<<CS10); OCR1A = 111; ICR1 = 222; //Timer-Interrupt alle 2,048ms zur Signalerzeugung --> 1/(8MHz/256/64) TCCR0 = (1<<CS01) | (1<<CS00); //Prescaler von 64 TIMSK |= (1<<TOIE0); //Timer0 Overflow Interrupt aktivieren } int main(void) { ir_init_send(); DDRD=255; PORTD=32; // bit pd5 while (1) { PORTD=32; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=0; us_889(); PORTD=32; us_889(); PORTD=32; ms_89(); } }







Zitieren

Lesezeichen