TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: car_saave en 04 de Octubre de 2018, 14:20:46
-
Hola, tengo problema con la configuracion de este pic, que no puedo hacer funcionar las patitas 2 y 3 (GPIO,4 Y GPIO,5) ni como entradas ni como salida digitales. Estoy usando mplab en assembler y de grabador un pickit3.
Hice un programita sensillo para probar que prendan y apaguen led y tampoco funciona, sin embargo en el simulador funciona bien.
Desde ya les quedo muy agredecido por su tiempo
; rutina con tiempo funcionando21-09-2018
;****************************** CONFIGURACION ****************************
;CP_OFF - Codigo de proteccion programa desactivado
;CPD_OFF - Codigo de proteccion eeprom desactivado
;WDT_OFF - Perro guardian desconectado
;BODEN_OFF - No actua el reset por bajada de tension
;PWRTE_OFF - Reset de inicio desconectado
;MCLRE_OFF - Reset externo desconectado, sino pierdo una entrada A5
;XT_OSC - oscilador exterior
;INTOSC_OSC_NOCLKOUT - funcionamiento con reloj interno
;LVP_OFF - programacion de bajo voltage desconectado,
; para activar el pin 4 de RB
list p=12f629
#INCLUDE <P12F629.INC>
ERRORLEVEL -302
__CONFIG _CP_OFF & _CPD_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF &_INTRC_OSC_NOCLKOUT & _MCLRE_OFF
cblock 0x20
; Contadores para los retardos.
PDel0
PDel1
PDel2
endc
ORG H'00'
GOTO INICIO
ORG H'05'
INICIO call 0x3FF ; acatando reocmendacion de Veguepic
movwf OSCCAL
BCF STATUS,RP0
MOVLW 0X07
MOVWF CMCON ;COLOCA EN DIGITAL LOS PINES
BSF STATUS,RP0 ;BANCO UNO CONFIGURACIONES
MOVLW B'001000'
MOVWF TRISIO ;COLOCA LOS PINES ENTRADAS Y SALIDAS
BCF STATUS,RP0 ;BANCO CERO
CLRF GPIO
ini movlw B'101010'
movwf GPIO
call DEMORA60ms
movlw B'010101'
movwf GPIO
call DEMORA60ms
goto ini
DEMORA60ms movlw .66 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop111 movlw .181 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop222 clrwdt ; 1 clear watchdog
clrwdt ; 1 ciclo delay
decfsz PDel1,1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop222 ; 2 no, loop
decfsz PDel0,1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop111 ; 2 no, loop
clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
org 0x3FF ;
retlw 0x20 ;
END
-
Que tal car_saave,
En cuanto a los pines GPIO4 y GPIO5 no veo ningun problema en el código, pero si veo un problema en el código con respecto al oscilador interno.
Primero para cargar el valor de la calibración debes cambiarte al banco 1, ya que el registro OSCCAL se encuentra en el banco 1. Es decir, debes hacer lo siguiente:
BSF STATUS,RP0 ;Cambia al banco 1
CALL 0X3FF ;Ve a la última dirección de memoria de programa y obten el valor de calibracion del oscilador
MOVWF OSCCAL ;Carga el valor de calibración
BCF STATUS,RP0 ;R0gresa al banco 0
También observé que al final de tu código tienes lo siguiente:
org 0x3FF ;
retlw 0x20 ;
Si has hecho esto entonces ya has borrado el valor de calibración del oscilador interno. Esto no debería estar ahí, ya que de fabrica en esa dirección de la memoria de programa se encuentra la instrucción RETLW XX (donde XX es el valor de calibracion y es diferente en cada microcontrolador PIC12F629). Pero tal vez lo agregaste debido a que lo borraste accidentalmente. Si es así, entonces podría ser correcto el valor de calibración.
Por lo demás no veo ningún problema para los pines GPIO4 y GPIO5, a menos que los hayas dañado anteriormente.
elreypic.
-
Gracias elreypic2 por tu tiempo y la info, si tenes rason, lo del oxilador interno lo eh tocado y me quedo mal y la parte del final siempre la puse haci poque lo lei en un blook y como nunca tube problemas lo eh dejado haci y nunaca tube que manejar tiemos precisos no me ah traido problemas. Con esto no quiero decir que estee funcionando bien
Los chips creo que estan bien, probe con 2 mas que son nuevo.
No se que puede estar pasando.
-
Sinceramente tampoco encuentro cual es el problema. los GP4 y GP5 justamente son del oscilador, analogicos, y Timer1,
El TIM1 se encuentra desactivado al inicio, por lo tanto no es el problema.
La parte analogica esta desactivada con el CMCON
Y el oscilador correctamente ubicado como interno y sin clock.
Entonces la unica que queda es que realmente este quemado, pero si probaste 2 mas que son nuevos, quedan algunas posiblidades que se me cruzan por la cabeza...
1- Son PIC chinos... y no originales.
2- Al grabar los valores de los bits de configuracion revisarlos para ver si son correctos
2- El programa puede haber alguna cosa que tal ves este afectando y sea complicado de ver, como por ejemplo, no tener un espacio entre el & y el _, y es el unico que no le tiene.
&_INTRC_OSC_NOCLKOUT
-
SOLUCIONADO, con la ayuda de ustedes y el grupo, el error estaba en como dijo
elreypic2 es que no estaba direcionando el osccal al banco 1
Quedo haci:
INICIO BSF STATUS,RP0 ;BANCO UNO CONFIGURACIONES
call 0x3FF ;
movwf OSCCAL
MOVLW B'001000'
MOVWF TRISIO ;COLOCA LOS PINES ENTRADAS Y SALIDA
BCF STATUS,RP0
MOVLW 0X07
MOVWF CMCON
Lo del final del codigo, a la vista no cambia nada si lo quito o lo dejo es lo mismo.
Muchas gracias, les estoy muy agradecido