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.
Code:
#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();
}
}
mfg pebisoft
Lesezeichen