TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: yuhe en 20 de Mayo de 2012, 16:48:27
-
Hola amigos ,tengo un pequeño problemita que me trae de cabeza .el problema es el siguiente y simple no logro que un pic10f202 me corra el programa lo he intentado todo ya por ultimo he intentado un simple parpadeo pero nada ,la gracia esque mi pickit2 si lo programa y lo lee pero nada no corre nada haber si me podeis hechar una mano amigos ,haber en que meto la pata
@ DEVICE MCLR_OFF
@ DEVICE intrc_osc
ESPERA:
pause 1000
low GPIO.2
pause 1000
low gpio.2
goto esperA
-
Holas
las dos veces apagas el led!!! prueba en alguna de las dos encenderlo ;-)
-
Muy buena Hernán, yo eche un vistazo rápido hace tiempo y no me percate del fallo. :oops:
-
Perdon , lo copie mal pero en uno es high y en el otro es low . y aun de esa forma no va .lo he probado en 4 10f y nada :(
-
En simulador anda??
No recuerdo bien de Basic, pero esta bien asi configurado el reloj interno??
-
Que tal Yuhe,
Bueno hay aqui dos problemas, el primero es que el pin GPIO.2 tiene la funcion de INTOSC/4, es decir; ese pin tiene que estar configurado como puerto, de lo contrario el pin lo que hace es sacar una señal cuadrada de 1MHz. Eso se hace forzando el bit 0 del registro OSCCAL. Pero aqui tambien esta el otro problema. El registro OSCCAL sirve para poner el reloj interno a la frecuencia correcta de 4MHz, lo que no se hace de forma automatica.
Leyendo el datasheet me di cuenta que el valor de calibracion se encuentra en la ultima dirección de memoria del micro, mediante una instruccion MOVLW XX donde ese XX es el valor de calibracion para OSCCAL. Esto significa que hay que tomar ese valor de XX para cargar el valor de calibracion. Luego tenemos que forzar el bit 0 del registro OSCCAL a que sea 0. Para lograr esto vas a tener que hacer uso del lenguaje ensamblador.
@ DEVICE MCLR_OFF
'@ DEVICE intrc_osc Esta directiva no se usa ya que el micro no tiene otras opciones de oscilador. Por lo que puede eliminarla
asm
ANDLW 0FEh ;Enmascara el bit 0; para forzarlo a que contenga un valor 0
MOVWF OSCCAL ;Carga el valor de la calibracion y habilita el puerto GPIO.2 como puerto.
endasm
ESPERA:
pause 1000
high GPIO.2
pause 1000
low gpio.2
goto esperA
Olvidaba algo, como he de suponer ya has grabado el microcontrolar varias veces, lo que significa que tal vez has borrado tambien el contenido (MOVLW XX) de la ultima direccion de programa. Esto es mas critico ya que ahora vas a tener que buscar la forma de calibrar el micro. De acuerdo con el datasheet, siempre se debe leer el micro antes de borrarlo para respaldar ese MOVLW XX de la ultima direccion. De lo contrario lo perderas.
Saludos,
Elreypic.
-
Gracias amigos, una vez mas mi torpeza sin limites se carga unos cuantos micros :(, de nuevo gracias amigo por la respuesta tan rapidas :-/
-
Acavo de cargar un sof que acavo de ver en un foro de rc y funciona perfecto :shock: :shock: :shock: :shock: :shock: es decir que mis pequeñines aun tienen vida , porfavor aguiel me puede poner un simple ejemplo de como configurar el 10f200 porfavor apagar y encender un led con eso valdria es para ver como es la configuracion de los fuses :oops: :(
-
Estos son los que yo uso en un 10F222 y van bien. Está en lenguaje C, espero que puedas adaptarlo.
#include <10F222.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOMCLR //Master Clear pin enabled
#FUSES NOPROTECT //Code not protected from reading
-
La verdad es que es un micro muy simple, solo tiene 3 fuses significativos, aparte de que sea conveniente leer el valor de calibración del reloj interno por si se utiliza en trabajos que requieren precisión en el manejo del tiempo.
(http://img59.imageshack.us/img59/339/fusespic10f202.jpg)