A microcontroller (202a; 202b) having a node (504, 604, 704, 804, 904, 1004, 1104) that is current limited, comprising: an input/output node (504; 604; 704; 804; 904; 1004; 1104); a configuration register (758; 858); an input/output driver circuit coupled with the input/output node (504; 604; 704; 804; 904; 1004; 1104) controlled by the configuration register (758; 858) of said microcontroller (202a; 202b), wherein the input/output driver circuit is configurable through said configuration register (758; 858) to operate as a digital output driver without current control or as an output driver with current control; wherein the input/output driver circuit comprises a high side drive circuit (702; 802), a low side drive circuit (708; 808), multiplexers (706, 710; 806, 808) and a programmable constant current circuit (514; 614; 712; 812) coupled to the multiplexers (706, 710; 806, 808), wherein, when configured to operate as an output driver without current control, the multiplexers (706, 710; 806, 808) are controlled to couple the high side drive circuit (702; 802) and the low side drive circuit (708; 808) with the input/output node (504; 604; 704; 804; 904; 1004; 1104) and decouple the programmable constant current circuit (514; 614; 712; 812) from the input/output node (504; 604; 704; 804; 904; 1004; 1104), and wherein, when configured to operate as an output driver with current control, the multiplexers (706, 710; 806, 808) are controlled to decouple the high side drive circuit (702; 802) or the low side drive circuit (708; 808) and to couple the programmable constant current circuit (514; 614; 712; 812) with the input/output node (504; 604; 704; 804; 904; 1004; 1104)wherein the programmable constant current circuit (514; 614; 712; 812)is configured to control the amount of current provided by the high side drive circuit (702; 802) or the low side drive circuit (708; 808) through the input/output node (504; 604; 704; 804; 904; 1004; 1104) to a current value that is programmed into the programmable constant current circuit (514; 614; 712; 812). an input/output node (504; 604; 704; 804; 904; 1004; 1104); a configuration register (758; 858); an input/output driver circuit coupled with the input/output node (504; 604; 704; 804; 904; 1004; 1104) controlled by the configuration register (758; 858) of said microcontroller (202a; 202b), wherein the input/output driver circuit is configurable through said configuration register (758; 858) to operate as a digital output driver without current control or as an output driver with current control; wherein the input/output driver circuit comprises a high side drive circuit (702; 802), a low side drive circuit (708; 808), multiplexers (706, 710; 806, 808) and a programmable constant current circuit (514; 614; 712; 812) coupled to the multiplexers (706, 710; 806, 808), wherein, when configured to operate as an output driver without current control, the multiplexers (706, 710; 806, 808) are controlled to couple the high side drive circuit (702; 802) and the low side drive circuit (708; 808) with the input/output node (504; 604; 704; 804; 904; 1004; 1104) and decouple the programmable constant current circuit (514; 614; 712; 812) from the input/output node (504; 604; 704; 804; 904; 1004; 1104), and wherein, when configured to operate as an output driver with current control, the multiplexers (706, 710; 806, 808) are controlled to decouple the high side drive circuit (702; 802) or the low side drive circuit (708; 808) and to couple the programmable constant current circuit (514; 614; 712; 812) with the input/output node (504; 604; 704; 804; 904; 1004; 1104)wherein the programmable constant current circuit (514; 614; 712; 812)is configured to control the amount of current provided by the high side drive circuit (702; 802) or the low side drive circuit (708; 808) through the input/output node (504; 604; 704; 804; 904; 1004; 1104) to a current value that is programmed into the programmable constant current circuit (514; 614; 712; 812).