AVR AT90S8515 Timer/Counter Zeitbasis

Gast #28296
Lesenswert?

Hi,

ich laboriere gerade mit o.g. yC. Dennoch verstehe ich die Basis für den 
Timer1 nicht.

Ich verwende "no prescaling", interne Taktung und meine Schaltung 
erfüllt auch voll ihre Funktion. Allerdings hatte ich Frequenz CLKio 
gleich der Taktfrequenz des MCU erwartet und so lange kein Ergebnis 
erreicht.

Um meine Wartezeit zu realisieren hatte ich auf Grundlage der 
MCU-Taktfrequenz den Counter auf FF00 stellen müssen. Funktioniert hat 
es aber erst, als ich FFE0 eingestellt hatte, also erheblich weniger.

Wie ist die Basis für CLKio?????????????????

Danke für jeden Tip.


Peter
Gast #28298
Lesenswert?

Hallo Jörg,

anbei die Initialisierungsroutine. Ziel ist es, 4800 mal pro Sekunde den 
Interrupt zu bekommen.

Ich hätte erwartet:
1.23MHz / 4800 = 256,25 = 0x100 -> setze Timer1 = FF00
Es lief aber erst mit einem Timer1 = FFE0 d.h. -> 0x20!!
Sobald ich den Takt (STK500) verändere, dann ändert sich
auch der nötige Wert, eben so, wenn ich prescaling verwende.

Gruss Peter


Initialisierung:

  ldi  tmp1,2
  out  TCCR1B,tmp1

;es lief E0     an 1.23MHz
;20/1.23*1.84=2F->D1  an 1.84MHz
;20/1.23*3.69=60->A0  an 3.69MHz

  ldi  PulsHWT,0xFF
  ldi  PulsNWT,0xE0
  out  tcnt1h,PulsHWT
  out  tcnt1l,PulsNWT

  ldi   tmp1,(1<<TOV1)
  out   TIFR,tmp1

  ldi  tmp1,(1<<TOIE1)
  out  TIMSK,tmp1

(Im Interrrupt frage ich lediglich einen Port ab, also nix dolles.)

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