Autor Tema: Problemas con el PIC16F873  (Leído 4685 veces)

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

Desconectado anna

  • PIC10
  • *
  • Mensajes: 5
Problemas con el PIC16F873
« en: 11 de Junio de 2006, 07:52:27 »
Hola a todos, quería hacer una consulta porque seguro que alguien podrá resolverlo!!!

Estoy realizando un robot, el micro es el 16F873 y lo programo con el PicStartPlus. En principio todo bien, el programa se carga en el pic i cuando lo pruebo parece que tarda en ejecutar las rutinas. Por ejemplo, algo muy senzillo.

estat_baix   BTFSC   PORTA,0      ;entrada
         GOTO   estat_alt
         bcf      PORTA,5
         bsf      PORTA,4      
         GOTO    estat_baix
estat_alt   bsf      PORTA,5
         bcf      PORTA,4
         btfss   PORTA,0      
         GOTO    estat_baix
         GOTO   estat_alt
      
El programa que pruebo es muy senzillo pues bien, lo que me ocurre es que cuando activo a 1 la entrada, me tarda unos 5 segundos a activar la otra salida, y viceversa!!!! 

Muchas gràcias por vuestra atención!!!!

ANNA



Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Problemas con el PIC16F873
« Respuesta #1 en: 11 de Junio de 2006, 09:56:52 »
Eso es porque el micro no acepta el catalán  :mrgreen: (una bromita :) )

Mejor sube todo el programa, si no es muy extenso. El hecho que te haga un delay de 5 segundos es extraño. Puede que se esté reiniciando por watchdog o alguna rutina de interrupciones... o se te esté yendo el puntero a tomar por eeeeesteee...
Súbelo y lo analizamos
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemas con el PIC16F873
« Respuesta #2 en: 11 de Junio de 2006, 12:35:14 »
anna como bien te dijo pibe falta información útil a tu post.  Comentanos si has seteado el watchdog al programar el pic y si es así, si has cambiado las opciones del prescaler del mismo o lo has dejado por defecto (1:128).  Para que te des una idea, un pic a 4Mhz con un prescaler en 1:128 asignado al WatchDog Timer hará que el pic se resetee cada 3,2 segundos.

Además , algo que veo en tu código es que estas usando el puerto RA4 como salida, para lo cual te pido que te fijes este foro,  los consejos sobre utilizar dicho pic como E/S.

Otro punto es que tengas mucho cuidado de usar un puerto como E/S en la forma que tu lo usas, ya que de acuerdo a como sea el circuito exterior pudiera que no te ande por dicha causa.

Si quieres, puedes leer algo del tema en este link que si bien hablamos en lo puntual sobre los PIC18F (y sus registros LATx) en realidad ahí explico la causa de porqué existen esos registros.

http://www.todopic.com.ar/foros/index.php?topic=11553.0

El efecto es tanto mayor dependiendo de la frecuencia de clock que uses y de la impedancia que tenga lo que le hayas conectado al pin del pic.

Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado anna

  • PIC10
  • *
  • Mensajes: 5
Re: Problemas con el PIC16F873
« Respuesta #3 en: 12 de Junio de 2006, 06:25:37 »
Hola otra vez, he seguido haciendo pruebas con el PIC y ahora he probado otras entradas y otro puerto de salida pero me hace lo mismo. Es decir, cuando alimento a 5V la entrada RA1 se activa al momento la salida RB3, pero cuando quito los 5V de la entrada RA1, me tarda 5 segundos en activar la salida RB2.

Os escribo todo el código del programa a ver si alguien sabe que puede pasar.

list      p=16f873            ; list directive to define processor
   #include <p16f873.inc>        ; processor specific variable definitions
   
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_ENABLE_ON & _LVP_OFF & _CPD_OFF

org      0x00   
      goto   start   ;Vector de reset
      org      0x06

MAIN    CODE
start

      BCF      STATUS, RP0      
      BCF      STATUS, RP1
      CLRF    PORTA          
      CLRF    PORTB
      BSF    STATUS,RP0       
      MOVLW    0x06            
      MOVWF   ADCON1         
      MOVLW   0xFF
      MOVWF    TRISA          
      MOVLW   0x00
      MOVWF    TRISB
      BCF   STATUS,RP0      
      
estatbaix       BTFSC   PORTA,1      
              GOTO   estatalt
         BCF     PORTB,3
         BSF     PORTB,2
         GOTO   estatbaix
         
estatalt         BSF   PORTB,3
         BCF     PORTB,2
         BTFSS    PORTA,1
         GOTO   estatbaix
         GOTO   estatalt

      END           

Muchas gracias!!!           

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemas con el PIC16F873
« Respuesta #4 en: 12 de Junio de 2006, 08:39:41 »
Estoy viendo que tienes configurado el modo oscilador de alta velocidad. 

¿Qué frecuencia tiene el cristal que usas?

En el soft a simple vista no encontré nada raro.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado anna

  • PIC10
  • *
  • Mensajes: 5
Re: Problemas con el PIC16F873
« Respuesta #5 en: 12 de Junio de 2006, 17:39:05 »
El cristal que utilizo es de 20 MHz, también lo prové con uno de 4 y me hace exactamente lo mismo.........


Me parece un poco raro porque a priori está bién, podría ser el reset?? utilizo el reset manual por la patilla MCLR y en prinicipio está estabilizado, normalmente a 5V!!! No lo entiendo....

Podría ser el programador?? el PIC START Plus es el que utilizo y el software es el MPLAB 7.2...............


Gràcias por vuestra ayuda!!!!

SALUDOS

Desconectado LabPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 143
Re: Problemas con el PIC16F873
« Respuesta #6 en: 12 de Junio de 2006, 18:04:58 »
Hola anna un saludo, una sugerencia pq no le quitas la parte en negritas a esta parte de tu programa y pruebas

estatbaix         BSF   PORTB,3
         BCF     PORTB,2
         BTFSS    PORTA,1
         GOTO   estatbaix


estatalt         BSF   PORTB,3
         BCF     PORTB,2
         GOTO   estatalt

igual y sale, pero esta algo raro que no te funcione pues asimple vista no se le ve ningun error.

Una pregunta adicional ¿Has simulado tu programa con el MPLAB SIM?

Saludos LabPIC
« Última modificación: 12 de Junio de 2006, 18:47:56 por LabPIC »
¡¡¡Viva México cabrones!!!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problemas con el PIC16F873
« Respuesta #7 en: 13 de Junio de 2006, 07:28:37 »
El programa esta OK.
Primero, sospecharia de uno mismo: cuando dices: "le quito los 5v" supongo que te estaras referiendo a que conectas RA1 a 0V y no que simplemente dejas el pin flotante.....
Segundo, sospecharia del cristal, proba con otro de 20mhz(si el circuito esta montado sobre un protoboard el circuito, ponele capacitores de 22pf-27pf conectados a GND por ejemplo).Si lo probas en 4mhz asegurate de que la configuracion este correctamente seteada: pone _XT_OSC  en lugar de _HS_OSC.
Tercero: al circuito del pulsador del reset, por ahora, eliminalo y coloca directo una resistencia de 1k a 5v conectado al pin MCLR.

Mucho mas misterio que eso no puede haber. Asegurate tambien de conectar TODOS lo Vss y Vdd que posea el PIC, y no tan solo uno de cada uno(Maunix me corrigio en otro post este latente error).
Por ultimo, proba con otro PIC.
Exitos!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado anna

  • PIC10
  • *
  • Mensajes: 5
Re: Problemas con el PIC16F873
« Respuesta #8 en: 13 de Junio de 2006, 10:35:42 »
Pues tienes razón, les quito los 5V y no lo pongo a masa porque estoy haciendo pruebas y somooooooooos novatassssssssss!!!!!!!!!!!!!!!!!! Como tendría que hacerlo???? SEría así?

5V + final de carrera + Resistencia a la  entrada , todo en serie?? o bien sería de otra manera, no lo sé!!!!

Gràcias por tu ayuda!!!!!!!!!!!!!!!!!!!!!!

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: Problemas con el PIC16F873
« Respuesta #9 en: 13 de Junio de 2006, 13:55:18 »
ese MAIN CODE? métele unas ; para que sea un comentario porque ese CODE parece sospechoso . Puede que el MPLAB te lo tome como una instrucción.

otra cosa: ponle una pausa entre una rutina (estado alto- estado bajo ) para que puedas ver que hace el programa
 además para contrarrestar los rebotes que ocasiona el pulsador sino puede rebotar tantas veces que vaya a saber uno donde cae ... puede caer en 0 o en 1 dependiendo en las miles de veces que haya rebotado el contacto.
Además ponle una resistencia entre PORTA 1 y +5v de 1k, y el pulsador entre PORTA 1 y masa.

Un consejo: Como novata intenta no usar el puerto A . Prueba por puerto B que es mas facil de configurar , incluso no necesitarás las resistencias a +5v por cada pin ya que las trae incorporada.

Sins ara

Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado LabPIC

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 143
Re: Problemas con el PIC16F873
« Respuesta #10 en: 13 de Junio de 2006, 14:05:31 »
Tienes razon pibe, el MPLAB toma como instruccion al MAIN CODE, incluso muestra error al compilarlo, anna asegurate de ponerle ; para que no sea haya problemas.

Con respecto al rebote que menciona pibe, generalmente el retardo que se da al momento de puchar el boton, es de aprox 20 ms y se aconseja ponerlo cuando a un solo boton se le asignan mas de una tarea.

Saludos LabPIC
¡¡¡Viva México cabrones!!!

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemas con el PIC16F873
« Respuesta #11 en: 16 de Junio de 2006, 17:39:22 »
Tienes razon pibe, el MPLAB toma como instruccion al MAIN CODE, incluso muestra error al compilarlo, anna asegurate de ponerle ; para que no sea haya problemas.

main code --> no es una instrucción ni tampoco el mpasm incurre en un error.  Es que aquí parece que anna ha mezclado las cosas.

Es una directiva del ensamblador.

La directiva code se usa para la codificación de código reubicable ( o relotacable code) donde a la izquierda se le indica en que sección de memoria se linkeará dicho código.

Tal vez sea algo complicado explicarlo de esa forma, pero no se me ocurre otra manera.

En el archivo linker, uno define varias secciones de memoria de programa y de memoria ram.  Luego en el código uno en vez de usar 'org' usa la directiva code acompañada anteriormente de la sección donde estará ubicada el código.

Por ejemplo, podemos definir una seccion1 y una seccion2 .  La seccion1 podría ser la RomBank0 y la seccion2 la RomBank1.

Al hacer

seccion1 code

le indicamos al ensamblador que el código a continuación deberá ubicarse en la sección 1.



Volviendo al código de anna eso debiera dar error de movida, salvo que hagan MAIN_CODE y listo, el ensamblador lo tomaría como un label y compilaría sin problemas.


Saludos! :) :)
« Última modificación: 16 de Junio de 2006, 17:40:55 por maunix »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Problemas con el PIC16F873
« Respuesta #12 en: 16 de Junio de 2006, 17:40:01 »
Pues tienes razón, les quito los 5V y no lo pongo a masa porque estoy haciendo pruebas y somooooooooos novatassssssssss!!!!!!!!!!!!!!!!!! Como tendría que hacerlo???? SEría así?

5V + final de carrera + Resistencia a la  entrada , todo en serie?? o bien sería de otra manera, no lo sé!!!!

Gràcias por tu ayuda!!!!!!!!!!!!!!!!!!!!!!

¿Puedes postear un esquema de esta conexión?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything