On the UNO, the USART I/O data pins TXD and RXD of the on-board Mega328 are sensed and used to turn the TX and RX LED's on and off. The alternate port function forces these pins to OUTPUT for the TXD and INPUT for RXD
In a standalone Mega328 circuit using FTDI the FTDI pins 5 (TXD) and 4 (RXD) are normally HIGH when no data is being sent on the programming cable. By placing the cathodes of LEDs on these pins (and using appropriate resistors) a good indication of data transmission can be had since the LEDs blink on when the pins go low.
Presumably the LED current is being sunk by a combination of the UART (in the cable) and the PD1/PD0 pins of the target chip. Scoping the signal I can detect a very slight increase in ring but otherwise no signal degradation or loss.
I can't find any reason in the Mega328 data sheet to indicate this is a bad idea. Is there something I'm overlooking?
I had the same reservation about the fact that the SPI SCK line is on D13 on my Nano , which is connected to the onboard LED through a 1K resistor. That's not something I would have done on a fast clock line, but apparently there are no problems.
ShermanP:
I had the same reservation about the fact that the SPI SCK line is on D13 on my Nano , which is connected to the onboard LED through a 1K resistor. That's not something I would have done on a fast clock line, but apparently there are no problems.
Hmm, that's encouraging. I'm sure we're not the first to have this question.
The Arduinos sense the lines and just do the Tx/Rx LED s with code. I really can't see an issue with this method. Unfortunately it's only valid for the FTDI cable and I'm putting an ICSP header on the board as well. Thought about using a logic chip to deal with it.