Gast
#1048056
hallo leuts,
ich habe ein Problem,
#define F_CPU 3686400
#define M_CPU Atmega8
#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>
volatile uint16_t zaehler=0;
ISR (TIMER0_OVF_vect)
{
zaehler++;
}
int main (void) {
//Atmega8
TCCR0 |= (1<<CS00); //noprescaler 3686400/8bit= 14400
TIMSK |= (1<<TOIE0); //Timer0 Overflow Interrupt ON
sei(); //Interrupts ON
DDRD = 0xFF;
PORTD = 0x00;
while (1)
{
if (zaehler==2)
{
PORTD^=(1<<PD7);
zaehler=0;
}
}
cli();
return 0;
}
wenn mein Zähler 14400 erreicht hat wird PD7 getoggelt, das entspricht
einer Sekunde. Nun möchte ich ein Signal von 7200Hz an PD7 erhalten.
Also müsste mein zähler doch bis 2 zählen??? Ich bekomm aber am Oszi ein
Signal von der hälfte also 3600Hz??? Was übersehe ich?
Danke schon mal und schönes Weochenende...