Forum: Mikrocontroller und Digitale Elektronik Usart mit 9Bit in Bascom; Daten an Terminal schicken


von Humsti (Gast)


Lesenswert?

Hallo,

ich habe wieder mal ein Problem und komme einfach nicht weiter.

Zur Hardware: Ich habe eine kleine Terminalbox mit einem M8 und einem 
LCD.

Nun möchte ich von meinem Board (MYAVR) an dieses Terminal was senden 
und dieses soll auf dem 2x16LCd angezeigt werden.

Das Protokoll ist ein 9P1.

Was ich weis ist, dass ich ein Paket mit 34 Bytes senden muss. Das erste 
und das letzte Byte ist ein Steuerbyte mit dem neunten Bit=0. Die 
restlichen 32 Byte dazwischen sind Textbytes und haben beim neunten Bit 
=1. Das ist der Text, der nachher auf dem 2x16 Display angezeigt wird.

Verwendet wird eine 1-wire RS232 Verbindung.

Nun habe ich absolut keinen Plan, wie ich das senden soll. Das 
Signalkabel ist sowohl auf dem TX als auch auf dem RX Pin des M8.

Was ich herausgefunden habe ist, dass ich das neunte Bit in das TXB8 des 
UCSRB schreiben muss und natürlich vorher noch das TXEN einschalten 
muss. Danach muss ich meine Daten in das UDR schreiben.

Doch wie ich das in BAscom anstelle weis ich leider gar nicht...Ich 
hoffe auf einen guten Rat von euch. Bin echt schon verzweifelt.

Danke,
Daniel

von Humsti (Gast)


Lesenswert?

Hat denn niemand eine Idee von euch?

Ich bin leider Neuling in Bascom, aber für euch Profis sollte das ja 
super schnell gehen ;o)

LG

von STK500-Besitzer (Gast)


Lesenswert?

>Ich bin leider Neuling in Bascom, aber für euch Profis sollte das ja
>super schnell gehen ;o)

Ich habe auch keine Ahnung von Bascom, aber im Datenblatt des 
Controllers steht, wie man 9bit-Kommunikation aufbaut.
Dann muss man nur noch ein paar magische Worte in Bascom eintippen und 
alles ist gut.

von Humsti (Gast)


Lesenswert?

jaja die magischen worte ;o)
die fehlen mir...leider

Aber kannst du mir vielleicht mitteilen, wie ich ein byte definiere, 
damit es 9 bit hat? oder besser, was muss ich tun, wenn ich zb. den 
Buchstaben "A" einmal mit dem 9.Bit=1 und einmal mit dem 9.bit=0 
übertragen kann? Wie kann ich dem Buchstaben A die Bits zuweisen?

Ein Programmierer wird sich jetzt sicher fragen, Mann, was will der denn 
;o)

Lg

von spess53 (Gast)


Lesenswert?

Hi

>Aber kannst du mir vielleicht mitteilen, wie ich ein byte definiere,
>damit es 9 bit hat? oder besser, was muss ich tun, wenn ich zb. den
>Buchstaben "A" einmal mit dem 9.Bit=1 und einmal mit dem 9.bit=0
>übertragen kann? Wie kann ich dem Buchstaben A die Bits zuweisen?

Ich habe eigentlich auch keine Ahnung von Bascom. Aber es unterstützt 
doch laut Bascom-Hilfe den 9-Bit-Mode ->'config com1/com2/comx'. Eine 
andere Variante wäre, die UART-Register direkt zu beschreiben (evtl 
ASM). Dann hast du die volle Kontrolle.

MfG Spess

von Avr N. (avrnix) Benutzerseite


Lesenswert?

Steht doch in der Hilfe in Bascom -> Index -> Config com1

Action

Configures the UART of AVR chips that have an extended UART like the M8.

Syntax

CONFIG COM1 = baud , 
synchrone=0|1,parity=none|disabled|even|odd,stopbits=1|2,databits=4|6|7| 
8|9,clockpol=0|1

Remarks

baud
 Baud rate to use. Use 'dummy' to leave the baud rate at the $baud 
value.

synchrone
 0 for asynchrone operation (default) and 1 for synchrone operation.

Parity
 None, disabled, even or odd

Stopbits
 The number of stop bits : 1 or 2

Databits
 The number of data bits : 4,5,7,8 or 9.

Clockpol
 Clock polarity. 0 or 1.

http://www.comwebnet.de

von Humsti (Gast)


Lesenswert?

Vielen Dank,

das hilft gut weiter, das hab ich schon einprogrammiert!

Kann ich nun mit dem Einfachen Print Befehl Bytes wegschicken?

Oder muss ich, wie in der M8 Doku, hier mit den Registern arbeiten wie 
ucsrb, TXB8? oder macht das eben schon bascom mit dem config com?

Ich weis, für euch triviale Fragen, aber jeder muss mal klein anfangen!

Lg

von Humsti (Gast)


Lesenswert?

ah, ich seh gerade mit print alleine sollte das funktionieren....

von Humsti (Gast)


Lesenswert?

Bitte noch einmal um Hilfe:

Angenommen ich muss folgendes senden:

/FE/Hallo ich bin noch ein Neuling../FF/

Das sind 34 bytes, das erste byte und das letzte byte ist ein 
Steuerzeichen.(HEX) Da gehört Bit9=0.
Dazwischen die 32bytes sind Textzeichen.Da gehört Bit9=1.

Sonst kennt sich das Terminal nicht aus.

Könnt ihr mir bitte nun helfen, wie ich das mit dem 9.bit zuordne, damit 
es einmal 0 und einmal 1 ist?

Dann wäre ich fertig ;o)

DANKE!
Lg

von Simon K. (simon) Benutzerseite


Lesenswert?

Musst du im entsprechenden UART Register setzen. Was steht denn in der 
BASCOM Hilfe dazu?

von Chris W. (verleihnix85)


Lesenswert?

So wie ich das sehe willst du etwas auf der Jeti box anzeigen.
Ich komm selber nicht weiter. Das 9. bit ist bei mir in C kein Problem. 
Hast du schon was erreicht? Bei mir kommt immer Communication Error.

Gruß Christian

von spess53 (Gast)


Lesenswert?

Hi

Meines Wissens kann der PC keine 9-Bit.

MfG Spess

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.