Forum: Projekte & Code Timer für Anfänger in Assembler und C


von Axel Jeromin (Gast)


Angehängte Dateien:

Lesenswert?

Einfaches Beispiel für einen Timer der alle 50ms (49,92ms um genau zu 
sein) ein Register decrementiert.

Grüße Axel

von Axel Jeromin (Gast)


Angehängte Dateien:

Lesenswert?

Einfaches Beispiel für einen Timer der alle 50ms (49,92ms um genau zu 
sein) ein Register decrementiert. Hier das C Programm.

Grüße Axel

von Thomas H. (Gast)


Lesenswert?

Hallo Axel,

sehe ich das recht, dass die Zeit genau dann anfaengt zu laufen, wenn 
die Zeilen

ldi temp, 61
out TCNT0, temp

durchlaufen wurden und es danach weiter geht mit den Befehlen nach out 
TCNT0, temp?

Ich habe auch etwas von zwei externen Interrupts gehoert. Kann ich dann 
mit deinem Programm auch 2 Zeiten stoppen, die dadurch entstehen, dass 
INT0 und INT1 von 0 auf 1 bzw. umgekeht springen?

Ich habe Bits, die abwechselnd zwischen 1 und 0 springen und ich moechte 
die Dauer zwischen den Wechseln messen. Dein Programm muesste hierfuer 
doch eine gute Grundlage sein.

Weisst du, wie ich dort die externen Interrupts einbaue bzw. dann den 
Zeitwert auslesen kann?

Tschau und vielen Dank,

Thomas H.

von axel.jeromin@gmx.de (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Thomas,
entschuldige die lange Pause. Habe leider nicht ins Forum geschaut.

Du kannst die Anzahl der Interrupts pro Zeit zählen oder die Anzahl der 
Timerinterrupts zwischen den Flanken an den Eingängen.

Anbei ein Programm zur Messung von Flanken pro Zeit. Es ist in C aber
recht einfach zu verstehen.

Grüße Axel

von Uwe O. (schwede)


Lesenswert?

Hallo...
Wenn ich meinen mega8 mit 16 MHz takte, wie gross ist die max. Zeit im
16-bit-Timer?
Ich möchte meine Programm-Schleife (in Assembler) alle 30 min
ausführen. Sind solche grossen Zeiten überhaupt möglich?


Gruss Uwe

von neuer (Gast)


Lesenswert?

ein anfänger kennt die begriffe "outp" nicht mehr.
du arbeitest mit einer alten version. auch die timerbegriffe haben sich
geändert im namen.

ein anfänger lädt immer das aktuelle winavr-c runter.

neuer

von Momo M. (mylove-mylove)


Lesenswert?

hallo und guten tag alle zusammen.

ich komme direkt aufm punkt.
seit eine woche arbeite ich an AVR STK525 AT90USB1287 (verbindung über 
JTAGICE mkll) und will den timer einstellen aber ich bekomme es einfach 
nicht hin!!!

ich habe früher mit infinion c515c gearbeiten und hab den timer so 
inistiallisiert dass ich es selber die zeit einfach x-beliebig eingeben 
konnte,

infinion c515c timerinit:
void warte_k_s(unsigned char k)    // Funktion für k + 1 s wait
{

unsigned int uz = 0;      // Überlaufzähler
uz = 0
TMOD = TMOD & 0xF0;  /* Timer Modus für Timer 0: Gate = 0,
                                       C/T = 0(hF0 = 240'd')*/
TMOD = TMOD | 0x01;  // Modus = 1, d.h. 16-Bit-Timer  (h01 = 1'd')

for (uz=0; uz<k*100; uz++)  /* for-Schleife bis 100 + 10 ms = 1 s */
  {
  TL0 = 0xE5;  /* 16 Bit Zähler mit BEE5h = 48869d vorbelegen */
  TH0 = 0xBE;  /* Zähler läuft damit 10 ms */
  TF0 = 0;  /* Überlauf zurücksetzen */
  TR0 = 1;  /* Timer starten */
  while (TF0 == 0);  /* Warten bis Überlauf */
  TR0 = 0;    /* Timer stoppen */
  }
}

jetzt brauche ich sowas ähnliches bei dem AVR STK525 AT90USB1287.
bitte kann mir jemand helfen?
ich bedanke mich schon im vorraus.

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.