Hallo,
ich bin verzweifelt... Hab eben mal wieder mein Projekt hervorgeholt (an dem ich seit Juli nicht mehr gearbeitet hab) und jetzt funktioniert nichts mehr.
Vielleicht bin ich einfach zu blind den Fehler zu finden.
Das ganze soll ermöglichen über einen USB-to-UART Converter Pins schalten zu können...
Hier mal der Code:
Momentan funktioniert so gut wie gar nichts... nur die Kontroll LED blinkt und die erste Ausgabe auf dem LCD erscheint...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 * 5 '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 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 Loop End 'end program Sub Serial0charmatch() Input Incoming_data Noecho ' Daten aus Buffer auslesen 'Print Incoming_data 'Ausgabe zu Debuggingzwecken Verarbeiten Clear Serialin ' Buffer leeren End Sub Sub Verarbeiten() Port = Left(incoming_data , 2) 'Byte 2 und 3 extrahieren Wert = Mid(incoming_data , 3 , 2) 'Byte 4 und 5 extrahieren B_port = Val(port) 'String zu Wert konvertieren B_wert = Val(wert) Print "Port " ; B_port ; "Wert " ; B_wert 'Ausgabe zu Debuggingzwecken 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 50 : 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" Return Print_off: Print "Pin set low" Return







Zitieren

Lesezeichen