Maker Pro
Maker Pro

Using UART with a Fujitsu microcontroller

  • Thread starter Susanne Fischer
  • Start date
S

Susanne Fischer

Jan 1, 1970
0
Hi!

I have a MB90F347 microcontroller from Fujitsu and am trying to
communicate over UART. Everything works fine, if I transmit only
values from 1 to 255. But I'm not able to send a 0 (0x00).
I really don't understand why this doesn't work. Also in the hardware
manual and in the application notes I can't find any hint on that.

....
// initialize UART0
BGR0 = 1666; // 9600 Baud @ 16MHz
SCR0 = 0x17; // 8N1
SMR0 = 0x0d; // enable SOT3, Reset, normal mode
SSR0 = 0x00; // LSB first
....
while (SSR0_TDRE == 0); // wait for transmit buffer empty
TDR0 = 0x01; // this works fine

while (SSR0_TDRE == 0);
TDR0 = 0x00; // nothing happens here... WHY?
....



Thank you very much for your help in advance,
Susanne Fischer
 
S

Steve O'Neill

Jan 1, 1970
0
Hi!

I have a MB90F347 microcontroller from Fujitsu and am trying to
communicate over UART. Everything works fine, if I transmit only
values from 1 to 255. But I'm not able to send a 0 (0x00).
I really don't understand why this doesn't work. Also in the hardware
manual and in the application notes I can't find any hint on that.

...
// initialize UART0
BGR0 = 1666; // 9600 Baud @ 16MHz
SCR0 = 0x17; // 8N1
SMR0 = 0x0d; // enable SOT3, Reset, normal mode
SSR0 = 0x00; // LSB first
...
while (SSR0_TDRE == 0); // wait for transmit buffer empty
TDR0 = 0x01; // this works fine

while (SSR0_TDRE == 0);
TDR0 = 0x00; // nothing happens here... WHY?
...



Thank you very much for your help in advance,
Susanne Fischer

What, exactly, do you mean by "nothing happens"? Are you 'scoping the
output, or are you waiting to see something at the receiver? If it's the
latter, are you sure that the receiver isn't simply seeing an all-zero byte
as 'break' and throwing it away?

Steve O'Neill
 
S

Susanne Fischer

Jan 1, 1970
0
What, exactly, do you mean by "nothing happens"? Are you 'scoping the
output, or are you waiting to see something at the receiver? If it's the
latter, are you sure that the receiver isn't simply seeing an all-zero byte
as 'break' and throwing it away?

Steve O'Neill


Now I found the problem. My terminal software on the PC side doesn't
show the 0x00 (maybe it looks as if the receiving buffer is empty?).
I also had some hardware problem which made the zero never arrive at
my receiver (different GND potential on my PC and battery-driven robot
which made it not work).
Now I made everything battery-powered and everything works fine!

Susanne Fischer
 
Q

Quack

Jan 1, 1970
0
Now I made everything battery-powered and everything works fine!

You ran your computer on batteries ? :)
wouldnt it be easier to just connect gnd.

I had a similar problem before, but the other way around. Very few
emulation software allowa you to send 0x00.
 
S

Susanne Fischer

Jan 1, 1970
0
[email protected] (Quack) wrote in message news: said:
You ran your computer on batteries ? :)
wouldnt it be easier to just connect gnd.

I had a similar problem before, but the other way around. Very few
emulation software allowa you to send 0x00.


First I used a microcontroller connected to my PC and to a robot
(using two UARTs). There only the robot was battery-powered.
And I did connect GND. The problem was, that there still was a high
enough current when everything should be off. So e.g. the motors
always ran...
This problem disappeared when I connected the microcontroller to the
robot batteries and ran my program only there (without the PC being
connected to the whole thing). Somehow strange, but that's the way it
works now.

I use a very good freeware terminal program called SuperTerm (at
www.mpfreezone.com). You can do everything with it really simple. Also
send strings or bytes (also the 0x00). It also shows the received
hex-values (not only characters as all the others). Only
receiving/showing the 0x00 doesn't work.


Susanne Fischer
 
Top