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-Tags verwenden ! (PicNick)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
Mfg







Zitieren

Lesezeichen