Autor Tema: Problema con llamadas a retardos, se cicla el programa  (Leído 2643 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado hipperferalkus

  • PIC10
  • *
  • Mensajes: 5
Problema con llamadas a retardos, se cicla el programa
« en: 15 de Abril de 2012, 00:38:31 »
Hola amigos, estamos realizando un programa en ASM para el pic16f84a, el cual sirve para hacer caminar un pequeño robot casero que utiliza un par de servomotores, cada uno de ellos tiene 3 cables, uno de VCC, otro de VDD y el tercero es para recibir la señal de entrada o encendido.

Basicamente tiene que caminar una pequeña trayectoria en zig-zag esto es utilizando las siguientes subrutina

Adelante, Derecha, Izquierda.

Practicamente no es muy complicado el programa, se realizan unos retardos mediante el uso de esta pagina http://www.piclist.com/techref/piclist/codegen/delay.htm

Bueno se ha simulado el programa con MPLAB y Proteus y en teoria hace lo que debe hacer, pero al grabarlo al pic y montarlo al robot, parace que solo hace caso a la primera rutina de llama en este caso Adelante y se cicla adentro e ignora las demas (Derecha, Izquierda)

Agrego el codigo

programa principal
Código: [Seleccionar]
LIST   P=16F84A
INCLUDE  <P16F84A.INC>
    
__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

cblock 0x20
        Tmp1
Tmp2
Tmp3
endc

  org 0x00
goto principal


 
principal

bsf STATUS,RP0  ; Hacemos uso del banco 1 para configuraciones
    CLRF    TRISA  ;configura el puertoA como salidas; es decir coloca a 0 todos los bits

bcf STATUS,RP0  ; Hacemos uso del banco 0 para trabajar
CLRF PORTA   ; Limpiamos el puertoA


        call Adelante
        call Derecha
call Adelante
call Izquierda

    goto $
        include <RUTINAS.INC>
include <RETARDOS.INC>
END

RETARDOS.INC

Código: [Seleccionar]
; Delay = 1 seconds
; Clock frequency = 4 MHz

; Actual delay = 1 seconds = 1000000 cycles
; Error = 0 %


Retardo1s
;999990 cycles
movlw 0x07
movwf Tmp1
movlw 0x2F
movwf Tmp2
movlw 0x03
movwf Tmp3
Retardo
decfsz Tmp1, f
goto RA
decfsz Tmp2, f
RA goto RB
decfsz Tmp3, f
RB goto Retardo

;6 cycles
goto RC
RC goto RDD
RDD goto RE

;4 cycles (including call)
RE
return


Retardo5s
;4999993 cycles
movlw 0x2C
movwf Tmp1
movlw 0xE7
movwf Tmp2
movlw 0x0B
movwf Tmp3
Retardo5s_0
decfsz Tmp1, f
goto RA5
decfsz Tmp2, f
RA5 goto RBB
decfsz Tmp3, f
RBB goto Retardo5s_0

;3 cycles
goto RC5
RC5 nop

;4 cycles (including call)
return

RUTINAS.INC
Código: [Seleccionar]


;Movimientos del robot:
; 1.- Avanzar hacia adelante
; 2.- Girar hacia la derecha
; 3.- Girar hacia la izquierda

; 1.- Rutina que avanza hacia adelante.

Adelante
MOVLW .3
MOVWF PORTA
call Retardo5s
CLRF    PORTA
return

; 2.- Rutina que gira hacia la derecha

Derecha
    MOVLW .1
    MOVWF PORTA
    call Retardo5s
    CLRF    PORTA
    return
    
Izquierda
  MOVLW .2
  MOVWF PORTA
  call Retardo5s
  CLRF    PORTA
  return

« Última modificación: 15 de Abril de 2012, 00:52:14 por hipperferalkus »

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Problema con llamadas a retardos, se cicla el programa
« Respuesta #1 en: 15 de Abril de 2012, 01:11:34 »
Los include se ponen en el encabezado del programa, despues de incluir la libreria del pic.
tu programa solo va a realizar la secuencia una vez, porque lo terminas con un
Código: [Seleccionar]
goto $
talvez el problema esta en la coneccion, no es que se quede en la primera rutina, talvez el pic se resetea constantemente y no ejecuta nada, pero pone los pines en alto y tu robot se mueve hacia adelante
"Nada es imposible, no si puedes imaginarlo"

Desconectado hipperferalkus

  • PIC10
  • *
  • Mensajes: 5
Re: Problema con llamadas a retardos, se cicla el programa
« Respuesta #2 en: 17 de Abril de 2012, 01:24:27 »
Hola Rivale, ya hice lo que tu me recomendaste, ya cambie el circuito a otro proto nuevo, ya cambie el pic, y los cables y no hace lo que debe hacer, quizas sea por parte del programa ya llevo unos dias en esto y pues no se ahora como hacerle.

Saludos.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Problema con llamadas a retardos, se cicla el programa
« Respuesta #3 en: 17 de Abril de 2012, 01:34:28 »
tienes conectado el master clear a vdd?
"Nada es imposible, no si puedes imaginarlo"

Desconectado hipperferalkus

  • PIC10
  • *
  • Mensajes: 5
Re: Problema con llamadas a retardos, se cicla el programa
« Respuesta #4 en: 17 de Abril de 2012, 14:07:09 »
esta conectado a 2 resistencias que estan en serie y conectadas a VCC

Algo parecido a la imagen siguiente
s

pero sin el push button

Desconectado hipperferalkus

  • PIC10
  • *
  • Mensajes: 5
Re: Problema con llamadas a retardos, se cicla el programa
« Respuesta #5 en: 18 de Abril de 2012, 18:09:23 »
Bueno pude revisar si el pic saca la informacion que debe sacar en lugar de conectar el robotin a los pines del puerto A puse unos leds y pude observar que si sale la secuencia de 1 y ceros correspondientes a las rutinas avanza, derecha e izquierda.

Ahora conecto el robotin y no camina, como que no llega demasiado voltaje, he medido con el multimetro la salidas y estan bien, pero pues algo pasa cuando conecto con el robotin.

Desconectado hipperferalkus

  • PIC10
  • *
  • Mensajes: 5
Re: Problema con llamadas a retardos, se cicla el programa
« Respuesta #6 en: 24 de Abril de 2012, 14:02:44 »
problema resuelto, saludos

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Problema con llamadas a retardos, se cicla el programa
« Respuesta #7 en: 24 de Abril de 2012, 14:03:54 »
cuentanos cual fue la solucion?
"Nada es imposible, no si puedes imaginarlo"