Timer-Frequenz beim AT90S8515

Hi NG, ich verwende in einer Schaltung den 16 Bit Timer des AT90S8515.

Der µC läuft mit 8 MHz, eine externe Taktfrequenz ist nicht angelegt.

Nun stimmen meine Berechnungen bezüglich des Teilers und der erreichbaren Taktzeiten hinten und vorne nicht - die Takte sind viel zu lange.

Ich hatte ermittelt, daß mit CK/1024 und entsprechendem Setzen des Zählers ca. 5-6 IRQs ausgelöst werden. Weit gefehlt, ich habe allenfalls 1/4 Hz, daß ändert sich auch durch Ändern des Zähler-Startwert nicht gravierend.

Läuft der Zähler etwa mit einer anderen Frequenz als der µC-Taktfrequenz ?

Nicolas Nickisch

Reply to
Nicolas Nickisch
Loading thread data ...

Nicolas Nickisch schrieb im Beitrag ...

Grundsatz Nr. 1: Man sollte immer in das Datenblatt des Chips gucken, den man verwendet. Stichwort Prescaler.

-- Manfred Winterhoff, reply-to invalid, use mawin at despammed.com homepage:

formatting link
de.sci.electronics FAQ:
formatting link
Read 'Art of Electronics' Horowitz/Hill before you ask. Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.

Reply to
MaWin
  • Nicolas Nickisch schrieb:

Wann und wodurch sollen die denn ausgelöst werden? Overflow oder Compare Match? Wenn letzteres, hast du daran gedacht, das "Clear on Compare Match"-Bit zu setzen? Vielleicht postest du mal ein paar Codeschnipsel.

Reply to
Jan Schomerus

Vielen Dank, den hatte ich auf CK/1024 gesetzt. Entsprechend sollte es 1024/8000000 = 0.000128 s dauern bis der Timer um eins hochgezählt wird. Ein voller Timerdurchlauf dauert an 8,38848 s.

Ich setze den Zähler aber schon auf 250 (im HiByte). Das sollte zu einer Zeit zwischen 2 iRQ von 0,16384s führen. Tut's aber nicht - dauert fast 4 Sekunden. !!!

"MaWin" schrieb im Newsbeitrag news:01c3aa9a$f005bfe0$b5e3b8d9@amdk6-300...

...

?
Reply to
Nicolas Nickisch

Hallo Nicolas!

Lädst du den Timer denn auch richtig nach, oder läuft er danach komplett durch? Dann dürftest du ca. 0,11 Hz erreichen.

Gruß Thorsten

--
Kunst kommt aber von 'können',
nicht von 'kennst du schon den neuesten trick?'
   Gunther in oecher.computer zum Thema "Gutes Webdesign"
Reply to
Thorsten Ostermann

Das ganze soll durch Overflow ausgelöst werden.

Code folgt .... "Jan Schomerus" schrieb im Newsbeitrag news:bp2ejh$1j0rp5$ snipped-for-privacy@ID-108452.news.uni-berlin.de...

Reply to
Nicolas Nickisch

Wahrscheinlich liegt da der Fehler. Du musst High- _und_ Low-Byte setzen und zwar in dieser Reihenfolge.

viele grüße ralph

Reply to
Ralph 'rkhb' Bauer

Hab ich vergessen zu beschreiben. in der Tat setzte ich zuerst das Hi- und dann das Low-Byte (wegen des temp. Registers)

"Ralph 'rkhb' Bauer" schrieb im Newsbeitrag news:bp2ihu$1jrneo$ snipped-for-privacy@ID-103786.news.uni-berlin.de...

und

Reply to
Nicolas Nickisch

genau, ein kompletter Zyklus sollte ca. 8,xxx sek dauern (s.o.) ich lade den Zähler mit 250 im Hi-Byte

"Thorsten Ostermann" schrieb im Newsbeitrag news:bp2h3u$4vl$ snipped-for-privacy@nets3.rz.RWTH-Aachen.DE...

erreichbaren

Zählers

Ändern
Reply to
Nicolas Nickisch

Nicolas Nickisch schrieb:

Falls du den Overflow interrupt verwendest, wird alle 8,39 Sekunden ein interrupt ausgeloest. Ausser du initialisiert den Zaehler in der ISR neu. Was jedoch nicht sehr sinnvoll (jitter) ist.

Fuer periodischen Interrupts empfiehlt sich der Output Compare Match interrupt (zusammen mit dem CTC-Bit oder aendern der Match register in der interrupt service routine)

Wenn du einige Zeilen Code postest, kann man dir besser helfen.

servus thomas

Reply to
Thomas Mozgan

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.