Hi zusammen, ich habe hier ein BT Modul welches sich über die UART Schnittselle konfigurieren lässt und dafür ein UART Break braucht um in den Command Mode(so heisst der) zu kommen. Nun habe ich hier im Forum gesucht und auch eine Anleitung gefunden wie ich solch einen Break erzeuge. Baudrate halbieren und ein 0x00 senden. Allerdings bin ich mir nicht sicher ob das was ich da sende auch dem entspricht. Ich habe mal das Signal mit dem Oszi aufgezeichnet und angehängt. Es wäre super wenn mir jemand sagen könnte ob es dem entspricht was ich brauche bzw. wenn es nicht stimmt, ein Bild anhängen auf dem ich sehe wie das aussehen muss. Gruß monofone
also klassisch wird ein Break durch 0x00 dargestellt. Wozu man da noch die Baudrate halbieren sollte bleibt mir verborgen. War vielleicht nur für einen speziellen Anwendungsfall gedacht. Eigentlich sollte dir das Datenblatt zu dem Modul Auskunft darüber geben wie das Ding gesteuert werden kann. bye Frank
wie die Steuerbefehle aussehen sollen geht aus dem Datenblatt hervor, ich fragte mich jetzt nur gerade ob "mein" UART Break so korrekt ist. Aber wenn es ein einfaches ASCII NULL sein soll frage ich mich auch wie man transparent eine 0x00 über die Leitung übertragen kann. Denn ich bin ja bei einer UART Schnittstelle nicht darauf angewiesen nur ASCII zeichen zu senden, smoit würde bei jeder 0x00 ein Break ausgelöst werden, das kann ich mir ehrlich gesagt schlecht vorstellen. Hier der Thread dazu Beitrag "UART Break" Gruß Sören
Das mit dem baudrate halbieren ist schon eine gute Idee, da ein Break ein Null-Signal von mindestens einer Bytedauer ist. Wenn man nur 0x00 sendet kommt ja das Stop-Bit und das ist 1. gruß Jörg
Nun, ein einfaches NULL wird kein Break ersetzen. Ein Break setzt die Datenleitung auf "1", und zwar länger als jedes übertragene Byte. Google liefert schnell: "An RS-232 "break" signal is used to obtain the processor's attention. This signal consists of the RS-232 line being continually high (+12V, logical zero) for a period exceeding a normal character time. While break signals are passed through the switch, they are monitored, and if the length of a break exceeds a threshold, it is considered a request to enter command mode. The threshold is programmable for each port, in icrements of 10 milliseconds."
Danke Jörg, also gehe ich recht in der Annahme das, mein Signal ein korrektes UART Break ist? Achso vll. noch die Werte ich sende auf 9600 und beim Break auf 4800 baud/s. danke Sören
Und auch nochmal ein dickes Danke an Bernd, ich hoffe das war jetzt nicht der Votrag über suchen und nachdenken vorm schreiben ;-) Ich habe natürlich auch google bemüht bin nur leider nicht auf die Idee gekommen nach einem rs232 break zu suchen. manchmal sind es die kleinen dinge die einen aufhalten.
oder hier: http://www.lookrs232.com/rs232/waveforms.htm logisch "0" wäre richtig (von mir). Es gibt also ein Startbit, aber kein Stopbit...
So wie es aussieht komme ich mit meinem code nicht zu dem erwünschten erfolg: void send_uartbreak(serial *interface){ //set baudrate to half of original rate tWord baud = FRQ / (4800 *16L) -1; *interface->ubrrh = (tByte) (baud >> 8); *interface->ubrrl = (tByte) baud; //send ASCII NULL *interface->udr = 0x00; //restore original baudrate baud = FRQ / (UART_BAUD_RATE *16L) -1; *interface->ubrrh = (tByte) (baud >> 8); *interface->ubrrl = (tByte) baud; } ist das ein zu schneller wechsel zwischen den baudraten so das das interface schon wieder auf 9600 arbeitet bevor das zeichen überhaupt gesendet wurde ?
Sören Roh wrote: > ist das ein zu schneller wechsel zwischen den baudraten so das das > interface schon wieder auf 9600 arbeitet bevor das zeichen überhaupt > gesendet wurde ? ...das kann gut sein. Du solltest nach dem Senden des Nullbytes warten, bis das TX-Shiftregister leer ist bevor Du die Baudrate wieder umschaltest.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.