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
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
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
kannst du mir das programm mal geben bin schon lange auf der suche nach so einem programm.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.