PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe mein AT90s2313 hängt sich auf



Looser
13.02.2006, 21:12
Hallo Leute ich hab da ein Problem und komme nicht weiter. Mein Program läuft soweit. Wenn ich zB 00 01 00 00 05 00 an dem Eingangspin bekomme leuchte kurz meine LED am Portb.0 auf. das ist so richtig. mit den anderen funktioniert es auch. Jetzt möchte ich wenn ein bestimmter Wert kommt alle nacheinander aufleuchten lassen. das habe ich mit WAITMS 300 hinbekommen. Doch wenn in dieser Zeit ein weitere Wert bei INPUTBIN kommt, hängt sich alles auf. Also ist WAITMS falsch.Wie kann man das Problem anders lösen ?
Hoffe sehr auf eure Mithilfe und erst einmal DANKE


Hier mal mein Code.

Ddrd = &B0000000
Ddrb = &B0111111

Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim Z As Byte

Declare Sub Weiter()

Portb.0 = 0
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Portb.4 = 0
Portb.5 = 0

Config Timer0 = Timer , Prescale = 1024
Const Reload = 195
Enable Timer0 'Hier werden die Timer aktiviert
Enable Interrupts
On Timer0 Zeit
Z = 0


Do
Do
Do
Inputbin C , B , A



Select Case B
Case &H01 : Weiter
Case Else : Loop
End Select
Loop




Sub Weiter():
If A = &H05 Then
Portb.0 = 1
Start Timer0
End If

If A = &H06 Then
Portb.1 = 1
Start Timer0
End If

If A = &H07 Then
Portb.2 = 1
Start Timer0
End If

End Sub
Loop

'-----------------------------------------------------------------------------
Zeit:

Load Timer0 , Reload
Incr Z
If Z = 6 Then
Z = 0
Stop Timer0
Portb = 0
End If
Return

gandalf
13.02.2006, 22:04
Hallo Looser,
zu deinem Problem habe ich den Verdacht, daß du in die input Falle gestolpert bist.

siehe Roland Walter: AVR Microcontroller Lehrbuch S. 78:

" Will man mit input z.B. Zeichen in einen String einlesen, der mit 10 Bytes Länge dimensioniert wurde, dann kehrt input erst dann zurück, wenn tatsächlich 10 Bytes empfangen wurden, vorher nicht. "

"Bis dahin kann man nichts, aber auch gar nichts anderes tun"

Ich bin selbst Anfänger und kann dir da nicht viel weiterhelfen. Lies mal die Seite durch, vieleicht kommst du ja drauf, was falsch war.