Timing Problem ATmega8

Gast #400753
Lesenswert?

Hallo zusammen !

Ich habe ein Timingproblem, bzw. bin zu blöd, folgenden Sachverhalt zu
begreifen:

Ich hatte auf meinem Testboard einen AT89C8515 mit 4MHz externem Takt
folgenden Code laufen:

  ...
  TCCR1A = 0;
  TCCR1B = (1<<CS12) | (0<<CS11) | (1<<CS10); //prescaler 1024
  OCR1A = 3125;
  TCNT1 = 0;
  TIMSK = (1 << OCIE1A);
  sei();
  do {} while (1);


in der Output_Compare ISR wurde eine LED an und aus geschaltet.

Das ergab - so wie ich erwartet hatte - einen Blinktakt von 0,8
Sekunden.
Soweit so gut.

Ich habe diesen Code auf einen ATmega8 portiert, der mit 4.096 MHz
externen Quarz lief.
Die Fuse-Bits sind auf "fast rising Power, Crystal 3-8MHz" gestellt
und die Registernamen sowie prescaler sind angepass worden.

Hier beträgt der Blinktakt 16 Sekunden.

Ich begreife grade nicht, was ich falsch mache und wieso es
ausgerechnet 20mal langsamer läuft...

Hat jemand eine Idee ?

Gruss, Gerrit
Gast #400754
Lesenswert?

Tag,

das Problem könnte an den Fusebits liegen. Da gibt es das CKDIV8
Fusebit (divide clock by 8 internally), das den Takt um den Faktor 8
teilt (defaultmäßig aktiv). Das würde die Teilung jedoch nur um Faktor
8 erklären, jedoch nicht den Faktor 20.

Gruß, Slowflyer
Gast #400759
Lesenswert?

Hi und danke für die Antworten, ich werds morgen  nochmal mit gesetztem
CTC ausprobieren.

Hoffen wir mal, dass es daran liegt. Wenn ich so überlege, 65535 sind
glaubich 20mal mehr als 3125....

Gruss, Gerrit
Gast #446061
Lesenswert?

Hi !

Ich hatte diesen Thread total vergessen, will jetzt aber endlich mal das 
Ergebnis posten und mich für den Hinweis mit WGM12(CTC) bedanken.

Genau daran lag es. Funktioniert jetzt alles so wie es soll.

Gruss, Gerrit

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren