TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: omix en 21 de Junio de 2005, 15:06:00
-
Hola, tengo un problema al usar como salidas un puerto y querer activar varios pines de el independientemente. Lo que ocurre es lo siguiente: cuando pongo a uno un pin para encender un led por ejemplo y luego quiero usar otro pin del mismo puerto para encender otro led, al hacer esto me apaga el anterior led, es como si borrara el registro completo y luego activase el pin correspondiente, con lo cual me machaca lo que tenia anteriormente. Ejemplo de codigo donde ocurre eso:
#include <pic18.h>
__CONFIG(1,HS);
__CONFIG(2,WDTDIS & BORDIS);
__CONFIG(4,LVPDIS);
void main(){
TRISD = 0x00; //Puerto D como salidas
RD0 = 1; //Activa PIN RD0
delayMs(250);
RD1 = 1; //Activa PIN RD1
while(1);
}
En este codigo tan simple ocurre lo que comento. Pero no consigo encontrar el problema, aunque seguro que es alguna chorrada que se me escapa del compilador este. A ver si alguien con mas experiencia con el compilador puede ayudarme.
Un saludo.
-
¿Exactamente que PIC18 estás utilizando?
Supongo que estas utilizando las familias más comunes de estos micros: con los 18FXX2 te debería funcionar perfectamente pero si estas utilizando 18FXX8 acabas de sufrir la novatada de estos micros (cosa que también me ocurrió a mi)…
Los puertos RD0 y RD1 están multiplexados como las funciones de IO , puerto paralelo y con los comparadores, estos últimos están activados por defecto luego dichos pines no funcionarán correctamente … tienes que desactivar los comparadores.
Espero que sea esto por lo que no te funciona.
Saludos, Ank.
-
Muchisimas gracias, pues si estoy usando el 18F458 y me estaba volviendo loco pq no sabia porque ocurria esto y no paraba de darle vueltas al código para ver por donde andaba el fallo.
Un saludo y gracias por responder.