TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: mgaldeano en 20 de Febrero de 2011, 11:54:28

Título: iniciandome con pic12f675 - No responde
Publicado 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;
}

}
Título: Re: iniciandome con pic12f675 - No responde
Publicado por: AngelGris en 20 de Febrero de 2011, 12:33:24
  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.
Título: Re: iniciandome con pic12f675 - No responde
Publicado por: AKENAFAB en 20 de Febrero de 2011, 12:36:32
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.
Título: Re: iniciandome con pic12f675 - No responde
Publicado por: mgaldeano en 20 de Febrero de 2011, 13:36:18
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 ++)
{
}
}