MCU can drive the cable, but in order to avoid ringing and to limit current add at least 56-68 Ohms resistor. You may increase it further, but beware that it will cause slower logic transitions. If the inputs on the other end are not schmitt trigger type, funny bussiness may start happening. 1k and 5 meter cable will not give you a very fast edge. Check the specs of the device on the other end.
Thanks! Logic speed is not important at all; what I'm doing is I'm outputting a 2-bit value on two pins which represents a value between 0-3. At the other end of the cable is a 74HC138 3to8 decoder which drives four LEDs, representing the four possible 2-bit values. So I'm not sending fast serial data down the line; it's parallel and
slow. The purpose is to reduce the number of wires required.
Consider using socket for your 328 for quick servicing.
I'm going for an SMD board so sadly no socket, but I will include an ICSP header.
And remember, you can't protect against everything, you need to set a clear goal on what is enough.
So very true! The main thing I want to protect against is user error, where someone assumes the device is 12V powered, or connects 12V by mistake to one of the terminals. Since this is for an automotive environment 12V DC is
everywhere, and can go as high as 16V at times. So that's what the device needs to tolerate. Some ESD protection will be provided by the TVS diodes on the inputs, and I think I'm going to leave the outputs with just a resistor for protection. Perhaps I can get away with lowering the in-line resistors to 470 ohms...