Forum: Mikrocontroller und Digitale Elektronik TINY2313 (Timer und PWM???)


von Hennes Hanke (Gast)


Lesenswert?

cout<<"Hello Forum";

Ich bin im moment damit beschäftigt ein Programm zu realiseren.
Also:
Ich habe eine Lampe(zum testen neh LED). Ich möchte nun diese LED mit
einer PWM (Hardware)zum leuchten bekommen. Nach einer zeit von ca.25
Sekunden soll diese LED aus gehen.
Das PWM Signal habe ich schon mit dem Timer/ Counter1 erstellt.
Wie kann ich nun eine Zeit von ca. 25Sekunden erstellen ohne den
weiteren Ablauf des  Programmes zu blockieren.

Was ist sinniger ein HardwareTimer mit dem T/C0 oder besser einen
SoftwareTimer (der aus mehreren Schleifen besteht)
Brauche ich Interrupts?

möchte mal Eure Meinungen dazu hören!

DANKE Schön!!!!

von Hannes L. (hannes)


Lesenswert?

> Was ist sinniger ein HardwareTimer mit dem T/C0 oder besser einen
> SoftwareTimer (der aus mehreren Schleifen besteht)

Weder noch...

> Brauche ich Interrupts?

Ja...

Man nehme einen Timer-Interrupt (dessen Intervall man aus Taktfrequenz,
Vorteiler und Zählumfang ausrechnen kann) und zähle in diesem eine
Variable hoch (oder runter).
Dies betrachte man als "Uhr" nach der sich alle Teile des Programms
richten können.
Braucht man nun eine Verzögerung, dann holt (kopiert) man sich diese
"Uhrzeit", addiert die Verzögerung dazu und prüft in der Mainloop die
Differenz und reagiert bei Gleichstand oder Überlauf.

...

von cazy horse (Gast)


Lesenswert?

dafür kannst du auch den Timer1 nehmen, deine genaue PWM-Betriebsart
kenne ich nicht. OC1A- oder/oder TOV1-INT kannst du dafür nehmen. Je
nach eingestellter PWM-Frequenz erzeugst du dir einen zyklischen
Interrupt, der zählt dann eine Variable hoch.

von Hennes Hanke (Gast)


Lesenswert?

Ja mein Timer1 ist voll verwendet!
Habe noch nie Interrupts genutzt !
Was muss ich beachten? Kann mir jemand wertvollte Tips geben?

von Hannes L. (hannes)


Lesenswert?

Du wiederholst dich... (einmal hätte gereicht)

Ein Timer kann durchaus mehrere Jobs erledigen.
So wäre es möglich, mit Timer1 nicht nur die PWM zu erzeugen, sondern
auch noch einen Interrupt auszulösen, in dem die (als "Uhr" genutzte)
Variable hochgezählt wird.

Jedes ernstzunehmende Programm hat einen Timer als "Zeitnormal"
laufen, in dem gewisse Standardaufgaben synchronisiert werden. Dies
wären z.B.: Zeitzählung (Uhr), Steuerung von Verzögerungen, Entprellung
von Tastern, Synchronisation von LCD-Ausgabe, Steuerung von blinkenden
LEDs, Multiplexing von 7-Segment-Ziffern-Anzeigen auf LED-Basis. All
diese Dinge kann ein einziger Timer quasi zeitgleich erledigen.

Hier wird z.B. über das Thema diskutiert:
http://www.mikrocontroller.net/forum/read-1-233282.html#233728

...

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.