Timer0 - mega8

Gast #275722
Lesenswert?

Ach und noch etwas...verstehe den Sinn der Flags nciht so ganz.

Wenn ich z.B.einen mit einem timeroverflow ein Ereignis auslösen
möchte, schreib ich das so:

ISR(TIMER0_OVF_vect)
{
  _delay_ms(50);
  timerstand = TCNT0;      //Lese aktuellen timerstand aus
  nr_overflows++ ;

}
Gast #275725
Lesenswert?

Und wieso das falsche Flag?

Laut Datenblatt:

When the TOIE0 bit is written to one, and the I-bit in the Status
Register is set (one), the
Timer/Counter0 Overflow interrupt is enabled.

Das will ich doch!!


Udn zum Delay in der ISR.....weiß nicht, wie ich den taster sonst
entprellen soll(softwaremäßig) :-)
Gast #275727
Lesenswert?

@Thomas Burkhardt
hmm, das mit den delays in interruptroutinen habe ich hier jetzt in den
letzten tagen des öfteren bei anfängern gesehen (z.b. einen beitrag mit
einer seriellen schnittstelle)! eventuell sollte man mal nen kleinen
eintrag ins wiki machen, der delay`s beschreibt, wie sie zu erzeugen
sind und wann man sie (nicht) benutzt.
Gast #275728
Lesenswert?

Aha, danke, werd mich darüber schlau machen..
Wobei ich schon ein kleines Programm ahbe, um einen Pin zu entprellen,
allerdings müsste der Code dann ja auch in der ISR Routine stehen, und
das ist auch nicht optimal, oder?!

Aber bevor ich mir darüber Gedanken machen, sollte der Timer mal laufen
:-)
Persönliche Seite #275729
Lesenswert?

Hoi!

> When the TOIE0 bit is written to one, and the I-bit in the Status
> Register is set (one), the
> Timer/Counter0 Overflow interrupt is enabled.

> Das will ich doch!!

Ja, du willst, aber du schreibst es nicht ;)

TOIE0 != TOIE1

Im Code steht eine EINS wo eine NULL stehen sollte...

Ansonsten den vorgeschlagenen Artikel zur Entprellung ansehen, wenn
das sowieso dein Ziel ist.

Gruß, Thomas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren