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...
ups wie formatiert man nochmal den code hier fürs forum ?
Der Mega 8 hat eine Fuse Bit DIV2. Wenn das gesetzt ist, läuft er mit halber Taktfrequenz.
wie komme ich an den fusebit? Mein avrprog zeigt mir den nicht an :-)
Aber der Fehler ist woanders. Wenn Du mit 1440 Hz toggelst, kommst Du auf 7200 Hz.n Du toggelst aber mit der halben Frequenz, erhältst also 14400/4=3600 Hz.
verstehe ich nicht ganz, aber klingt erstmal richtig :-) Danke dir für den hinweis, aber warum ist das so? Ich denke ich bekomme pro sekunde 14400 Interrupts, die kann ich doch auch nutzen oder nicht, dass heisst 1 Interrupt (sprich ich zähl bis 1) entspricht 1/14400s??? was übersehe ich? Danke nochmal und Gruss Flo
Eine Schwingung hat braucht 2 mal Toggeln. Einmal high, einmal low.
ich glaub ich geh lieber pennen, danke nochmal, jetzt ist der groschen ins bett gefallen :-) aber eine Frage hätte ich noch, mit dem verwendeten Quarz 3686400 wäre also bestenfalls ohne prescaler ein Interrupttakt von 14400Hz möglich oder komme ich irgendwie höher ? Nur mit einem größeren Quarz oder?
Das bedeutet, eine Periode der erzeugten Frequenz braucht 2 Interrupts. Dadurch wird die Interrupt-Frequenz halbiert.
könnte ich vielleicht irgendwas am startwert des timers rütteln? Nicht von 0-255 sondern von 127-255?
Ich würde lieber im CTC-Modus arbeiten. Da bist Du viel flexibler.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.