Bascom Serieller Puffer

Soulhunter86

Neues Mitglied
11. Feb. 2012
3
0
0
37
Sprachen
Hallo zusammen!

Ich hoffe ihr könnt mir weiterhelfen, ich verzweifel langsam.
Also zu meinem Vorhaben. Ich möchte gerne Daten von einem TH3122 der am K-Bus angeschlossen ist empfangen. Bisher habe ich alles über ein Terminalprogramm vom PC simuliert. Nun habe ich das Problem, dass immer nur 4 Byte empfangen werden. Komischerweise die ersten drei und das letzte Byte. Völlig egal ist dabei, wie lang das Telegramm ist. Ich habe es schon mit einem Interrupt und "Bytematch = all" versucht. Auch Wenn ich ein Array über den Serialin Puffer lege funktioniert es nicht, es fehlen immer die Bytes nach dem dritten bis zum vorletzten Byte.

Stelle später noch das Programm rein wenns hilft...

Ich hoffe jemand hat einen Tip für mich was ich ändern muss damit alles empfangen wird! :D

Dankeschön, Jan
 
Hallo Jan!

Willkommen, im AVR-Praxis Forum! :ciao:

Den TH3122 kenne ich jetzt gar nicht und ein Datenblatt habe ich auch nicht zur Hand.
Meinst du mit dem K-Bus den Karosserie-Bus am Auto, oder was?
Deine Programmiersprache ist BASCOM?
Wie sieht dein derzeitiger Programmcode denn aus?
Was bedeutet denn genau, du hast alles von einem Terminalprogramm vom PC aus simuliert?

Irgendwie stellen sich mir hier zuviele Fragen, um dir irgendwie helfen zu können. ;)

Wenn es um Basteleien am Auto geht, dann solltest du vielleicht Hemi eine PN schreiben.
Ich meine aber, dass selbst er die Finger vom K-Bus lässt und nur mit dem I-Bus arbeitet.
Allerdings schreibt Hemi seine Programm in C !

Grüße,
Cassio
 
Danke für deine schnelle Antwort ;-)

Ja ist für den I-Bus bzw. für den K-Bus... sollte so ziemlich das selbe seien. Aber habe die TXD Leitung vom USB-Interface direkt an den Hardware UART RXD meines ATMEGA8 angeschlossen. Also ist der TH3122 erstmal außer Funktion.

Ich sende vom Terminal aus ein Telegramm in dem z.b. 6 Byte als Hex formatiert binär übertragen werden. Wenn ich mit einem Terminalprogramm ASCII Zeichen sende ist alles ok. Aber so werden nur 4 Byte empfangen und wie gesagt nur die ersten drei und das letzte byte. Zeige übrigens die empfangenen Hexwerte auf einem LCD an. Selbst im "_rs_bufcountr0" steht maximal 4.

Hier der Code:

'-----------------------------------------------------------------------------------------
'name : lcd.bas
'copyright : (c) 2011, Soulhunter
'micro : Mega8
'-----------------------------------------------------------------------------------------

$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 40
$framesize = 50
$baud = 9600

Config Portb.0 = Output
Config Portb.1 = Output

Config Lcdpin = Pin , Db4 = Portb.6 , Db5 = Portb.7 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
Config Lcd = 16 * 2

Config Com1 = Baud = Dummy , Parity = Even , Stopbits = 1 , Databits = 8
Config Serialin = Buffered , Size = 8 , Bytematch = All


Dim Telegramm As String * 16
Dim Buf_in As Byte
Dim Incoming(8) As Byte At _rs232inbuf0 Overlay

Declare Sub Serial0bytereceived()

Enable Interrupts

Cursor Off Noblink

Cls


Programm:

Do


Telegramm = Hex(incoming(1)) + Hex(incoming(2)) + Hex(incoming(3)) + Hex(incoming(4)) + Hex(incoming(5)) + Hex(incoming(6)) + Hex(incoming(7)) + Hex(incoming(8))

Upperline
Lcd Buf_in

Lowerline
Lcd Telegramm

Buf_in = _rs_bufcountr0


Clear Serialin

Loop


Sub Serial0bytereceived()

Portb.0 = 1
Portb.1 = 0

Waitms 10

Portb.0 = 0
Portb.1 = 0

End Sub
 
Ich fress nen Besen :-D hab den Fehler eben selbst gefunden...
Es lag doch tatsächlich nur an den "Waitms 10" im subscript! Die haben wohl dazu geführt dass eine Bytes so am uC vorbeigerauscht sind ;-)

Danke für deine Hilfe Cassio
 
Ich fress nen Besen :-D hab den Fehler eben selbst gefunden...
Es lag doch tatsächlich nur an den "Waitms 10" im subscript! Die haben wohl dazu geführt dass eine Bytes so am uC vorbeigerauscht sind ;-)

Danke für deine Hilfe Cassio
tja ... Ab und zu muß man nur mal mit nem anderen drüber reden (schreiben) und schon löst sich der Knoten ;)
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)