Tengo un LED conectado al pin RA1 de PIC18F25K20 (alimentado por fuente de 3.3V) de la siguiente manera:
Carril de 5V -> Resistencia (200 Ohm) -> Ánodo LED -> Cátodo LED -> RA1
RA1: Entrada -> El LED está apagado
RA1: Salida baja -> El LED está ENCENDIDO.
¿Es esta la forma correcta de conectar el LED, ya que el PIC está alimentado por 3.3V y el LED está conectado a 5V?
Inicialicé RA1 para que fuera una entrada como se muestra en la DEVICE_Init
rutina. El código está escrito en lenguaje C - compilador Microchip C18.
void main()
{
DEVICE_Init();
//wait one second
while (1)
{
TRISA = 0; //led is on
//wait 2 seconds
TRISA = 0x06; //led is off
//wait 4 seconds
}
}
void DEVICE_Init (void)
{
OSCCON = 0x73; //PRIMARY INTERNAL OSCILLATOR
PORTA = 0;
LATA = 0;
TRISA = 0x06; //RA1, RA2 INPUT
....
}
Cuando enciendo el chip por primera vez, el LED se enciende durante una fracción de segundo y luego se apaga. Tengo entendido que los pines IO se ingresan al reiniciar. Entonces, ¿por qué el LED se enciende por un breve momento al encender?
Los pines de E/S del PIC se activan en un estado de alta impedancia al encenderse.
La razón por la que ve la falla del LED es probablemente porque el suministro de 5 V aumenta más rápido que el suministro de 3.3 V, y el cátodo del LED se mantiene temporalmente bajo a través del diodo de protección en ese pin en el PIC. Esto no es bueno y puede provocar un bloqueo al encender.
Si puede hacer arreglos para asegurarse de que el suministro de 3.3 V suba antes y disminuya después del suministro de 5 V, entonces su esquema puede funcionar. Sin embargo, es mejor usar un transistor o hacer funcionar el LED desde el suministro de 3,3 V. Este último también desperdiciará menos energía, suponiendo que su suministro de 3.3 V sea razonablemente eficiente.
Su LED se enciende durante una fracción de segundo porque las salidas se restablecen como Hi-Z (alta impedancia) o flotante. Para solucionar este problema, coloque algo como una resistencia de 10k desde la salida a tierra. Esto se conoce como resistencia desplegable y hará que la salida sea baja en el arranque. Hice una pregunta similar aquí:
https://stackoverflow.com/questions/41557868/atmega128-output-flicker-on-startup
No los inicialice como entradas solo como salidas. Las salidas pueden generar y hundirse. Las resistencias desplegables no funcionarán, ya que en esta configuración el diodo está generando corriente. ¡¡No tire hacia arriba!!. Simplemente inicialice los puertos lo antes posible. Su diodo debe tener Uv> 1.7V.
usuario101095