Forum: Mikrocontroller und Digitale Elektronik Schnellster Timer eines Atmega644P


von Rubelus (Gast)


Lesenswert?

Hiho,

ich bin gerade am Verzweifeln, mit Timern mal wieder, und finde den 
Ansatz wirklich nicht.

Die Timer beim Atmega64 sind ja nun mittlerweile so verschachtelt das 
man im Datenblatt den Wald vor lauter Bäumen nicht findet :/

Ich möchte eigentlich die schnellste Möglichkeit haben einen Timer in 
mein Programm zu implementieren. Ich dachte eigentlich an einen 8 Bit 
TimerOverflow ohne Prescaler. Jedoch bekomme ich da ja auch bloß alle 
1024 Zyklen einen Interrupt.

Wo fange ich da am dümmsten an?!

von Avr N. (balze)


Lesenswert?

Rubelus schrieb:
> Hiho,
>
> ich bin gerade am Verzweifeln, mit Timern mal wieder, und finde den
> Ansatz wirklich nicht.
>
> Die Timer beim Atmega64 sind ja nun mittlerweile so verschachtelt das
> man im Datenblatt den Wald vor lauter Bäumen nicht findet :/
>
> Ich möchte eigentlich die schnellste Möglichkeit haben einen Timer in
> mein Programm zu implementieren. Ich dachte eigentlich an einen 8 Bit
> TimerOverflow ohne Prescaler. Jedoch bekomme ich da ja auch bloß alle
> 1024 Zyklen einen Interrupt.
>
> Wo fange ich da am dümmsten an?!

Don't take it offensive :)

Hier:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer

von Samuel C. (dragonsam)


Lesenswert?

Rubelus schrieb:
> Wo fange ich da am dümmsten an?!

Mit der Entscheidung, in welcher Sprache du schreibst.

von Rubelus (Gast)


Lesenswert?

Aso ja selbstverständlich :D Ich schreibe in C ;) MicroC oder AVR-GCC - 
egal.

von Rubelus (Gast)


Lesenswert?

Avr Noob schrieb:
> Don't take it offensive :)
>
> Hier:
>
> http://www.mikrocontroller.net/articles/AVR-Tutorial:_Timer

Sagmal... wie komme ich denn links zu diesem Artikel navigiert, via AVR 
Tutroial oder AVR-GCC Tutorial komme ich da garnet hin, die hatte ich 
vorhin schon durchgelesen...

Dank dir!

von Avr N. (balze)


Lesenswert?

8bit 1024 Zyklen ? Hmmm, Wie geht das? :) Sind es nicht 256 Zyklen ?

Wenn Du schneller eine Interrupt ausloesen moechtest als es der 
UEberlauf des Counters bietet (256 Zyklen beim 8 bit Counter) solltest 
Du Dir im Datenblatt mal den CTC Mode ansehen. (Datenblatt Seite 98)

MfG,

Balze aka AVR Noob

von Avr N. (balze)


Lesenswert?

Rubelus schrieb:
> Sagmal... wie komme ich denn links zu diesem Artikel navigiert, via AVR
> Tutroial oder AVR-GCC Tutorial komme ich da garnet hin, die hatte ich
> vorhin schon durchgelesen...

AVR->AVR-Tutorial->Die Timer: in regelmäßigen Zeitabständen Dinge tun.

von Ben _. (burning_silicon)


Lesenswert?

hm... timer ohne prescaler? interrupts? mit wieviel hundert kHz ballerst 
du denn auf den interrupt-handler ein?

von Avr N. (balze)


Lesenswert?

Ben _ schrieb:
> hm... timer ohne prescaler? interrupts? mit wieviel hundert kHz ballerst
> du denn auf den interrupt-handler ein?

Und wie gross ist der Overhead der ISR? Wieviele Zyklen bleiben um 
selbst etwas zu tun (und was kann das in den verbleibenden Zyklen sein) 
?

von Rubelus (Gast)


Lesenswert?

Hmm.. sieht interessant aus.. gibt es da eine Bezugsquelle?!

von Rubelus (Gast)


Lesenswert?

Oh falscher Thread :D

...

Garnichts, ich möchte bloß den halben Systemtakt in meinem Programm 
haben, Außenrum passiert erstmal garnichts.

von Michael U. (amiga)


Lesenswert?

Hallo,

den halben Systemtakt IN Deinem Programm? Was soll er da, kann ein AVR 
sowieso nichts mit anfangen.
Den halben Systemtakt auf einem Pin? Timer im CTC-Mode, Prescaler auf 1, 
Compareregister auf 0.

Gruß aus Berlin
Michael

von Peter D. (peda)


Lesenswert?

Avr Noob schrieb:
> Und wie gross ist der Overhead der ISR? Wieviele Zyklen bleiben um
> selbst etwas zu tun (und was kann das in den verbleibenden Zyklen sein)
> ?

Eine schlanke ISR dauert etwa 100 Zyklen (keine Unterfunktionsaufrufe).
Man kann aber auch leicht über 1000 Zyklen verbrauchen, wenn man nicht 
aufpaßt, was man alles in die ISR packt.

Ein Timeroverflow alle 256 Zyklen ohne Prescaler ist also schon ne 
heftige Interruptlast.


Peter

von Avr N. (balze)


Lesenswert?

Peter Dannegger schrieb:
> Eine schlanke ISR dauert etwa 100 Zyklen (keine Unterfunktionsaufrufe).
> Man kann aber auch leicht über 1000 Zyklen verbrauchen, wenn man nicht
> aufpaßt, was man alles in die ISR packt.

Danke fuer die Info Peter!

MfG,

Balze aka AVR Noob

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.