www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schnellster Timer eines Atmega644P


Autor: Rubelus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!

Autor: Avr Noob (balze)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Samuel C. (dragonsam)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rubelus schrieb:
> Wo fange ich da am dümmsten an?!

Mit der Entscheidung, in welcher Sprache du schreibst.

Autor: Rubelus (Gast)
Datum:

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

Autor: Rubelus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Avr Noob (balze)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Avr Noob (balze)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ben ___ (burning_silicon)
Datum:

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

Autor: Avr Noob (balze)
Datum:

Bewertung
0 lesenswert
nicht 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) 
?

Autor: Rubelus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm.. sieht interessant aus.. gibt es da eine Bezugsquelle?!

Autor: Rubelus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh falscher Thread :D

...

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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Avr Noob (balze)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.