Hallo,
ich bin gerade dabei mit Bascom eine Schalting zu programmieren, die mir später mal die Beleuchtung in einem RC-Modell steuern soll.
Zu dieser gehöhrt z.B. die ansteuerung zweier LEDs als Doppelblitz, wie es bei Einsatzfahrzeugen üblich ist.
Nun habe ich dies zur Zeit über einen Zähler realisiert und steuere die Ausgänge mit IF-Abfragen. (siehe Code)
Da dies im Moment die einzige Funktion ist an der ich tüftel, funktioniert es auch ganz gut.
Nun habe ich aber die Befürchtung, wenn ich weitere Dinge in meinem Programm anstellen möchte (z.B. die Auswertung eines RC-Kanals), das ich dann in Schwieriglkeiten kommen werde was Optik angeht (unregelmäßiges Blinken).
Es sollen vermutlich auch noch andere Ausgänge mit Blitz bzw. Blink funktionen belegt werden.
Kann mir jemand einen Tipp geben wie solch eine Funktion eleganter gelöst werden kann, ohne das sie vom Hauptprogramm beeinträchtigt wird?
Die If-Abfragen in die Interruptroutine zu verlegen ist vermutlich die noch schlechtere Umsetzung.
Hier noch der derzeitige Code:
Danke schon einmal für eure HilfeCode:'-------------------------------------------------------------- ' Beleuchtung_M8_test.bas ' Testprogramm für Beleuchtungssteuerung '-------------------------------------------------------------- $regfile = "m8def.dat" $crystal = 8000000 Config POrtC = Output Config PORTB.4 = Output Config portb.5 = Output Config Timer0 = Timer , PRESCALE = 64 On Timer0 Tim0_isr Enable Timer0 Enable Interrupts Timer0 = 131 'Timerregister auf 156 voreinstellen Dim zaehler as Integer Doppelblitz1 Alias PortC.5 Doppelblitz2 Alias Portc.4 KontrollLED Alias PortB.4 Zaehler = 0 Do If zaehler = 10 or zaehler = 210 then Doppelblitz1 = 1 End IF If zaehler = 160 or zaehler = 360 then Doppelblitz1 = 0 End IF If zaehler = 410 or zaehler = 610 then Doppelblitz2 = 1 End IF If zaehler = 560 or zaehler = 760 then Doppelblitz2 = 0 End IF If zaehler >= 1000 then zaehler = 0 end IF Loop 'Interruptrotiene Timer0 Overflow Tim0_isr: Timer0 = 131 'Timerregister auf 156 voreinstellen incr zaehler Return End







Zitieren

Lesezeichen