TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: johnyague en 26 de Julio de 2007, 21:06:59
-
Hola a Todos.
Todo comenzó con la idea de hacer prender un led con un microcontrolador y leyendo encontré que el 12f629 es una dispositivo el cual su montaje no necesita de oscilador externo y dije bueno vamos hacerlo funcionar....
El codigo que tengo es basado en un respuesta dada por ustedes
LIST P=PIC12F629
#include <P12F629.INC>
ERRORLEVEL -302
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON &_INTRC_OSC_NOCLKOUT & _MCLRE_OFF
CounterA EQU 0x20
CounterB EQU 0x21
CounterC EQU 0x22
#Define PIN0 GPIO,0 ; Salida 1
#Define PIN1 GPIO,3 ; Salida 2
#Define PIN2 GPIO,2 ; Salida 3
ORG H'0000'
GOTO INICIO
ORG H'0004'
GOTO INICIO
ORG H'0005'
INICIO
BCF STATUS,RP0
CLRF GPIO
MOVLW 07h
MOVWF CMCON
BSF STATUS,RP0
MOVLW B'11100000'
CALL CALIBRAROSC
MOVWF OSCCAL
CLRF INTCON
BCF STATUS,RP0
CLRF GPIO
;aca comenzaria tu programa
LOOP
CALL Temp
BSF PIN0
CALL Temp
BCF PIN0
BSF PIN1
CALL Temp
BCF PIN1
GOTO LOOP
Temp movlw D'4'
movwf CounterC
movlw D'209'
movwf CounterB
movlw D'255'
movwf CounterA
loop decfsz CounterA,1
goto loop
decfsz CounterB,1
goto loop
decfsz CounterC,1
goto loop
return
ORG 0X3FF
CALIBRAROSC
RETLW 0x80 ;
end
Ven algo que tenga mal....???? no me presenta errores al compilar :shock:
Pero el problema esta en que cuando comencé a programar el micro lo borre completamente y siempre me presenta problemas al programarlo
Me sale un letrero "valor de calibración ausente desea utilizar el valor del fichero, si le digo si me sale un error que dice fallo verificacion del codigo 0000h y si le digo no también me sale el mismo error :?
Que me recomiendan que deba hacer.... :(
-
Hola Jhony, como no se que programador estas empleando, mira estos casos similares en la seccion programadores
http://www.todopic.com.ar/foros/index.php?action=search2
Suerte!
Norberto
-
Norberto, primero gracias por responder,
La verdad el progrador es uno que configuro como Propic 2 Programmer en el IC-prog, eso sirve de lago la verdad no conosco mucho del tema.
Queado ateto
-
Hola Johnyaque:
Creo que solo deberias poner
call 0x3FF
movwf OSCCAL
org 0x3FF
retlw 0x20
Y tambien si mal no recuerdo el valor del osccal es de 6 bits y al poner 0x80 excedes los 6 bits, revisa bien el datasheet para salir de dudas.
Suerte
-
Hola Saludos!!
Yo uso el valor del calibrador con 0x78
es el valor que trae de fabrica, lo cheque con varios pic.
Otra punto es que te falta configurar el registro TRISIO.
TRISIO configuras el pin como entrada o salida.
Saludos!!
-
Comparos Buenas noches...
Analizando sus comentarios considero que el codigo quedaria asi:
LIST P=PIC12F629
#include <P12F629.INC>
ERRORLEVEL -302
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON &_INTRC_OSC_NOCLKOUT & _MCLRE_OFF
CounterA EQU 0x20
CounterB EQU 0x21
CounterC EQU 0x22
#Define PIN0 GPIO,0 ; Salida 1
#Define PIN1 GPIO,3 ; Salida 2
#Define PIN2 GPIO,2 ; Salida 3
ORG H'0000'
GOTO INICIO
ORG H'0004'
GOTO INICIO
ORG H'0005'
INICIO
call 0x3FF ; acatando reocmendacion de Veguepic
movwf OSCCAL ; acatando reocmendacion de Veguepic
BCF STATUS,RP0
CLRF GPIO
MOVLW 07h
MOVWF CMCON
BSF STATUS,RP0
MOVLW B'11100000'
MOVWF TRISIO ; Instruccion que falta observacion de AKENAFAB
; CALL CALIBRAROSC
; MOVWF OSCCAL
CLRF INTCON
BCF STATUS,RP0
CLRF GPIO
;aca comenzaria tu programa
LOOP
CALL Temp
BSF PIN0
CALL Temp
BCF PIN0
BSF PIN1
CALL Temp
BCF PIN1
GOTO LOOP
Temp movlw D'4'
movwf CounterC
movlw D'209'
movwf CounterB
movlw D'255'
movwf CounterA
loop decfsz CounterA,1
goto loop
decfsz CounterB,1
goto loop
decfsz CounterC,1
goto loop
return
; ORG 0X3FF
;CALIBRAROSC
; RETLW 0x78 ;
org 0x3FF ; acatando reocmendacion de Veguepic
retlw 0x20 ; acatando reocmendacion de Veguepic tambien probado con 0x78 comentario de AKENAFAB
end
Pero me queda la inquietud si lo calibro con 0x78 o con 0x20 ya intente con justos y me siga saliendo el mismo error:
Me sale un letrero "valor de calibración ausente desea utilizar el valor del fichero, si le digo si me sale un error que dice fallo verificacion del codigo 0000h y si le digo no también me sale el mismo error
Algun otro comentario para salucionar el problema....
-
En el datasheet casi siempre estan las respuestas, revisa estas imagenes:
(http://img53.imageshack.us/img53/390/56576114fo6.th.jpg) (http://img53.imageshack.us/my.php?image=56576114fo6.jpg)
(http://img263.imageshack.us/img263/5452/55389522tg9.th.jpg) (http://img263.imageshack.us/my.php?image=55389522tg9.jpg)
Que programador estas utilizando para grabar los PICs ?
Saludos
-
Hola, soy nuevo en el tema de programacion de pic y estoy por empezar oviamente con el encendido y apagado de un led.
Mi consulta es la siguiente : he notado por ejemplo en los ejemplos de codigo que en este post se citan que utilizan " #define pin0 GPIO0 ,0 "
la pregunta es : cual es el comando o instruccion que usa el compilador ? es " GPIO" ?.Pregunto esto por que en un curso de programacion de cekit que me an prestado para definir los pines de entrada o salida era mas complicado....
Otra: En otros segmentos de codigo que encontre en el foro note que al declarar variables, ya no utilizan el "equ"... es esto posible o estoy equivocado ?
Gracias
-
Hola, bienvenido al foro
Una aclaración, gpio se emplea en los pic pequeños.. tipo 12f , en las lineas mayores se emplea PORT
lo que leiste de definicion de entrada salida, es correcto (mas complicado)
pero aquí con #define lo que hacen seria "cambiar de nombre" por uno mas facil de interpretar, y ademas de corregir...
por ejemplo
#define LED_ROJO portb,3
aqui no defino como salida, solamente me serà mas facil acordar de LED_ROJO , que donde està conectado
la salida la programaras con TRIS (como supongo habras leido en cekit)
Y entonces, tambien sera mas facil escribir BSF LED_ROJO que BSF.mmmmmm donde estaba conectado... ahhh BSF PORTB,3 je je je
tambien podrias hacer
#define ENCENDER BSF
#define APAGAR BCF
y luego escribir
ENCENDER LED_ROJO
APAGAR LED_ROJO :mrgreen:
y al compilarlo... FUNCIONARÀ! :D
espero se entienda
y con respecto a equ
se emplea CBLOCK y una direccion donde comenzaran los registros
luego los terminas con ENDC
Norberto
-
en verda eso no sabia ke con el amperaje era mas exacto cuando prnder el auto, lo bueno ke en se link ke puse tambien biene como hacer el amperimetro. checalo haber si ese funciona, para tomarlo en cuenta.
muchas gracias por la observacion.