Timer, aber ohne Interrupt

OP #396082
Lesenswert?
• ▲
▼
Hallo,

Ich benutze einen ATTiny26. Folgendes Programm will ich realisieren,
wobei ich alles bis auf den Timer habe.

Ich will einen Wert einlesen, diesen mit einer Konstanten vergleichen,
dann eine gewisse Zeit warten und die Show beginnt von vorne.

Ich hab schon einige Beispiele zu Timern gefunden, bin aber aus keinem
richtig Schlau geworden. Kann mir jemand einen Schups in die richtige
Richtung geben und mir sagen wie man einen Timer benutzt (also
einrichten und ablaufen lassen) ohne einen Interrupt auszulösen. Falls
dies nicht möglich ist (sinnvoll oder nicht ist erstmal nebensächlich)
würde ich gerne mal den Korrekten Ablauf erklärt bekommen. Also wann
ich was, wie machen muss...

Ein gutes Tutorial würde mir auch genügen (auch in englisch). Hab
bisher leider nix passendes gefunden.

Danke im vorraus

EXS
Gast #396084
Lesenswert?
• ▲
▼
Ohne Interrupt geht's schon, falls Du nichts anderes während der
Wartezeit vorhast. Du kannst einen Software-Zähler (Pause)
programmieren die die gewünschte Zeit wartet und dann neu startet. Mit
INT wird's bedeutend einfacher, siehe 'Long time delays' auf der
ATMEL-HP, falls die Zeit länger ist. Jedenfalls ist es nicht sehr
sinnvoll einen Timer ohne Interrupt zu verwenden.
OP #396085
Lesenswert?
• ▲
▼
Gibt es da irgendwo ein gut kommentiertes Codebeispiel? Weil im Grunde
ist mir klar was ich machen muss, nur bin ich mir über den Programmcode
nicht ganz im klaren.

Ich möchte noch erwähnen, dass ich mich erst seit kurzem mit
Microcontrollern, insbesondere denen von Atmel beschäftige.

Ich muss alle paar Millisekunden einen Bus über PinA einlesen, das ist
kein Problem. Mir kommt es aber so vor als sei die Timer-Geschichte
wesentlich komplizierter, ich bin da wirklich unsicher wie ich den
jetzt Register für Register und Bit für Bit richtig initialisiere,
starte und benutze.

Gibt es da ein empfehlenswertes Buch, das die Grundlegeneden Dinge gut
erklärt?

mfg

EXS
Gast #396086
Lesenswert?
• ▲
▼
Es kommt dabei darauf an, mit welcher Sprache Du arbeiten willst.
Assembler, C, Basic....
Für Bascom (www.mcselec.com) gibt es bei www.roboternetz.de im
Downloadbereich (nach der Anmeldung) irgendwo das 'rnavr' Tool.
Zeiten eintragen und heraus kommt der Beispielcode in Bascom.
Ob das nun pädagogisch sinnvoll ist, ob Bascom der Warheit letzter
Schluß ist oder ob 42 wirklich der Sinn des Lebens ist, sei mal
dahingestellt. Mir hilft es zumindest und ich bin auch noch nicht
verblödet ;-))))))))
:-) Johannes
#396088
Lesenswert?
• ▲
▼
> Gibt es da irgendwo ein gut kommentiertes Codebeispiel?

Na ja.
Das wichtigste ist das Datenblatt zur Hand zu haben.
Dort sind die ganzen Dinge erklärt.

Aber das Prinzip ist wirklich so simpel:

#include <avr/io.h>

int main()
{
  unsigned char i;

  // am Beispiel des ATMega16

  TCCR0 = ( 1 << CS00 );

  // an dieser Stelle tickt der Timer bereits. Er tut dies
  // mit derselben Frequenz wie es auch der Prozessor tut

  TCCR0 = ( 1 << CS01 );

  // jetzt tickt der Timer mit 1/8 der Frequenz des Prozessors

  TCCR0 = ( 1 << CS01 ) | ( 1 << CS00 );

  // jetzt tickt der Timer mit 1/64 der Frequenz des Prozessors

  // es gibt noch andere Vorteiler, zb. 1/256 oder 1/1024
  // ist aber im Datenblatt in Form einer Tabelle schön zusammen-
  // gestellt

  TCCR0 = 0;

  // und jetzt tickt der Timer gar nicht mehr.

  // wollen mal schauen wie weit er gekommen ist
  // da der Timer 0 ein 8 Bit Timer ist, reicht ein
  // unsigned char um den Wert zu speichern

  i = TCNT0;
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.