Guten Tag, Ich habe ein ATMEGA 644, wo ich den Timer 1 in CTC laufen lassen will mit einen vorteiler von 1. Den OCR1A habe ich testweise auf 30000 gestellt. Laut der Formel im Datenblatt müsste ich am PIN OCR1A 266,65... HZ messen können, jedoch mess ich nur eine Frequenz von 16,59HZ, woran kann das liegen? Mein C-Code: #ifndef F_CPU #warning "F_CPU not defined for <uart-routines.h>" #define F_CPU 16000000UL #endif #include<inttypes.h> #include <avr/io.h> #include <math.h> #include <stdlib.h> int main(){ DDRD = 0b11111111; TCCR1A |= (1<<COM1A0); TCCR1B |= (1<<WGM12) | (1<<CS10); OCR1A = 30000; return(0); }
:
Verschoben durch Moderator
Das Quarz ist richtig (16MHz), womit ich mir schonmal ne Uhr gebasdelt habe (über den Timer0), die nur 1s falsch ging (nach einen Tag)...
Tobias Wagner schrieb: > Das Quarz ist richtig (16MHz) Da du 1/16 der gewünschten Frequenz erreichst, liegt die Vermutung nahe, dass du versehentlich die Fuses wieder auf den RC-Oszillator (8 MHz) und CKDIV8 (1:8 prescaler) gesetzt hast. Falls dein Controller in einer Fassung sitzt, dann hast du mittlerweile vielleicht ein neues Exemplar eingesetzt, dessen Fuses sich noch im Auslieferungszustand befinden?
Vielen Dank, Das war der Fall, hab die FUSES neu programmier und jetzt bekomm ich die passende Freuenz.
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.