Gast
#2435559
Hallo, irgendwie funktioniert mein Code nicht mehr, der im Juli schon mal lief. Seitdem bin ich nicht mehr dazu gekommen weiter zu machen - jetzt bin ich etwas frustriert, weil nichts mehr will und ich langsam keine Ideen mehr hab woran es liegen könnte. Evtl. seh ich den Wald vor lauter Bäumen nicht mehr. Vielleicht kann ja mal schnell jemand über meine paar Zeilen Code schauen ob er den Fehler findet... Hier der Code: $regfile = "M8def.dat" '.dat-file ATmega8' $crystal = 8000000 'Taktfrequenz 8MHz' $hwstack = 350 'Größe Hardwarestack' $swstack = 350 'Größe Softwarestack' $framesize = 200 'Größe Frame' ''$lib "i2c_twi.lbx" ' Für Hardware TWI $baud = 19200 'Baudrate UART Declare Sub Serial0charmatch() Declare Sub Verarbeiten() Declare Sub Setzen() ''Config Scl = Portc.5 'SCL-Pin ''Config Sda = Portc.4 'SDA-Pin ''Config Twi = 400000 'Clockspeed für SCL ''Twcr = &B00000100 'TWI einschalten ''Const Pcf_write = &H39 'Adresse jeelabs LuxPlug ''Const Pcf_read = &H40 ''I2cinit 'SCL und SDA initialisieren Config Serialin = Buffered , Size = 4 , Bytematch = 37 '37=% Enable Interrupts Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portd.5 , Db7 = Portb.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 2 Config Portb.0 = Output 'Kontroll-LED Config Portd.7 = Output '1. schaltbare LED Config Portd.6 = Output '2. schaltbare LED Dim I As Byte 'Splitting der Hauptschleife Dim Incoming_data As String * 4 'UART Buffer Dim Port As String * 2 'Portnummer (String) Dim Wert As String * 2 'Wert -> Port (String) Dim B_port As Byte 'Portnummer (Wert) Dim B_wert As Byte 'Wert -> Port (Wert) 'Dim Flag12 As Bit 'Zustand Pin 12 'Dim Flag13 As Bit 'Zustand Pin 13 B_port = 50 B_wert = 49 Cls Cursor On Blink Lcd "USB-IO_plus" Waitms 150 Locate 2 , 1 Lcd "." Waitms 150 Locate 2 , 2 Lcd "." Waitms 150 Locate 2 , 3 Lcd "." Waitms 150 Locate 2 , 4 Lcd "initialisiert" Do Toggle Portb.0 'Blinkende LED zur Kontrolle des Programmdurchlaufes For I = 0 To 200 Waitms 1 Next I Setzen 'Print "Port " ; B_port ; " Wert " ; B_wert 'Ausgabe zu Debuggingzwecken Loop End 'end program Sub Serial0charmatch() Input Incoming_data Noecho ' Daten aus Buffer auslesen Verarbeiten Clear Serialin ' Buffer leeren End Sub Sub Verarbeiten() Port = Left(incoming_data , 2) 'Byte 1 und 2 extrahieren Wert = Mid(incoming_data , 3 , 2) 'Byte 3 und 4 extrahieren B_port = Val(port) 'String zu Wert konvertieren B_wert = Val(wert) End Sub Sub Setzen() Select Case B_port 'zu setzenden Pin auswählen Case 50 : If B_wert = 49 Then Portd.6 = 1 Gosub Print_on Elseif B_wert = 50 Then Portd.6 = 0 Gosub Print_off End If Case 51 : If B_wert = 49 Then Portd.7 = 1 Gosub Print_on Elseif B_wert = 50 Then Portd.7 = 0 Gosub Print_off End If Case Else : !nop End Select End Sub Print_on: Print "Pin set high" B_port = 0 B_wert = 0 Return Print_off: Print "Pin set low" B_port = 0 B_wert = 0 Return