TINY2313 (Timer und PWM???)

Gast #264506
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!!!!
#264507
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.

...
Gast #264508
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.
#264510
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

...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.