mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer


Autor: Niki Hammler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Endlich hab ich alles geschafft!

Ich kann über meine IR Fernbedienung meine Lichter aus und einschalten, 
die IR Signale, die der uC nicht verwerten kann werden via RS232 an den 
PC weitergeschickt und von "lirc" verarbeitet.
War ein schönes Stück Arbeit, aber jetzt hab ichs endlich!

Da mein PC ja nicht immer läuft, soll alles unabhängig von dem sein, 
deshalb decoded ja auch der uC die IR Signale und nicht der Computer.

Jetzt hätt ich noch gerne, dass ich über die IR Fernbedienung einen 
Timer einschalten kann, mit dem nach einer abgelaufenen Zeit 
irgendwelche Relais die Zustände ändern.

Ich hab da schon so ne Vorstellung von wunderschönen Menüs auf LCD Basis 
und auch schon ne Idee wie ich es mache. Jedoch das Hauptproblem sind 
die Timer.
Timer1 brauche ich für sozusagen den Hauptinput, den RC5 Decoder und den 
will ich nicht anrühren.

Timer2 werde ich noch für irgendwelche Systemaufgaben benötigen und will 
ich irgendwie auch nicht für das verwenden. Und zusätzlich kommen da ja 
auch grosse Intervalle raus.
Die sollen von einer Minute bis zu unbegrenzt, vielleicht 24 Stunden 
gehen.

Also z.B. ich hab das Licht eingeschaltet und mit ein paar Klicks auf 
die IR Fernbedienung soll jetzt ein timer eingestellt werden mit dem das 
Licht zu einer bestimmen Zeit ausgeschaltet wird.

Hat wer eine Idee wie ich das anstellen könnte?

Ich dachte vielleicht an einen externen Timer Baustein, dem ich über 
eine Leitung eine Zeit zusende und nach einer bestimmten Zeit triggert 
er mir INT0.
An was ich dabei auch nicht gedacht habe, ist, dass ich dann auch nur 
einen Timer steuern kann. Ich möchte aber wie gesagt mindestens die 3 
Relais "timern" können.

Hat da wer eine Idee wie ich das machen könnte?

thx

Niki

Autor: Lothar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieses Problem ist leicht lösbar mit einer RealTimeClock z.B. auf 
Timer1.

Dieser aktualisiert z.B. bei jeden 1024.ten CPU-Takt die Zeitregister 
Sekunde, Minute, Stunde.

Mit jeder neuen Minute / Stunde könnte man einen von Null verschiedenen 
Pausezähler dekrementieren. Hat ein Pausezähler NULL erreicht, passiert 
nichts.

Der Mehrcode in der INT-Routine beschränkt sich auch ein paar Worte pro 
Pausezähler. Nachteilig ist, das man diese Zähler in der LOOP des 
Main-Programmes testen und ggf. reagieren muss.

Lothar

Autor: Thomas Fischl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Den Timer1, also den 16Bit-Timer, verwendest du für deine 
RC5-Decodierung.
Dann gibt es noch einen 8Bit-Timer: Timer0.

Für welche Systemaufgaben willst du diesen später mal nutzen?
Wenn das Aufrufe mit festen Intervallen werden soll, könntest du diesen 
auch für deine Relaisschaltung hernehmen: z.B. den Timer auf 0.01 s 
einstellen. Bei jedem Aufruf arbeitest du deine "Systemaufgabe" ab und 
erhöhst einen Zähler. Diesen Zähler setzt du dann bei 100 zurück und 
kannst so jede Sekunde was für deinen Relais-Countdown machen (z.B. 
wieder Zaehler erhöhen).

Ich würde nicht unbedingt auf externe Hardwarekomponenten setzen, wenn 
man es anders irgendwie lösen kann.

Thomas

Autor: tobiasweis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst du mir das programm mal geben bin schon lange auf der suche nach 
so einem programm.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du benutzt warscheinlich die umständlichste Methode der Welt zur RC5 
Decodierung.

Ja die wird leider sehr oft publiziert. Ist vielleicht für einen 
Hardwaredecoder sinnvoll, verbraucht aber eine Unmenge Ressourcen in 
Software.

Der RC5-Code ist ein Manchestercode. Such mal danach in diesem Forum, da 
findest Du meinen einfachen Code und auch Fragen und Erläuterungen dazu.

Mein Code benötigt keinerlei externe Interrupts und nur einen 
freilaufenden Timer. Daher kannst Du in diesen Timerinterupt noch 
beliebig viele andere Zeitfunktionen einfach mit einfügen.



Peter

Autor: thkaiser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe bei solchen Projekten grundsätzlich einen "Systemtimer" laufen, 
meistens mit 10 Hz. Mit diesem kann man dann massig Software-Timer 
aufbauen, die für solche Schaltaufgaben geeignet sind.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.