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