PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stop bit bei UART



Import-Script
04.01.2002, 23:36
Hallo <BR>ich m&ouml;chte &uuml;ber die UART meines 89c51 einen Servo Controller IC anschlie&szlig;en, der bis zu 5 servos verwalten kann. &#40;ft693 <A HREF="http://www.ferrettronics.com/docs/FT639/ft639.pdf" TARGET="_top">http://www.ferrettronics.com/docs/FT639/ft639.pdf</A> &#41; <BR>Naja auf jeden Fall hab&#39; ich jetzt mithilfe des Codegenerators von erikbuchmann.de ein Programm geschrieben, dass ein paar Zahlen &#40;die man halt so zum initialisieren braucht&#41; an diesen sauteuren IC schickt &#40;33,-&#41;. Das klappt nat&uuml;rlich mal wieder nicht. Das Programm ist eigentlich recht simpel, aber ich hab&#39; das stopbit &#34;vergessen&#34;, dass die im Datenblatt unbedingt wollen. Ich sch&auml;tze es liegt daran. Wie kann ich das ber&uuml;cksichtigen und was ist das eigentlich?? <BR> <BR>mfg

Import-Script
05.01.2002, 19:57
hi! Habe eine C-Sourcecode f&uuml;r den 80C515C,mit dem wird ein serielles Terminal angesteuert. <BR> <BR>Zum UART: <BR>Es wird der SerialMode 1 im SCON gew&auml;hlt: <BR> start bit...8 data bits...sop bit <BR>Die BaudRate wird mittels Timer1 erzeugt <BR> <BR>void SIO_Init &#40; void &#41; <BR>{ <BR> SCON &amp;= 0x00 ; <BR> SCON &#124;= 0x54 ; // 0101 0100 <BR> <BR> ADCON &amp;= 0x00 ; // clear BD, Baudrate mit Timer1 generieren <BR> <BR> PCON &amp;= 0x00 ; <BR> PCON &#124;= 0x80 ; // Set SMOD <BR> <BR> RI = 0 ; <BR> TI = 0 ; <BR> <BR>} <BR> <BR> <BR>void InterruptInit &#40; void &#41; <BR>{ <BR> EAL = 1 ; <BR>} <BR> <BR> <BR>/&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; &#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; <BR>&#42; Sendet Byte auf SIO <BR>&#42;/ <BR>char SIO_Put&#40; unsigned char c&#41; // Byte das gesendet wird <BR>{ <BR> TI = 0 ; // Clear Transmitter Interrupt <BR> <BR> SBUF = c ; // Write character into Serial Buffer <BR> <BR> while &#40; !TI &#41; ; // Loop while transmitting <BR> <BR> return &#40; 0 &#41; ; <BR> <BR>} <BR> <BR> <BR>/&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; &#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42;&#42; <BR>&#42; Gibt empfangenes Zeichen zurueck <BR>&#42;/ <BR>unsigned char // 0x00: falls kein Zeichen vorhanden, sonst Zeichen <BR> <BR>SIO_Get&#40; void &#41; <BR>{ <BR> unsigned char tmp ; <BR> <BR> if &#40; RI &#41; // wenn Zeichen empfangen wurde <BR> { <BR> tmp = SBUF ; <BR> RI = 0 ; <BR> } <BR> else <BR> tmp = 0x00 ; <BR> <BR> return &#40; tmp &#41; ; <BR>} <BR> <BR>mike

Import-Script
06.01.2002, 18:24
Vielen Dank mike f&uuml;r das Listening <BR>ich hab&#39;s mir mal angeschaut - blick aber &uuml;berhaupt nicht durch, da ich gerade erst C lerne. <BR>Auf Erikbuchmann.de gibt es auch eine Software UART, bei der sich ein Stopbit setzten l&auml;sst. Das funktioniert aber auch nicht - warum wei&szlig; ich nicht. Hardwarema&szlig;ig hab&#39; ich den IC ausprobiert und &uuml;ber eine Software, die auf dem PC l&auml;uft ausprobiert - funktioniert einwandfrei. <BR> <BR>Softwareschrieben ist ein dumme Sache - es ist so endlos mann wei&szlig; nie wann man endlich fertig ist..... <BR> <BR>Viele Gr&uuml;&szlig;e <BR>Christian