mikrocontroller.net

Forum: Compiler & IDEs Tiny26 und Timer0


Autor: Bernd E. (edi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich kämpfe gerade mal wieder mit dem Tiny26 und habe das Problem, dass 
ich dein Timer0 nicht richtig eingestellt bekomme. Ich hätte gerne, dass 
ich mit einer Frequenz von 100kHz (Taktfrequenz 4MHz) einen Interrupt 
bekomme.

Nach welcher Formel berechnet sich die Timerfrequenz beim Timer0, habe 
im Manual des Tiny26 leider nichts gefunden!

Gibt es bei diesem Timer keinen max. Wert bei dem der IR ausgelöst wird, 
muss dieser immer 255 sein, oder kann ich dies über den Timer reset Wert 
(TCNT0) einstellen?

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ohne jetzt im Datenblatt zu blättern...

Du willst durch 4000kHz/100kHz = 40 teilen.

Also Vorteiler 1 und Counter 40 oder Vorteiler 2 und Counter 20 oder 
Vorteiler 4 und Counter 10 usw. usw.

Welche Kombination Dir gefällt, hängt einmal davon ab, welche Vorteiler 
beim konkreten Timer möglich sind (Datenblatt) und welcher Mode möglich 
ist (CTC oder Standard). Bei CTC also z.B Vorteiler 1, Compareregister 
auf 40 und Compare-IRQ eintragen.

Bei Standardmode (zählt aufwärts) 255-40 in Counterregister, 
Overflow-IRQ eintragen und nicht vergessen, in der IRQ den Counter 
wieder auf 255-40 zu setzen.

PS: Ob da jetzt eine Differenz von 1 drin ist, mal im Datenblatt 
nachschauen, wie das genaue Verhalten bei CTC, Standard usw. ist, also 
Zählrichtung, wann wird der IRQ erzeugt, was macht der Timer danach.

Gruß aus Berlin
Michael

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd Edlinger wrote:
> Hallo,
> ich kämpfe gerade mal wieder mit dem Tiny26 und habe das Problem, dass
> ich dein Timer0 nicht richtig eingestellt bekomme. Ich hätte gerne, dass
> ich mit einer Frequenz von 100kHz (Taktfrequenz 4MHz) einen Interrupt
> bekomme.

40 Zyklen ist aber verdammt knapp.
Ein leerer Interrupt kostet ja schon 10 Zyklen.



Peter

Autor: Bernd E. (edi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der ISR des Timer0 erhöhe ich nur einen Counter und setze den 
Counterwert des Timers wieder auf 215.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd Edlinger wrote:
> In der ISR des Timer0 erhöhe ich nur einen Counter

"nur" kannst Du zwar sagen, obs aber in 40 Zyklen paßt, heißt das noch 
lange nicht.

Du mußt schon in das Listing schauen.


> und setze den
> Counterwert des Timers wieder auf 215.

Wenn Du das nicht per Addition unter Berücksichtignung der für die 
Addition benötigten Zeit machst, kanns auch nie stimmen.

Schau mal ins Listing, wie spät das Reload gemacht wird.


Peter

Autor: Bernd E. (edi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,
welcher Listing meinst du? (sorry bin leider kein so Profi...)

mfg
Bernd

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

selbst wenn es "nur" 10 weitere Zyklen sind, macht das mit IRQ-Aufruf, 
SREG retten und zurück usw. ganz schnell 30 Zyklen. Das sind dann aber 
75% CPU-Last, was soll das Kerlchen dann sonst noch so machen?

Gruß aus Berlin
Michael

Autor: Bernd E. (edi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
also wäre es sicher mal von Vorteil, wenn ich auf einen 12MHz oder 16MHz 
Quarz wechseln würde!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd Edlinger wrote:
> Hallo Peter,
> welcher Listing meinst du? (sorry bin leider kein so Profi...)


avr-gcc.exe -xc -Os -mmcu=attiny26 -Wall -g -o test.out *.c

avr-objdump.exe -h -S test.out >test.lst



Peter

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.