mosfet AVR Pin Dual Use: Input and Output at (seemingly) the same time

  
Inside:
Repository
A bicycle light control circuit which reads in various buttons and sets various outputs accordingly such as headlight, taillight, blinkers, etc. My current design is based around an ATtiny24 ( Datasheet ) using the internal oscillator (8MHz), programmed in C using AVR-GCC. I would like to keep external components such as shift registers to a minimum. Resistors are OK since they are cheap and small, and I am using
mosfet AVR Pin Dual Use: Input and Output at (seemingly) the same time - schematic

MOSFETs (NTD4960N: Datasheet ) to drive the LED banks. Essentially, what I am looking to do is drive the MOSFETs with a 200Hz PWM signal to control the LED brightness, but limit the duty cycle to 90%. With that in mind, I would only need a pin to be an output for a maximum of 90% of the time. In the remaining 10% of the time, I want to switch the pin to an input to read the state of a button. I tried a lot of various configurations to allow the MOSFET to stay OFF when it is supposed to be OFF, regardless of input from the button, and this is the best I could come up with: The supply voltage (VCC) is 5V, so when the button is pressed, about 0. 9V is seen at the transistor gate. This is not enough for the transistor to start conducting, but it can be read by the MCU ADC which has been enabled using the internal 1. 1V reference. So the code drives the MOSFET with a 200Hz PWM signal. The duty cycle will vary with the desired LED brightness, but will not be greater than 90%. During the last 10% of the PWM cycle, the I/O pins are set as inputs (internal pullups disabled, digital input buffers disabled) and the ADC is used to read the state of the pin. The 10k resistor keeps the MOSFET off, and if a button is pressed, 0. 9V is read by the ADC. This value is still not high enough to turn the MOSFET on, so the LEDs stay off, regardless of the button press. Since the ADC is turned off and on, I discard the first reading and keep the...



Leave Comment

characters left:

New Circuits

.