Hallo :-) ich zermarter mir gerade die Birne wie man folgenes realisiseren könne. Ich möchte mit bis zu 6 LED's einen kurzen Blinkimpuls ausgeben wenn in meinem Programm irgend ein Zustand von den 6 möglichen erreicht ist. Nun der Timer läuft das er alle 250ms angesprungen wird. Das find ich ausreichend zum erkennen des Blinkens. Jetzt habe ich früher immer einen Zähler laufen lassen und den in meinem Hauptprogramm auf 3 gestellt und im Timer dann die LED eingeschaltet wenn der Zähler >0 war. Der Zähler wurde im Timer runtergezählt und dann wenn 0 erreicht war, die LED wieder abgeschaltet. Bei 6 LED's find ich es totale Verschwendung, 6 Zähler laufen zu lassen da der Blinkimpuls bei allen ruhig gleich bleiben kann. Nun habe ich mir überlegt das man das vlt. sogar mit 2 Byte hinbekommen müßte. Wenn man 2 Byte led_on und led_sav hätte könnte man im Hauptprogramm das jeweilige Bit in led_on setzen welches beim Eintritt in den Timer dann am Port ausgegeben wird. Man könnte sich die gesetzten dann in led_sav speichern. Beim nächsten schaut man dann welche im led_sav liegen und im led_out nicht mehr gesetzt sind und löscht die wieder. Soweit die Theorie... :-( Das ganze ist bestimmt mit logischen Verknüpungen realisierbar doch wie setze ich da nun an? Gruß AVRli...
Das ganze geht doch auch in einem Byte. Die untersten 6 Bit des Bytes repräsentieren deine 6 LEDs. Angesprochen werden sie dann mathematisch: Für die 1. LED +1, für die 2. LED +2, für die 3. LED +4, für dei 4. LED +8, für die 5. LED +16 und für die 6. LED +32 zum einschalten und den entsprechenden Wert zum abschalten wieder subtrahieren. Wenn du die LEDs der Reihe nach an einem Port hast, kannst du sogar das Byte in deinem Blink-Timer einfach ins Portregister schreiben. Fertig. //EDIT: Einen Zähler für den Implus brauchst du nach wie vor, aber da tuts doch der Timer selber, falls du den nicht anderweitig benötigst. //EDIT2: Wenn du dsa ganze in Binär ausgibst, reichen für 6 Stati übrigens auch 4 Bit. Man muss dann halt jede LED nicht als ein Signal ansehen, sondern der Zustand aller LEDs als ein Status.
Vielen Dank! In der Tat es reicht in meinem Fall 1 Byte. Ich merke mir pro LED ein Bit was ich im Timer setze und dann lösche ich es nach dem setzen im Timer wieder. Klappt 1A danke! Gruß AVRli...
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.