Código de prueba
#include <avr/io.h>
#include <util/delay.h>
// This program will turn the LEDs on for 100ms,
// then off for 200ms, endlessly.
int main(void)
{
// Set Port B pins for 3 and 4 as outputs
// PORTB bit 3 = physical pin #2 on the ATTINY85
// PORTB bit 4 = physical pin #3 on the ATTINY85
DDRB = 0x18; // In binary this is 0001 1000 (note that is bit 3 and 4)
// AVR-GCC also would accept 0b00011000, by the way.
// Set up a forever loop
for ( ; 1==1 ; ) // loop while 1 equals 1
{
// Set Port B pins for 3 and 4 as HIGH (i.e. turn the LEDs on)
PORTB = 0x18; // If we wanted only PB4 on, it'd be PORTB=0x10
// Use a function (defined in delay.h) to pause 500 milliseconds
_delay_ms(500);
// Set PORTB to be all LOWs (i.e. turn the LEDs off)
PORTB = 0x00;
// Delay for a 500ms
_delay_ms(500);
}
return 1;
}
Issues:
Cuando conduzco el pin de E / S como 1 o 0, la salida debería alcanzar el Vcc o el GND respectivamente. Pero cuando conecto el LED a GND y una de estas E / S (Pin 3 y 4), el pin dirige el LED hasta VCC, pero para la condición de apagado, la E / S aún tiene algo de voltaje en relación con GND. En este caso, el LED no está completamente apagado.
¿Cuál podría ser la posible razón de este problema? Por favor consejo
Gracias
Salida del alcance:
He cambiado el tiempo de retardo a 500 ms para obtener una indicación visual del estado ON y OFF
Schamatic: