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.
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 (DTE and DCE). 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