Foro

Por favor, lean las reglas del FORO al final de esta página. Muchas gracias!! 🙂
 

Bienvenido Invitado 

Mostrar / Ocultar encabezado

Bienvenido Invitado, publicar en este foro requiere registrarse.

Páginas: [1]
Autor Tema:Llave electrónica universal - Adaptación a PIC12F675
HJ
Moderador
Mensajes: 511
Permalink
Mensaje Llave electrónica universal - Adaptación a PIC12F675
on: August 18, 2016, 20:13
Cita

Este hilo lo abro a fin de tratar de ayudar a lectores con poco conocimiento en programación que necesitan hacer funcionar este excelente circuito publicado por Gabriel (Inventable) originalmente diseñado con un PIC12F629.

Antes que nada quiero aclarar que la programación de micros, si bien no es muy difícil, no es un juego de niños aunque se lo quiera hacer ver así y requiere mucho estudio y práctica, sobretodo la programación en lenguaje ensamblador o "ASM".
Dejado en claro esto, continúo.

Como primer medida, siempre que vayamos a compilar un programa para un micro, se debe incluir en el mismo el "INCLUDE" de ese micro, es decir, en este caso en particular deberíamos reemplazar el include del PIC12F629 por el del PIC12F675.

Como hacerlo, simple, donde dice “P12F629.INC” debe reemplazarse por “P12F675.INC”.

También es muy importante decirle al compilador que micro estamos por utilizar, es decir si vamos a compilar para un PIC12F675, debemos reemplazar el "LIST" el tipo de micro.

Como hacerlo, en la línea donde dice "P = 12F629" , debe reemplazarse por "P = 12F675"

Hasta ahora logramos que el programa compile para el PIC12F675, ahora debemos hacer que funcione con el micro en cuestión....

Si bien ambos micros, el PIC12F629 y el PIC12F675, son similares, no son iguales, y el PIC12F675 osee un registro adicional que requiere ser seteado en el programa, este registro es el ANSEL.
Esto es debido a que los pines de este micro, el PIC12F675, arrancan como entradas analógicas cuando el micro es alimentado o después de un reseteo.
Para ello debemos poner a cero el registro ANSEL que se encuentra en el "banco 1" del micro.

Teniendo en cuenta esto, los pasos a seguir serían:
1- Seleccionar el banco 1
2- Poner a cero el registro ANSEL
3- Seleccionar el banco 0 para que continúe el programa

Esto debemos hacerlo al inicializar los registros del PIC, y si lo hacemos en el lugar correcto nos ahorramos los pasos 1 y 3, con lo que optimizamos el programa, algo que es norma de buena programación.
Es decir debemos buscar un lugar el el programa, donde ya se esté configurando los registros del PIC y que ademas se esté trabajando el el "banco 1", ya que allí es donde se encuentra dicho registro.

Para poner a cero el registro ANSEL debemos utilizar la siguiente línea de código

        clrf         ANSEL ;Todos I/O digitales

Y esto se debería agregar donde se configura los registros TRIS y OPTION del programa, ya que ambos registros del PIC se encuentran en el banco 1, al igual que el registro ANSEL.

Entonces, para el código de la "llave", buscamos donde dice

main    	
    PAG_RAM1
    movlw    B'00000000'    ; GP1 (mode) and GP4 (key) = input 
    movwf    TRISIO    ; 

    movlw    B'01101111'    ; Pull-up off. Prscaler %128 in WDT	
    movwf    OPTION_REG	    ; 

    PAG_RAM0

y agregamos la línea mencionada anteriormente, con lo que quedaría

main    	
    PAG_RAM1
    movlw    B'00000000'    ; GP1 (mode) and GP4 (key) = input 
    movwf    TRISIO    ; 

     clrf    ANSEL    ;Todos I/O digitales

    movlw    B'01101111'    ; Pull-up off. Prscaler %128 in WDT	
    movwf    OPTION_REG	    ; 

    PAG_RAM0

Para el caso de la "base" o "cerradura" hacemos algo similar, buscamos en el código lo siguiente

main    	
    PAG_RAM1
    movlw     B'00010010'     ; GP1 (mode) and GP4 (key) = input 
    movwf    TRISIO     ; 

    movlw    B'00010010'    ; individual Pull-up on
    movwf    WPU	

    movlw    B'01101111'    ; Pull-up on. Prscaler %128 in WDT	
    movwf    OPTION_REG    ; 

    PAG_RAM0

y volvemos a agregar la linea de código en cuestión

main    	
    PAG_RAM1
    movlw     B'00010010'     ; GP1 (mode) and GP4 (key) = input 
    movwf    TRISIO     ; 

    movlw    B'00010010'    ; individual Pull-up on
    movwf    WPU	

    clrf    ANSEL      ;Todos I/O digitales

    movlw    B'01101111'    ; Pull-up on. Prscaler %128 in WDT	
    movwf    OPTION_REG    ; 

    PAG_RAM0

Ahora compilamos, grabamos los micros, recuerden que va un programa (Firmware) diferente para cada micro, y debería salir andando con micros PIC12F675.

Cualquier otra duda comente.

Saludos
HJ

HJ
Moderador
Mensajes: 511
Permalink
Mensaje Re: Llave electrónica universal - Adaptación a PIC12F675
on: August 18, 2016, 21:11
Cita

En otro de los comentarios en el blog, Matías Gonzalez, dice lo siguiente:

Release build of project `C:\Users\matias\Desktop\baseprueba.mcp’ started.
Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
Thu Aug 18 12:42:13 2016
———————————————————————-
Build aborted. The project contains no source files.
———————————————————————-
Release build of project `C:\Users\matias\Desktop\baseprueba.mcp’ failed.
Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
Thu Aug 18 12:42:13 2016
———————————————————————-
BUILD FAILED

El problema está en lo que resalté en negritas... También en que no se entiende el ingles y no se lee la ayuda del MPLAB, etc...

Build aborted. The project contains no source files.
¿Que dice ahí?
Algo así como: "Construcción abortada. El proyecto no contiene archivos fuente"
Lo que significa que creaste un proyecto, y lo intentaste compilar sin asignar primero un archivo fuente al proyecto... es decir, intentaste compilar un archivo vacío.

El código fuente se refiere, en este caso, al archivo con extensión "ASM"

Para que quede claro, se debe crear un proyecto para la "llave" y un proyecto para la "base" y a cada uno asignarle el archivo ASM correspondiente.

Saludos
HJ

HJ
Moderador
Mensajes: 511
Permalink
Mensaje Re: Llave electrónica universal - Adaptación a PIC12F675
on: August 18, 2016, 21:23
Cita

En otro de los comentarios en el Blog, uno anterior, Matías Gonzalez pone

“———————————————————————-
Release build of project `C:\Users\matias\Desktop\base.mcp’ started.
Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
Thu Aug 18 09:27:32 2016
———————————————————————-
Make: The target “C:\Users\matias\Desktop\PicKeyBase.o” is out of date.
Executing: “C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe” /q /p12F675 “PicKeyBase.asm” /l”PicKeyBase.lst” /e”PicKeyBase.err”
Message[301] C:\PROGRAM FILES (X86)\MICROCHIP\MPASM SUITE\P12F629.INC 36 : MESSAGE: (Processor-header file mismatch. Verify selected processor.)
Error[113] C:\USERS\MATIAS\DESKTOP\PICKEYBASE.ASM 184 : Symbol not previously defined (ANSEL)
Halting build on first failure as requested.
———————————————————————-
Release build of project `C:\Users\matias\Desktop\base.mcp’ failed.
Language tool versions: MPASMWIN.exe v5.37, mplink.exe v4.37, mplib.exe v4.37
Thu Aug 18 09:27:33 2016
———————————————————————-
BUILD FAILED”

Nuevamente el error está en lo que puse en negritas...
Error[113] C:\USERS\MATIAS\DESKTOP\PICKEYBASE.ASM 184 : Symbol not previously defined (ANSEL)
Que significa que no has definido el registro ANSEL.
Y se debe a que no estabas compilando para el PIC12F675, sino para el PIC12F629, y que se soluciona con lo mencionado en el primer mensaje de este hilo. Ya que la definición de este registro se encuentra en el "include " del mismo.

Saludos
HJ

Vega
Silver
Mensajes: 200
Permalink
Mensaje Re: Llave electrónica universal - Adaptación a PIC12F675
on: September 18, 2016, 23:16
Cita

...y si lo hacemos en el lugar correcto nos ahorramos los pasos 1 y 3, con lo que optimizamos el programa, algo que es norma de buena programación.

Todo el artículo estuvo excelente, en especial lo que menciono en la cita. Además de que un programa funcione, debe ser "bello" a nuestros ojos, una de esas cosas que a los que no están esto les costará entender.

Saludos,
Juan

erigompa
Iniciado
Mensajes: 1
Permalink
Mensaje Re: Llave electrónica universal - Adaptación a PIC12F675
on: July 10, 2017, 02:23
Cita

podrias pasarm el codigo tanto de la llave como de base hecho por un pic 12f675 por fa no m ubico bien

Páginas: [1]
Foro Mingle by cartpauj
Versión: 1.0.34 ; Página cargada en: 0.009 segundos.

REGLAS del FORO

1. Inventable es un lugar de amistad, cordialidad y respeto reciproco, sin importar la raza, la cultura o el nivel de conocimiento de sus participantes.

2. El argumento de este foro es "hacer electrónica". Pedimos por favor a los participantes de no abrir hilos o dejar mensajes sobre temas no relacionados con ella o que puedan crear discusiones inútiles y poco constructivas.

3. En Inventable participan personas de más de 30 países. En cada uno de ellos, los términos electrónicos, los componentes que se encuentran en los comercios y los precios pueden ser muy diferentes. Escribamos pensando a esto en modo tal que nuestra experiencia pueda ser útil para la gente de todo el mundo.

4. No usemos el foro con fines publicitarios.

5. No pongamos links para bajar ilegalmente material sujeto a Copyright (libros o programas por ejemplo). Esto crearía serios problemas al foro y también al sitio.

6. Nos reservamos la capacidad, usando el sentido común, de editar o eliminar mensajes que tengan publicidad o que puedan ser considerados fuente de problemas. El beneficio será para toda la comunidad.

7. Por último, y no menos importante, estamos aquí porque nos gusta la electrónica y porque nos gusta aun más ayudar a la gente. Bienvenidos!!

Foro ultima modifica: 2012-09-13T10:34:59+00:00 da inventable

La electrónica simple y clara. Un blog de Gabriel Rapetti