Forum: Mikrocontroller und Digitale Elektronik Problem mit timer 1 (16bit)


von Tobias W. (wagnertobse)


Lesenswert?

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
von Peter (Gast)


Lesenswert?

Tobias Wagner schrieb:
> woran kann das liegen?

an den falschen Quarz oder falschen Fusebits

von Tobias W. (wagnertobse)


Lesenswert?

Das Quarz ist richtig (16MHz), womit ich mir schonmal ne Uhr gebasdelt 
habe (über den Timer0), die nur 1s falsch ging (nach einen Tag)...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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?

von Tobias W. (wagnertobse)


Lesenswert?

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
Noch kein Account? Hier anmelden.