Timer-Frequenz beim AT90S8515

N

Nicolas Nickisch

Guest
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
 
Nicolas Nickisch <n.nickisch@gmx.de> schrieb im Beitrag <bp2ang$1j59j0$1@ID-197925.news.uni-berlin.de>...
Läuft der Zähler etwa mit einer anderen Frequenz als der ľC-Taktfrequenz ?

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: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
 
* Nicolas Nickisch schrieb:
Der ľC läuft mit 8 MHz, eine externe Taktfrequenz ist nicht angelegt.

Ich hatte ermittelt, daß mit CK/1024 und entsprechendem Setzen des
Zählers ca. 5-6 IRQs ausgelöst werden.
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.
 
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" <me@privacy.net> schrieb im Newsbeitrag
news:01c3aa9a$f005bfe0$b5e3b8d9@amdk6-300...
Nicolas Nickisch <n.nickisch@gmx.de> schrieb im Beitrag
bp2ang$1j59j0$1@ID-197925.news.uni-berlin.de>...

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

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: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
 
Hallo Nicolas!

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ä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"
 
Das ganze soll durch Overflow ausgelöst werden.

Code folgt ....
"Jan Schomerus" <jhschome@uwaterloo.ca> schrieb im Newsbeitrag
news:bp2ejh$1j0rp5$1@ID-108452.news.uni-berlin.de...
* Nicolas Nickisch schrieb:
Der ľC läuft mit 8 MHz, eine externe Taktfrequenz ist nicht angelegt.

Ich hatte ermittelt, daß mit CK/1024 und entsprechendem Setzen des
Zählers ca. 5-6 IRQs ausgelöst werden.

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.
 
Hallo Nicolas

Nicolas Nickisch wrote:
Ich setze den Zähler aber schon auf 250 (im HiByte). Das sollte zu
Wahrscheinlich liegt da der Fehler. Du musst High- _und_ Low-Byte setzen und
zwar in dieser Reihenfolge.

viele grüße
ralph
 
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" <rkhbng@gmx.net> schrieb im Newsbeitrag
news:bp2ihu$1jrneo$1@ID-103786.news.uni-berlin.de...
Hallo Nicolas

Nicolas Nickisch wrote:
Ich setze den Zähler aber schon auf 250 (im HiByte). Das sollte zu

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

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


"Thorsten Ostermann" <News@Ostermann-net.de> schrieb im Newsbeitrag
news:bp2h3u$4vl$1@nets3.rz.RWTH-Aachen.DE...
Hallo Nicolas!

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ä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"
 
Nicolas Nickisch schrieb:

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.
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
 

Welcome to EDABoard.com

Sponsor

Back
Top