Hi Leute..

Also es geht (wieder) um eine Beleuchtungsteuerung..

Und zwar soll folgendes passieren :

1. An Int0 liegt das Signal eines PWM empfängers an.
2. Sobald das signal an Int0 wechselt wird die ISR "Messen" ausgelöst. Diese startet Timer0 und sobald das signal wieder wechselt wird der Timer gestoppt. So habe ich dann einen Wert zwischen 62,5 und 125..

Bis hierhin schonmal den Code :

Code:
$regfile = "m644def.dat"
$crystal = 16000000

Config Porta = Output
Config Portc = Output
Config Portd.2 = Input

Dim Reading As Bit
Dim Empf_wert As Byte

Reading = 0

Config Timer0 = Timer , Prescale = 256
Enable Timer0
Stop Timer0
On Timer0 Error

Config Int0 = Change
On Int0 Messen
Enable Interrupts
Enable Int0



Do

Loop

End


Messen:

If Reading = 0 Then
   Start Timer0
   Reading = 1
Else
   Stop Timer0
   Empf_wert = Timer0
   Timer0 = 0
   Reading = 0
End If
Return

Error:

Stop Timer0
Return
So, nun will ich in der ISR "Messen" zwei verschiedene "Sprünge auswählen"

Undzwar geht es um folgendes : Wenn der Wert < 95 ist soll ein Programm ablaufen und wenn der wert > 95 ist soll ein ANDERES programm ablaufen..

Also ich will im Prinzip durch den im Interrrupt ermittelten Wert zwei unterschiedliche Programme starten.. Das erste Programm soll einfach sein, das alle LEDs auf High gesetzt werden und das zweite soll ein Lauflicht werden..

Da kommt aber noch ein Problem hinzu.. Undzwar wird das Signal am Empfänger ja mehrere mal in der Sekunde gesendet und jedes mal die ISR "Messen" ausgelöst.. Das Problem ist das nur, das wenn der Wert > 95 ist, würde das Lauftlicht-Programm jedes mal neu starten.. Das soll aber nciht passieren, es soll an der Stelle weiterlaufen wo es aufgehört hat..

Leider weiß ich noch nicht so ganz wie ich das realisieren soll..

Hoffentlich könnt ihr mir helfen..

Danke im Vorraus


Mfg Yannik