Hallo Forum,

erstmal ein großes Lob an alle, lese noch nicht lange, aber sehr informativ hier!!!

Muss mich gleich mal mit einem Rroblem an euch wenden.

Ich habe folgendes Programm geschrieben, dass mir einen RC-Kanal vom Empfänger auswerten soll, bei hohem Puls ein Relais schalten soll und bei niedrigem das Licht einschalten (LEDs), beim zweiten niedrigen Impuls (also vorher zurück in die Nullstellung) Licht wieder aus.

Eigentlich läuft das Programm, nur sind beide Funktionen irgendwie auf einem Schaltweg, was ich mir nicht erklären kann.

Sprich:

Schalter an Fernsteuerung nach unten -->Relais und Licht an
Schalter normal -->Relais aus, Licht bleibt an
Schalter nochmal nach unten -->Relais wieder an, Licht aus

Also entweder ich lege das Relais jetzt um, oder so wie's eigentlich sein soll reagiert das Licht auf niedrige und keine hohen Impulse...

Code:
'===============================================================================
' Compiler
'===============================================================================
 $regfile = "m8def.dat"                                            'Mega8
 $crystal = 1000000                                                '1Mhz Quarz
'-------------------------------------------------------------------------------


'===============================================================================
' Ein- und Ausgänge
'===============================================================================
 Config PortC   = Output                'LEDs
 Config PORTD.4 = Input                 'Empfängersignal
 Config PortD.5 = Output                'Relais
 Config PortD.6 = Output                'Relais
 Config PortD.7 = Output                'Relais
 Config PortB.0 = Output                'Relais

'===============================================================================
' Variablen
'===============================================================================
 Dim Pulsbreite  as byte
 Dim Mindestwert as Byte
 Dim Maxwert     as Byte
 Dim Speicher    as Byte
'-------------------------------------------------------------------------------

'*******************************************************************************
'* HAUPTPROGRAMM                                                               *
'*******************************************************************************

Do
Speicher = 0
Wait 2

Anfang:
Mindestwert = 110                          'Mindestwert festlegen
Maxwert     = 140                          'Maxwert festlegen
pulsein Pulsbreite , PIND , 4 , 0         'Pulsbreite auslesen

If Speicher = 0 Then
PortC = 0
Else
PortC = 255
End If

If Pulsbreite > Maxwert Then               'Pulsbreite auf Maximum testen, wenn
Portd.5 = 0
Portd.6 = 0                                 'alle Relaisports aus
Portd.7 = 0
Portb.0 = 0
Else                                       'wenn nicht, dann
Portd.5 = 1
Portd.6 = 1                                 'alle Relaisports an
Portd.7 = 1
Portb.0 = 1
End If


If Pulsbreite < Mindestwert Then           'Pulsbreite auf Minimum testen
GoSub Minimum
End if

waitms 100                                 'Aktualisierungsintervall

Goto Anfang                                'zurück zum Start

loop                                       'sinnlos, aber ohne flennt Bascom

'-------------------------------------------------------------------------------
'Subroutinen

Minimum:                                    'wenn er unter Minimum ist,
If Speicher = 0 Then                       'überprüfe ob An oder Aus
Gosub SpeicherAus
Else
Gosub SpeicherEin
End If
Return

SpeicherAus:                                'wenn der Speicher Aus war
Speicher = 1                                'mache ihn an und warte bis
pulsein Pulsbreite , PIND , 4 , 0          'der Puls wieder normal wird
IF Pulsbreite < Mindestwert Then
Gosub SpeicherAus
End if
Return

SpeicherEin:                                ' same story nur umgekehrt
Speicher = 0
pulsein Pulsbreite , PIND , 4 , 0
IF Pulsbreite < Mindestwert Then
Gosub SpeicherEin
End If
Return

'-------------------------------------------------------------------------------
'===
 End
'===
Gruß Denis

edit: ich habe die benötigten Werte für die Pulsweite (die mir "pulsein" ausgibt) mit einem Mega32 an 16Mhz ausgemssen, verändern die sich, wenn ich mit dem Mega8 und internem Quarz arbeite und führen so zu Problemen?