extremesports
27.11.2011, 00:16
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:
$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
Momentan funktioniert so gut wie gar nichts... nur die Kontroll LED blinkt und die erste Ausgabe auf dem LCD erscheint...
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:
$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
Momentan funktioniert so gut wie gar nichts... nur die Kontroll LED blinkt und die erste Ausgabe auf dem LCD erscheint...