Unusual USART behaviour on AVR AT90CAN128

Hi,

I have found some unusual USART behaviour when i was trying to send characters from USART1 of my AT90CAN128 to the PC terminal. Below is the code that i have been using for the same. The problem is, what i am getting on my PC hyperterminal is some garbage. I did some calculations and found that there was a difference of 128 between the characters sent and the character received. For example, if i sent 0 i received 128 and if i sent 10 i received 10+128 = 138.

The same code works well with the USART0. Also, i checked the waveforms on my oscilloscope by probing on the controller pin(TXD1) and on the transmit pins of MAX232 (before RS232). The patterns were almost identical. What i was wondering is that whether my USART was corrupt internally?

While on chip debugging with Atmel's JTAG ICE mkII, i found that the USART's data register UDR1, in the IO register window, was still showing zero even when i have put a breakpoint at the place where i was assigning the data to the USART data register for transmitting. Kindly, help me overcome this problem.

#include

#define F_CPU 16000000L // F_CPU = 16MHz #define BAUD 9600 // Baudrate = 9600

void USART1_Init () { /* Set baud rate */ UBRR1H = (unsigned char) (((F_CPU/(16L*BAUD))-1) >> 8); UBRR1L = (unsigned char) ((F_CPU/(16L*BAUD))-1);

/* Set frame format: 8data, no parity & 1 stop bits */ UCSR1C = (0

Reply to
Rav
Loading thread data ...

Make sure the number of bits per byte, number of stop bits, and parity matches on the sender and receiver.

It's tempting to blame the UART but always exhaust all SW root cause possibilities first. It's embarrassing to call the tech support line and then later be shown the mistake is in SW.

JJS

Reply to
John Speth

If you have one that works, and one that does not, try running both at the same time, and compare the outputs with the scope. You can also try deliberate skew of the Baud divider to values either side of ideal, to check margins.

-jg

Reply to
Jim Granville

[... USART problems ...]
Reply to
Dave Hansen

My apologies. It had been corrected to UCSR1C = (0

Reply to
Rav

Reply to
Dave Hansen

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.