From: Georg R. <geo...@ui...> - 2001-12-05 23:47:04
|
Good evening! After a frustrating day I'm looking for some hints and advice. So If you ever used a SAB80C5XX you might be a good victim ;-). I tried to get things running on my Phytec dev. board (utilizing a SAB80C515C, fosc=10Mhz). First point: Baud rate. I cannot get baud rates above 4800 running using the internal baud rate generator. How far can the real baud rate be off the desired val so that it still works? With f_osc=10Mhz I get e.g. 18939 instead of 19200, too much probably. Ok. But: the Flashtool (the Phytec tool to program the eeprom from DOS) says it does communication with 19200. How do they manage? Second point: Has a bit diffuse appearance, I don't know exactly what's going on. Things first work when adding new code fragments or some more complex code (using not only sfrs and char vars or even a isr routine) things stop working. I can blink with a port. No problem. I added a putchar fn (implemented: a wait for TI flag and setting SBUF); in the program start initialization for the baud rate generator and switching on everything. Strange enough the ser.h or serial.h (with changing the timer rates of course) didn't work out of the box. So characters come out of the thing, using putchar('x'). I also can use a printf_fast("bla"); fine. (BTW what is the code to make a terminal go to the *begining* of the next line? "\n" is not enough in my terminal, it only moves the cursor one line down) Using printf I only get garbage on the serial port. I vaguely can remember that I used this fn a long time ago without problems. So I kept using printf_fast. Trying to write out some numbers with ("%4u", uIntNumber) gives strange results. (or is it %d or %i?) Seems only to work for chars maximum I get is 255. I guess it's a small variant of printf. Any ideas. I think all the code in the libs works more or less flawlessly. So the printf definitely is ok (although not documented, or is it? ;-)). But what could be my the problem? I use a compile command: sdcc test1.c -I/opt/sdcc-2.3.0/share/sdcc/include/ -L/opt/sdcc-2.3.0/share/sdcc/lib/ And get a nice .ihx file. I also tried to run the example code that Michael Schmitt has put to OKR. I also get only garbage output. (he used --stack-after-data --large-...) (settings to 4800 baud, which I go working before.) So long, Georg |
From: ben k. <bk...@oz...> - 2001-12-06 00:26:46
|
re: baud rates above 4800: I'm not familiar with the particular chip, so this might not be of much help.... Try using Timer 2 to generate baud rates instead of Timer 1. Timer two works in a 16 bit reload mode which gives you more flexibility in timing. > a printf_fast("bla"); fine. (BTW what is the code to make a terminal go > to the *begining* of the next line? "\n" is not enough in my terminal, > it only moves the cursor one line down) \n is Newline / Line feed. \r is Carraige Return. So try \n\r .... :) b bk...@oz... -- Anyone who is capable of getting themselves made President should on no account be allowed to do the job. -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy" |
From: Karl B. <ka...@tu...> - 2001-12-06 01:29:54
|
Hi Georg, Baud rates will work up to a maximum of 5% difference in bit rate. So at 19200, 20160 would barely talk to 19200. Or 18240 would barely talk to 19200. You should shoot for at least 2.5% within the target bit rate to allow for some deviation on both sides. This is based on 10 bits per byte(8N1), where each byte gets synchronized with the start bit, so in 10 bits if you are off by 5%, then after 10 bits you are off by 50%. Uarts try to sync at the center of the bit. For a serial port sanity check, try the sdcc/device/examples/mcs51/simple2/hi.c, its known to work on basic MCS51 hardware. Karl. Georg Ritter wrote: max >Good evening! > >After a frustrating day I'm looking for some hints and advice. So If you >ever used a SAB80C5XX you might be a good victim ;-). > >I tried to get things running on my Phytec dev. board (utilizing a >SAB80C515C, fosc=10Mhz). > >First point: Baud rate. >I cannot get baud rates above 4800 running using the internal baud rate >generator. How far can the real baud rate be off the desired val so that >it still works? With f_osc=10Mhz I get e.g. 18939 instead of 19200, too >much probably. Ok. But: the Flashtool (the Phytec tool to program the >eeprom from DOS) says it does communication with 19200. How do they >manage? > >Second point: >Has a bit diffuse appearance, I don't know exactly what's going on. >Things first work when adding new code fragments or some more complex >code (using not only sfrs and char vars or even a isr routine) things >stop working. > >I can blink with a port. No problem. >I added a putchar fn (implemented: a wait for TI flag and setting SBUF); >in the program start initialization for the baud rate generator and >switching on everything. >Strange enough the ser.h or serial.h (with changing the timer rates of >course) didn't work out of the box. >So characters come out of the thing, using putchar('x'). I also can use >a printf_fast("bla"); fine. (BTW what is the code to make a terminal go >to the *begining* of the next line? "\n" is not enough in my terminal, >it only moves the cursor one line down) >Using printf I only get garbage on the serial port. I vaguely can >remember that I used this fn a long time ago without problems. > >So I kept using printf_fast. Trying to write out some numbers with >("%4u", uIntNumber) gives strange results. (or is it %d or %i?) Seems >only to work for chars maximum I get is 255. I guess it's a small >variant of printf. > >Any ideas. I think all the code in the libs works more or less >flawlessly. So the printf definitely is ok (although not documented, or >is it? ;-)). But what could be my the problem? > >I use a compile command: > sdcc test1.c -I/opt/sdcc-2.3.0/share/sdcc/include/ >-L/opt/sdcc-2.3.0/share/sdcc/lib/ >And get a nice .ihx file. > >I also tried to run the example code that Michael Schmitt has put to >OKR. I also get only garbage output. (he used --stack-after-data >--large-...) (settings to 4800 baud, which I go working before.) > > >So long, > > Georg > > >_______________________________________________ >Sdcc-user mailing list >Sdc...@li... >https://lists.sourceforge.net/lists/listinfo/sdcc-user > > |
From: Gernot.Fink <g....@gm...> - 2001-12-06 05:27:57
|
On Tue, 05 Feb 2002, you wrote: >Good evening! > >After a frustrating day I'm looking for some hints and advice. So If you >ever used a SAB80C5XX you might be a good victim ;-). > >I tried to get things running on my Phytec dev. board (utilizing a >SAB80C515C, fosc=10Mhz). > >First point: Baud rate. >I cannot get baud rates above 4800 running using the internal baud rate >generator. How far can the real baud rate be off the desired val so that >it still works? With f_osc=10Mhz I get e.g. 18939 instead of 19200, too >much probably. Ok. But: the Flashtool (the Phytec tool to program the >eeprom from DOS) says it does communication with 19200. How do they >manage? >ddddddddd Can you use a 12 MHZ Quartz for use with the buildin Baudrategenerator? The 515 have a builtin fixed Baudrategenerate which is OSZ/39 ->19200 Baud and a switchable divider /2 ->9600 Baud. If you want to use Timer 1 or 2 for the baudrate then a 38400*12*16=7.37280 MHZ Clock is ideal (max 38400 Baud). Gernot |
From: Lars W. <la...@la...> - 2001-12-06 07:17:30
|
Hi, (see below) > >After a frustrating day I'm looking for some hints and advice. So If you > >ever used a SAB80C5XX you might be a good victim ;-). > > > >I tried to get things running on my Phytec dev. board (utilizing a > >SAB80C515C, fosc=10Mhz). > > > >First point: Baud rate. > >I cannot get baud rates above 4800 running using the internal baud rate > >generator. How far can the real baud rate be off the desired val so that > >it still works? With f_osc=10Mhz I get e.g. 18939 instead of 19200, too > >much probably. Ok. But: the Flashtool (the Phytec tool to program the > >eeprom from DOS) says it does communication with 19200. How do they > >manage? > >ddddddddd > > Can you use a 12 MHZ Quartz for use with the buildin Baudrategenerator? Not possible, the C515C has max 10Mhz! > The 515 have a builtin fixed Baudrategenerate which is OSZ/39 ->19200 Baud > and a switchable divider /2 ->9600 Baud. > > If you want to use Timer 1 or 2 for the baudrate then a 38400*12*16=7.37280 MHZ > Clock is ideal (max 38400 Baud). I have my own C515C board with 10Mhz and use 19200baud, using these figures: Internal baud rate generator. 0x03F0 (SRELH/SRELL) -> 19531 baud 1.7% deviation. Setting the "Divide by 2" flag. /Lars ---------------------------------------------------------- LAWICEL Phone : +46 (0)451 - 598 77 Lars Wictorsson Fax : +46 (0)451 - 598 78 E-mail: la...@la... WWW : http://www.lawicel.com Embedded hardware/software together with 8051/C16x/AVR and smart distributed I/O with Controller Area Network (CAN). Need rapid CAN development?, check out www.candip.com ---------------------------------------------------------- |
From: Georg R. <geo...@ui...> - 2001-12-06 15:30:01
|
Hi, thanks all for your replies! I managed to get things working. After using the --large-MM everything started to work out as it should. The serial comm. just worked starting over this morning. Perhaps the Laptop UART got confused at one point an only needed a power-up :-(. Whatever. I can transmit now with 19200. Yeaah. Ok so long, Georg |