RX TX connecting second arduino on shield

I'm currently working on a project that involves a arduino(freeduino) with a extra ATmega328P on a shield. They serial communicate trough the TX & RX.

As you may know or not know, to combine/connect two arduino's you have to cross those two. Tx connected with RX and RX with TX.

But you can see TX as a output or as a input. Here you can find a good discussion about it.http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1270994948

As I was working on my project I clarified that I cross connected them. The TX of my arduino board went to the RX of the ATmega328P chip. And the same for RX.

But did it worked? Nope. Since I have a Freeduino and they just labeled TX and RX the opposite, it didn't worked. It took me too long to find this problem. And it ain't funny when you just soldered 3 hours of smd parts by hand, just to find out that there are two lines wrong. And yes I breadboarded everything and it worked well. Luckily there was enough space to solder some two bridge wires on to the board.

Hope you don't make the same mistake, thats why I post this threat.

Whether the pins should be labeled TX or RX depends on your perspective. I suppose that the Freeduino has a different perspective than the Arduino.

What is the Arduino on the Arduino shield doing? Can you post a sketch of what did work?

As you may know or not know, to combine/connect two arduino's you have to cross those two. Tx connected with RX and RX with TX.

You also have to know to connect the common grounds on the two boards together.

As it is a matter of crossing I/O 0 and 1 there should have been never any confusion at all; but sometimes one does not see this - the power of the written words, and be they cryptic acronyms ;D

The general theory for labeling comes from the fact that you have DCEs and DTEs (http://ckp.made-it.com/dtedce.html). The labeling has to be done from the point of view of the DTE! A DTE has to be plugged into a DCE (or a "modem"), which is connected to a black-box web where magically "send" turns to "receive" and vice versa.

It is not possible to connect two DTEs, you always have to have two DCEs inbetween, which can be realized by a crossing of lines in the most simple case, which is called "null-modem". Note there are more signals to be considered in the general case. All data transfer elements between DTE and DCE have to have consistent labels. E.g. if a USB/TTL breakout board is serving the RCV line of the Arduino, this line is RCV, even if this board might have the feeling that it "transmits" something to the Arduino.

Alas, not all manufactures of PCBs are aware of this quite arcane IT philosophy ;D