Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Falla mi pic16f84a, falla su programa o el programador, nose


       



#21  
Leon Elec
Ubicación: Argentina
Registrado: 07 Nov 2007
Mensajes: 267
citar
Estos videotutoriales que cree te van a sevir para trabajar con el MPLAB. http://www.forosdeelectronica.com/about19458.html&highlight=

Dentro de pocos días se viene el tuto 5

#22  
Zettaextremo
Ubicación: Rio Bravo, Mexico
Registrado: 01 Nov 2007
Mensajes: 34
citar
hola, pues voy a checarlos, porque no me sale el programa, incluso pongo el programa asm de un programa que si logre meter al pic y funciono a la perfección ( ya venia con su programa hex. pero tambien venia con el asm), bueno intente cambiarlo a hex, y me sale que a fallado, si el programa ese esta bien, en mi caso me sale que mi programa tiene errores al abrir el banco 1 o 0 Status,rp0, meti mas programas de otros autores y me sale lo mismo, me dice que chece los bits, y tambien cuando quiero usar un temporizador me dice que no se pueden guardar en la memoria que le e especificado, aqui les dejo mi programa final, lo demas si esta bien.

Código: Seleccionar todo

   LIST P=16F84

   INCLUDE "P16F84.INC"

   __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

timer1   EQU   0x0C
timer2   EQU   0x0D
timer3   EQU   0x0E

   ORG 0x0000          ; Al prender el micro viene aca primero.
     goto   encendido     ; Primera línea del programa.

   ORG 0x0004      ; Ubicación del único vector de interrupción. No usado.
     nop
; tengo problamas con los bancos pero pues yo los veo correctos
encendido
   BSF   STATUS,RP0    ; Selecciono BANCO 1 .   
   movlw   b'00000000'   ; Todos salidas. ( "0" = "Output", "1"= "Input" )
   movwf   TRISA      ; TRISA controla comportamiento de PORTA.
   movlw   b'11000000'    ; Port B: Todas  salidas.
   movwf   TRISB      ; Análogo a TRISA.
   BCF   STATUS,RP0   ; Vuelvo al BANCO 0 .
   clrf   PORTA      ; Arranco poniendo todas las lineas a cero.
   Clrf   PORTB      ; CLRF sirve para poner a 0 un registro.
   goto   menu

menu   
   call   descansar   ;hace una demora
   btfsc   PORTB,6
   call   marcar_paso
   nop
   goto   menu

marcar_paso   
   clrf   PORTB                           ;aqui tuve problemas al poner clrf   portb,6
   bsf   PORTA,3                       ;                                                 clrf   portb,7
   bsf   PORTA,0                        ; asi que mejor lo deje como portb
   bsf   PORTB,3
   bsf   PORTB,4
   call   tempo
   call   tempo
   call   tempo
   bcf   PORTA,3
   bcf   PORTA,0
   bcf   PORTB,3
   bcf   PORTB,4
ciclo1   
   bsf   PORTA,2
   bsf   PORTB,2
   call   tempo
   call   tempo
   bcf   PORTA,2
   bcf   PORTB,2
   bsf   PORTA,3
   bsf   PORTB,3
   call   tempo
   call   tempo
   bcf   PORTA,3
   bcf   PORTB,3
   btfsc   PORTB,7
    goto    continuar1
   bsf   PORTA,1
   bsf   PORTB,5
   call   tempo
   call   tempo
   bcf   PORTA,1
   bcf   PORTB,5
   bsf   PORTA,0
   bsf   PORTB,4
   call   tempo
   call   tempo
   bcf   PORTA,0
   bcf   PORTB,4
   goto   ciclo1
continuar1   
   clrf   PORTB
   call   tempo
   return

descansar
   bsf   PORTA,2
   bsf   PORTA,1
   bsf   PORTB,2
   bsf   PORTB,5
   call   tempo
   call   tempo
   call   tempo
   bcf   PORTA,2
   bcf   PORTA,1
   bcf   PORTB,2
   bcf   PORTB,5
   return

tempo
   movlw   d'15'                     ;en alguna parte de este temporizador me genera un
   movwf   timer3                   ;error no se porque y no se donde esta
temp1
   movlw   d'15'
   movwf   timer2
temp2
   movlw   d'15'
   movwf   timer1
temp3
   decfsz   timer1
    goto    temp3
   decfsz   timer2
    goto    temp2
   decfsz   timer3
    goto    temp1
   return

   end

#23  
mabauti
Ubicación: México
Registrado: 22 Oct 2006
Mensajes: 1134
citar
los Warnings los podrias saltar por alto

postea los Errores que te salen

#24  
Airoa Airon
Ubicación: México
Registrado: 08 Dic 2007
Mensajes: 21
citar
bueno te dare unas recomendaciones en base a lo que he visto cuando hago los programas:

Trata de que todo este en minusculas, no uses los nombre exactos de los registros por que te sale eso del bank 0 y 1, en ves de eso escribe la direccion del registro, mmm mas o menos asi

status equ 0x03
portb equ 0x06
porta equ 0x05

y ya luego los utilizas

como
bsf porta,1



ahora alomejor el nombre de timer1 y timer2 es lo que provoca el error intenta cambiarle el nombre por cont1 o contador1 reg1 como sea


personalmente te recomiendo esta rutina de retardo
es la que yo uso

delay _0 movlw .248 ;--- cuando pones el punto es lo mismo que si pones d'248'
movwf cont1
loop_0 nop ;-----248x4 = 992 [( nop=1+decf=1+goto=2)=4] 2
decfsz cont1,1 ;--lo que nos da 992 instrucciones mas
goto loop_0 ;...[call delay = 1 +movlw=1+movwf=1+
nop ;--decfsz=1(cuando salta si es zero) 2nop=2+return=2)=8]
nop ;--esto nos da un total de 1000 instrucciones o 1000us= 1 ms
return

delay_1 movlw .249
movwf cont2 ;se usa el mismo procedimiento,
loop_1 nop ;cada call delay nos da 1001 instrucciones
call delay_0 ; en total nos dan 1000000 ó 1 segundo
call delay_0
call delay_0
call delay_0
decfsz cont2,1
goto loop_1
call delay_0
call delay_0
return


la rutina de delay_0 te da hasta 1 ms de retardo
y la rutina de delay_1 te da hasta 1 segundo de retardo


en la instruccion defsz te puede generar un aviso diciendote que se usa el 1 como default


recuerda que siempre debes especificar que registro vas a modificar y donde lo vas a guardar

ej:

decfsz timer1,1 el 1 significa que lo guardaras en el mismo registro (f=1)
el 0 significa que lo guardaras en el registro de trabajo (w=0)


en la instruccion que dices que tusviste problemas

clrf portb

se debe a que clrf es una instruccion que mane bytes y bcf es para manejar bits

al dar clrf borras todo el registro del portb al dar bcf portb,6 borras solo en bit 6


¿pregunta?
por que pones dos veces bsf porta,3 y bcf porta,3?, si me dices mas o menos que quieres que haga el programa, cuando se prende un led cuando otro, cuanto de retardo etc. etc. etc. , puedo intentar hacer uno y pasartelo

p.d. toda mi experiencia se reduce a mplab y poco menos de un mes usandolo x)


cualquier cosa tu solo di (escribe)

#25  
Airoa Airon
Ubicación: México
Registrado: 08 Dic 2007
Mensajes: 21
citar
una ultima cosa que se me pasaba, en el mplab, si le das doble click al error que te señala, te manda hacia donde esta el error. en la linea exacta :p, ya depende de ti detectarlo y corregirlo.

#26  
Zettaextremo
Ubicación: Rio Bravo, Mexico
Registrado: 01 Nov 2007
Mensajes: 34
citar
pues acabo de terminar una tarea, y por fin tuve chance de seguirle al proyecto, aqui estan los errores, no e probado aun las instrucciones y modificaciones que me mando Airoa Airon, mañana en cuanto pueda voy a tratar de cambiar el programa, gracias nuevamente, aqui estan

Make: The target "C:\Documents and Settings\Arturo Gallardo\Mis documentos\Archivos de investigacion\Programas\ICPROG\Pictestxxx.o" is out of date.
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84A "Pictestxxx.asm" /l"Pictestxxx.lst" /e"Pictestxxx.err"
Message[301] C:\ARCHIVOS DE PROGRAMA\MICROCHIP\MPASM SUITE\P16F84.INC 37 : MESSAGE: (Processor-header file mismatch. Verify selected processor.)
Message[302] C:\DOCUMENTS AND SETTINGS\ARTURO GALLARDO\MIS DOCUMENTOS\ARCHIVOS DE INVESTIGACION\PROGRAMAS\ICPROG\PICTESTXXX.ASM 26 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\DOCUMENTS AND SETTINGS\ARTURO GALLARDO\MIS DOCUMENTOS\ARCHIVOS DE INVESTIGACION\PROGRAMAS\ICPROG\PICTESTXXX.ASM 28 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[305] C:\DOCUMENTS AND SETTINGS\ARTURO GALLARDO\MIS DOCUMENTOS\ARCHIVOS DE INVESTIGACION\PROGRAMAS\ICPROG\PICTESTXXX.ASM 113 : Using default destination of 1 (file).
Message[305] C:\DOCUMENTS AND SETTINGS\ARTURO GALLARDO\MIS DOCUMENTOS\ARCHIVOS DE INVESTIGACION\PROGRAMAS\ICPROG\PICTESTXXX.ASM 115 : Using default destination of 1 (file).
Message[305] C:\DOCUMENTS AND SETTINGS\ARTURO GALLARDO\MIS DOCUMENTOS\ARCHIVOS DE INVESTIGACION\PROGRAMAS\ICPROG\PICTESTXXX.ASM 117 : Using default destination of 1 (file).
Error[173] C:\DOCUMENTS AND SETTINGS\ARTURO GALLARDO\MIS DOCUMENTOS\ARCHIVOS DE INVESTIGACION\PROGRAMAS\ICPROG\PICTESTXXX.ASM 122 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\ARTURO GALLARDO\MIS DOCUMENTOS\ARCHIVOS DE INVESTIGACION\PROGRAMAS\ICPROG\PICTESTXXX.ASM)
Halting build on first failure as requested.
BUILD FAILED: Thu Mar 06 00:40:39 2008

lo que se me iso raro es de quee marcara como error la carpeta donde esta ubicado mi prigrama el error 173,jeje se pasa. bueno, hasta mañana buenas noches

#27  
Leon Elec
Ubicación: Argentina
Registrado: 07 Nov 2007
Mensajes: 267
citar
Bueno. El error está explicado en el primer videotutorial que hise.

No podes exederte de los 62 caracteres en ruta. Lo que tenes que hacer es crear el proyecto en una ruta corta, por ejemplo:

c:\archivo de investigación\programas\

Y listo. Va a andar. Es por eso que este error, no te conduce a ninguna línea.

#28  
Zettaextremo
Ubicación: Rio Bravo, Mexico
Registrado: 01 Nov 2007
Mensajes: 34
citar
Message[302] C:\PROGRAMAS\PICTESTXXX.ASM 29 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\PROGRAMAS\PICTESTXXX.ASM 31 : Register in operand not in bank 0. Ensure that bank bits are correct.

solo me kedan esos dos errores, los status, mi programa consiste en que va a mover 18 motores( un hexapodo), solo lo unico que quiero comprobar es si todos los motores tienen la misma velocidad, primero mi programa empieza subiendo todas las patas, como solo quiero que ponga paso redoblado sin avanzar, movere tres patas al mismo tiempo,esto es aa2, ab2 estan conectados a 6 motores ( 3 patas ) y ba2, bb2 son las otras tres patas, pero el 2 significa que al mandar una señal la pata sera atraida hacia el cuerpo, todos los que son 1 significa que las patas se alejaran del cuerpo, no se si saben como se mueve un hexapodo, como que se apoya en tres patas y sube las otras, bueno como sea, el programa durara 1 seg, para que todas las patas lleguen al tope 0, luego las entradas corresponden a dos microswitch, uno es para paso redoblado sin desplazamiento, el otro es para que el robot gire sobre su propio eje, bien al elegir la entrada 1(paso redoblado), se bajaran las patas aproximandamente 1 seg, osea que las patas no se detendran hasta que pase 1 seg, todas son movidas junto con sus dos grados de libertad, luego se detienen, y tres patas empiezan el retroceso por 2/3 de segundo ya que no quiero que lleguen al tope 0 donde estaban al principio, luego que se detengan, que se active los 1 otra ves y bajen 2/3 de segundo para que queden de nuevo junto a las demas patas, a continuacion, se activaran las otras tres patas que no se han movido, y luego se detendran y bajaran y asi es un ciclo hasta que en entrada 2 aparesca una señal, despues sale de la subrutina pero no se si tenga que haber un retraso para evitar que al presionar entrada 2 se active la subrutina 2, la subrutina 2 es identica a la anterior, solo que aqui se mueven los motores c, estos motores mueven a toda la pata, horizontalmente, para producir desplazamiento, mi programa consiste en que al principio todas las patas estan derechas, bajan, se detienen, lo siguiente es de que va a aber 6 motores, los motores se conectaran inversamente a su simetrico, es decir que un motor girara a un lado, su vecino girara al contrario, el programa levanta tres patas perpendicularmente al piso, bueno ahora los motores c se moveran 1/3 de segundo para mover el cuerpo, como si estuviera girando, despeus se bajan las tres patas y se suben las otras, y ahora giraran 2/3 de segundo, ya que al principio estaban como que a la mitad y por eso gira 1/3, bueno luego se bajan, y asi sucesivamente hasta que aparesca 1 en entrada 1, el programa vuelve a desplazarse solo 1/3 para regresar a la normalidad, el programa regresa al menu y todas las patas regresan a la normalidad, es decir se retraen hacia el cuerpo, pues no se si me explique bien, aqui esta el hexapodo
http://www.metroflog.com/aRtUr0oo0xxTreMe/20080207/hexapodo_con_futuras_tenazas

Las entradas de los controladores de los motores dc las remplace por leds na mas para ver si funcionaban correctamente, , jajaj y tengo pensado meterle 1 pic a cada pata pero ya mas adelante, primero quiero hacer la prueba de la coordinacion de los motores, si hay alguno que vaya mas lento, mas rapido, menos torque etc. O que otra cosa puedo hacer para probar los motores, solo dispongo de un multimetro asi que no podre usar otro instrumento de medicion, pero como les digo ya nada mas me quedaron esos dos errores, los demas ya esta corregido, gracias otra ves a airo airon, y acrca de los videos, estan muy buenos, pero me sigue generando ese error, gracias por su atencion nos vemos

#29  
Leon Elec
Ubicación: Argentina
Registrado: 07 Nov 2007
Mensajes: 267
citar
Esos no son errores, son Warning, o sea, advertencias. Debes hacerle doble clic al Message y te llevará donde el conflicto. Lo que dice, es que el registro que está utilizando, no se encuentra en el banco 0, y te pide que chequees si es correcto. Si es correcto, déjalo como está. si no, corrígelo (obvio). Estos Message o Warning, no evitan que el compilador te genere el archivo .hex para cargar al micro. Solo los errores son los que no permiten generar los .hex.

#30  
Zettaextremo
Ubicación: Rio Bravo, Mexico
Registrado: 01 Nov 2007
Mensajes: 34
citar
a ok voy a verificar eso pense que eran errores je.

 Responder



 Otros temas de interés 
No hay mensajes nuevos Como separar señales, si son entrada y salida de datos
No hay mensajes nuevos Circuito acondicionador de entrada 4-40mA y salida 0-10 V
No hay mensajes nuevos Entrada/Salida de audio a traves de USB
No hay mensajes nuevos Conectar salida video de camara a monitor video
No hay mensajes nuevos Circuito con reles para puerto paralelo con salida de 3.3v

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||
Contacto | Acerca de | Ayuda | Normas de la Comunidad | Privacidad | Mapa de los foros
© Foros de Electrónica - Comunidad Internacional de Electrónicos