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
So, jetzt hab ich es sogar geschafft mich einzuloggen, also nicht wundern, warum ich den Thread als Gast eröffnet hab - bei mir hings grad iwie... Ich muss noch zum Code erwähnen, dass er so wie er jetzt gepostet is noch nicht komplett lief. Er lief mal ohne die LCD Bestandteile und da hat dann das schalten der an die Pins angeschlossenen LEDs über Hyperterm -> USB to UART auch funktioniert. Jetzt is die dauerhaft blinkende Kontroll LED und das LCD das einzige was funktionniert...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.