Hi @all
Bin total verzweifelt...seit 5 Stunden bekomm ich es nicht zu laufen. Folgendes: Ich möchte Portc.0 und Portc.1 eines ATMEGA8 per UART schalten. Wenn ich "016" sende, geht Portc.1 für 2 Sek an, wenn ich "000" sende, geht Portc.0 für 2 Sek an. So sollte es jedenfalls sein aber Portc.0 geht nicht an. Nun sende ich den Befehl einmal von einem ATMEGA644 (da funktioniert es nicht). Sende ich den Befehl aber per Terminal funktioniert es einwandfrei, ob wohl der Befeh identisch ist. Weis echt nicht mehr weiter. Hier mal mein Code:
Code:
$regfile = "m8def.dat"
$framesize = 48
$swstack = 16
$hwstack = 64
$crystal = 8000000
$baud = 9600
Dim Empfangen As String * 4
Dim X As Bit , Y As Bit , Z As Bit , Wecker As Bit
Dim Ansteuerung As Byte , Wecksound As Byte
Dim Ansteuerung2 As Integer
X = 0
Y = 0
Z = 0
Config Portb = Output
Config Portc = Output
Config Portd.4 = Output
Summer Alias Portd.4
On Urxc Onrxd
Enable Urxc
Enable Interrupts
Do
If Wecker = 1 Then : Gosub Wecker : End If
If Len(empfangen) > 2 Then
Ansteuerung2 = Val(empfangen)
Select Case Ansteuerung2
Case 300
Ansteuerung2 = 144
Empfangen = "144"
Wecker = 1
Gosub Lichterkette
Gosub Leuchtkugel
Case 301
Wecker = 0
Empfangen = ""
Case Is < 256
Ansteuerung = Val(empfangen)
Portb = Ansteuerung
Print Portb.0
Print Portb.1
Print Portb.2
Print Portb.3
Print Portb.4
Print Portb.5
Print Portb.6
Print Portb.7
Gosub Lichterkette
Gosub Stehlampe
Gosub Leuchtkugel
Empfangen = ""
End Select
End If
Loop
End
Lichterkette:
If Portb.4 = 1 Then : If X = 0 Then : Portc = &B00000000 : Portc.1 = 1 : X = 1 : Waitms 500: Portc = &B00000000 : Else : Nop : End If : Else : If X = 1 Then : Portc = &B00000000 : Portc.0 = 1 : X = 0 : Waitms 500 : Portc = &B00000000: Else : Nop : End If : End If
Return
Stehlampe:
If Portb.6 = 1 Then : If Y = 0 Then : Portc = &B00000000 : Portc.3 = 1 : Y = 1 : Waitms 500 : Portc = &B00000000: Else : Nop : End If : Else : If Y = 1 Then : Portc = &B00000000 : Portc.2 = 1 : Y = 0 : Waitms 500: Portc = &B00000000 : Else : Nop : End If : End If
Return
Leuchtkugel:
If Portb.7 = 1 Then : If Z = 0 Then : Portc = &B00000000 : Portc.5 = 1 : Z = 1 : Waitms 500 : Portc = &B00000000: Else : Nop : End If : Else : If Z = 1 Then : Portc = &B00000000 : Portc.4 = 1 : Z = 0 : Waitms 500 : Portc = &B00000000: Else : Nop : End If : End If
Return
Wecker:
Do
Wecksound = Wecksound + 1
Select Case Wecksound
Case 1 To 150
Summer = 1
Waitms 1
Summer = 0
Waitms 1
Case 151 To 255
Summer = 1
Waitms 2
Summer = 0
Waitms 2
If Wecksound >= 243 Then : Wecksound = 0 : Return : End If
End Select
Loop
End
Onrxd:
Empfangen = Empfangen + Chr(udr)
Return
Code-Tags verwenden ! (PicNick)
Mfg
Lesezeichen