DISEÑO ELECTRONICO
     

INICIO

microcontroladores pic

 

 

 

 

 

 

 

 

Configuracion del pic 12f629

 

Voy a destacar las diferencias a la hora de configurar el 12f629 conparandolas con el 16F84A.

16F84 equ 0x0C ; a partir de esta direccion empieza la memoria de datos
12F629 equ 0x20 ; a partir de esta direccion empieza la memoria de datos

las intrucciones TRISA y TRISB se sustituyen por TRISIO
las instrucciones PORTA y PORTB se sustituyen por GPIO

El terminal GP3 solo puede actuar como entrada de datos

 

Disposicion de pines

Trabaja con un voltaje comprendido entre 2 y 5,5 voltios

 

 

 

PARA DESACTIVAR EL COMPARADOR PARA QUE GP0 Y GP1 ACTUEN COMO ENTRADAS NORMALES.

De fabrica vienen configuradas en modo comparador

bcf

movlw

movwf

 

 

STATUS,RP0

b'00000111'

CMCON

 

; BANCO 0

; 0x07 desactiva el comparador y lo pone además en bajo consumo

; selecciona GPIO en vez de comparador




PARA HABILITAR LAS RESISTENCIAS INTERNAS:

Todos tienen resistencias internas menos GP3

bsf

movlw

movwf

movlw

movwf

bcf

STATUS,RP0

B'00001111'

OPTION_REG

B'00000010'

WPU

STATUS,RP0

; Bank 1

; Habilita pull-ups

;

; solo he habilitado la resistemcia en GP1

;

; Bank 0


CONFIGURAR LOS PINES COMO ENTRADA O SALIDA:

bsf

movlw

movwf

bcf

STATUS,RP0

b'xx001111'

TRISIO

STATUS,RP0

; BANCO 1

; 0 salidas y 1 entradas.

;

; BANCO 0


CONFIGURAR EL RELOJ INTERNO

bsf STATUS

call

movwf

bcf

...................

Org

Retlw

End

,RP0

3FFh

OSCCAL

STATUS,RP0

........................

0x3FF

0x20

 

; Bank 1

; Valor de calibración del oscilador interno

; Calibra osc interno

; Bank 0

.........................................................

;instrucciones antes del final del programa

 




CONFIGURACION EN EL ICPRO

OSCILADOR:
LP.............
XT.............
HS.............
EC GP4.........
intOSC GP4.....hay que utilizarlo cuando se utilice el oscilador interior
intOSC CLKOUT..Si lo utilizo como oscilador interior resulta que GP4 me lo pone siempre a 1
RC GP4.........
RC CLKOUT......

BANDGAP:
Bandgap 00b....
Bandgap 01b....
Bandgap 10b....
Bandgap 11b....
Default........Siempre utilizo esta configuracion

BITS CONFIGURACION:
WDT......perro guardian........................
PWRT.....power up timer..Reset al conectar la alimentacion....................
MCLR.....Master clear. en OFF configura GP3 como entrada y en ON como reset...
BODEN....reset por bajada de tension...........................................
CP.......codigo de proteccion del programa ....................................
CPD......codigo de proteccion area de datos....................................


En la posicion del programa 3FF, se encuentra el valor para calibrar el oscilador interno, por lo que es aconsejable antes de proceder a la grabacion del pic, realizar una lectura y anotar el valor que indica dicha posicion. Ver figura.

En dicha fotografia se puede apreciar que tengo activado el oscilador interno, el perro guardian,GP3 configurada como entrada, reset por bajada de tension y codigo de proteccion del programa.

Como no estoy utilizando la eprom, la utilizo para anotar la informacion de los bits de configuracion, para asegurame de que este todo correcto antes de la grabacion, incluso mas abajo (no aparece en la imagen) tengo anotado el valor del Chesksum

La configuracion de la imagen de arriba corresponde con el siguiente programa

12F675 y 12F629 oscilador valor de calibración.

Antes de la programacion con los datos de su archivo hexadecimal deves de hacer una nota del oscilador, con el valor de calibracion que viene fijado de fabrica por Microchip.

Dicho valor se encuentra en la ultima posicion de memoria 0x3FF.

Con este valor se calibra el oscilador a 4MHZ con un 1% de tolerancia.

 

Al realizar la grabacion del pic mediante el ICpro, este lee el contenido de la posicion 3FF (en este caso 54h), y pregunta si ponge el valor (20h), que es el que hay grabado en el programa.

Hay que decirle que NO, para que asi nos mantenga el valor original de fabrica "54h".

Si cambiamos dicho valor el oscilador interno no oscilara a la frecuencia de 4Mhz, sino a otra distinta.

 

 

BORRAR Y GRABAR

 

En el caso de que tengamos que realizar una nueva grabacion del pic, habra que proceder a borrarlo. Pero al realizar la nueva grabacion aparecera el mensaje de la figura.

En el caso de que pulsemos SI, meteremos el valor "20h", que es el que aparece en mi programa, por lo que el oscilador ira a otra frecuencia distinta a 4Mhz, ya que el valor original era "54h"

Lo correcto antes de grabarlo seria cambiar el valor de la posicion 3FF y ponerle el valor "3454"

Cada pic tiene un valor distinto

En el caso de haber perdido el valor original hay una forma de recuperarlo. VER AQUI

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Estos datos aun no los tengo probados, por lo que no hare ningun comentario:

bcf

movlw

movwf

bsf

movlw

movlw

movlw

movwf

movlw

movwf

movlw

movwf

bcf

movlw

movwf

STATUS,RP0

b'0000001'

ADCON0

STATUS,RP0

b'00000000'

b'10000110'

b'10100111'

VRCON

b'01010001'

ANSEL

b'00001001'

TRISIO

STATUS,RP0

0xff

GPIO

; selecciona el banco 0 de registros

; ADFM a la izquierda -0-, Vdd como referencia -0- , no usados -00-

; GP0 es la entrada -00- conversión terminada -0- convertidor activo -1-

; selecciona el banco 1 de registros

; (1) por ahora no uso el voltaje de referencia interno

; (2) Vref, high, 0110b= 6d => 2.03 voltios si Vdd=4.6

; (2) Vref, low , 0111b= 7d => 1.34 voltios si Vdd=4.6

 

; (1) Fosc/16 y entrada en GP0

 

; las entradas para el ADC obligatoriamente deben ser entradas :-)

; GP1 y GP2 salidas para indicar la temperatura con los LEDs

; por defecto, selecciona el banco 0 de registros

; se asegura que todo quede "en alto"

; por defecto

 


Algunos enlaces de interes

http://www.best-microcontroller-projects.com/12F675.html

http://www.talkingelectronics.com/projects/StartHere12F629/StartHere12F629-P1.html

http://www.elotrolado.net/post_-TUTORIAL-DEFINITIVO--Programa-tu-12f629-Correctamente-_1707313921