Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

Multiple UARTs in ATMega161

Status
Not open for further replies.

jetal

Junior Member level 1
Joined
Apr 20, 2002
Messages
17
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Australia
Activity points
125
I am contemplating on how to write an experimental application in C that uses both hardware UARTs in the Mega161 AVR chip. I will be using ICC AVR for development.

From the ICCAVR help file/manual, I can see that I can use putchar() and getchar() to send and receive characters. However these functions do not define which UART the character is being sent to or received from.

To me it looks like I have to write my own modified putchar0() and putchar1() functions to write to the different UARTs and similar for receiving. I can see that its not a difficult job doing this, but is this the easiest method or is there something better?

If anyone has done something similar it would be nice to see a code snippet.
 

Stark

Member level 2
Joined
Aug 10, 2001
Messages
51
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
342
Yes it is true,but you will experience you can't use standard formatter such as printf() because it recalls lower level function such as putchar()
Stark
 

jetal

Junior Member level 1
Joined
Apr 20, 2002
Messages
17
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
Australia
Activity points
125
I do understand that higher level functions like printf() call lower level functions like putchar() and if I were to output a string with puts() it would also invoke putchar().

I have done custom putchar() to implement an interrupt driven putchar() in an 8051. This did not replace the library putchar() - I gave my function a different name.

The real point of my query: is this the most elegant or efficient or best way? I am a "raw" programmer and I'd like to know how someone with more experience would approach the problem.
 

johnyaya

Full Member level 2
Joined
May 30, 2001
Messages
126
Helped
17
Reputation
34
Reaction score
0
Trophy points
1,296
Location
YoyoDyne
Activity points
1,109
I would generate write and read functions that accept parameters for port number and data to send (ie. wrSIO(port,length,char*) ). Independent buffers for each uart. Seperate interrupt driven low-level routines for I/O. Don't use printf() to format, use sprintf().
 

Status
Not open for further replies.
Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top