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);
}
Gast
#1885388
Tobias Wagner schrieb: > woran kann das liegen? an den falschen Quarz oder falschen Fusebits
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.