TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: mgaldeano en 20 de Febrero de 2011, 11:54:28
-
Hola.
Estoy tratando de hacer funcionar un pic 12f675. Por el momento no he logrado ni siquiera encender un led (menos que parpadee). Estoy usando linux, un ide (Piklab 0.15.7), compilador sdcc y un programador directo (JDM). Escribo el codigo que muestro al final, compila sin errores ***Exito***. Doy progrmar y "quema" bien al pic. (para verificarlo pruebo luego "leer" y recupera los datos). conecto luego el pic en un protoboard, alimento con 5v (de una fuente de pc) a los pin 1 y 8. Supongo que debería tener un 1 en el pin 5 y que con un led y una resistencia (330 ohm) a masa se debería encender el led (el resto de los pines sin conectar). No sucede. ¿Alguien tienen una idea de que está mal?. Probé también con otro chip, por si este estuviese mal.
Gracias de antemano-
Martín
Codigo:
/* ----------------------------------------------------------------------- */
/* Plantilla generada por Piklab */
#include <pic12f675.h>
/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */
typedef unsigned int word;
word at 0x2007 CONFIG = _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _CP_OFF & _CPD_OFF;
#define CLOCK_SPEED 4000000
void retardo();
void isr() interrupt 0 { /* rutina de servicio de interrupciones */
/* << agregue el código de interrupción >> */
}
void main() {
GPIO=0;
for (;;){
GP2=1;
}
}
-
No uso sdcc pero ¿GPIO = xx no sería para poner una salida en dicho puerto?
En HiTech para configurar el puerto hay poner, por ejemplo, TRISIO = 0. Para saber eso tendrías que consultar el datasheet y el .h del pic que estés usando.
-
NO se si tu compilador configure el TRIS , pero te falta desactivar los comparadores y cambiar los pines de analogico a digital.
En su hoja de especificaciones viene todo claro.
-
Gracias AngelGris.
TRISIO=0; es la forma de inidcar que el GPIO es salida. Está funcionando.
Ahora ya me animé y cambé lo siguiente:
Este prog hace titilar el pin 5 del pic 12F675 (también lo probé y funciona)
/* ----------------------------------------------------------------------- */
/* Plantilla generada por Piklab */
#include <pic12f675.h>
/* ----------------------------------------------------------------------- */
/* Bits de configuración: adapte los parámetros a su necesidad */
typedef unsigned int word;
word at 0x2007 CONFIG = _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_OFF & _CP_OFF & _CPD_OFF;
#define CLOCK_SPEED 4000000
void retardo();
void isr() interrupt 0 { /* rutina de servicio de interrupciones */
/* << agregue el código de interrupción >> */
}
void main() {
TRISIO=0;
for (;;){
GP2=1;
retardo();
GP2=0;
retardo();
}
}
void retardo(){
int conteo;
for (conteo=0;conteo<20000; conteo ++)
{
}
}