Forum: Mikrocontroller und Digitale Elektronik Datenübertragung/Auswertung funktioniert nicht (Bascom)


von JoJo (Gast)


Lesenswert?

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

von Jonathan L. (ext)


Lesenswert?

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
Noch kein Account? Hier anmelden.