Autor Tema: problema con retardo de 16f84 y 16f628  (Leído 10775 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: problema con retardo de 16f84 y 16f628
« Respuesta #15 en: 11 de Julio de 2008, 14:42:47 »
Ok. Si. Es el primero que posteaste el que simulé.

Tabulá la linea de config...

es decir...dale un "TAB" o un par de espacios con la barra espaciadora para que no te quede en la columna 1.

Saludos.
"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 En

  • PIC10
  • *
  • Mensajes: 26
Re: problema con retardo de 16f84 y 16f628
« Respuesta #16 en: 11 de Julio de 2008, 14:52:41 »
tenes razon cambie de columna, la deje ay

   List p=16f84
STATUS equ 0x03
PORTB equ 0x06
TRISB equ 0x86
CONT equ 0x0C
CONT2 equ 0x0D
CONT3 equ 0x0E
;P equ 0x64
;M equ 0x61
;N equ 0x21
      __config _INTOSC_OSC_NOCLKOUT & _WDT_OFF
      org 0x00
      goto INICIO
      org 0x05
INICIO
      bsf STATUS,5    ;cambia al banco1
      clrf TRISB       ;PORTB salidas
      bcf STATUS,5    ;cambia al banco0
PROG
      movlw b'11111111'
      movwf PORTB
      call RETARDO
      movlw b'00000000'
      movwf PORTB
      call RETARDO
      goto



y me dejo de tirar este


Warning[205] C:\84\84.ASM 11 : Found directive in column 1. (__config)



pero todavía me falla con esto  :?



Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84 "84.asm" /l"84.lst" /e"84.err"
Error[113]   C:\84\84.ASM 11 : Symbol not previously defined (_INTOSC_OSC_NOCLKOUT)
Error[113]   C:\84\84.ASM 11 : Symbol not previously defined (_WDT_OFF)
Message[302] C:\84\84.ASM 17 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Halting build on first failure as requested.
BUILD FAILED: Fri Jul 11 14:49:59 2008

pd: como haces para saber la cantidad de tiempo que lleva el retardo con el MPLAB SIM yo lo unico que se hacer es hacerlo correr con f7

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: problema con retardo de 16f84 y 16f628
« Respuesta #17 en: 11 de Julio de 2008, 15:00:11 »
Porque esa linea no es para este PIC...Probá con esta:

__CONFIG  _WDT_OFF &  _PWRTE_ON &  _XT_OSC

y no la pongas antes del 0x00. Ponela después del list...

Con respecto a la simulación.

Una vez que hayas activado el MPLAB SIM, andate a Debugger--Settings y configurá 4 Mhz.

Después añadí dos breakpoints(en la línea Call RETARDO y en la movlw b'00000000' por ejemplo)(podés añadirlos fácilmente haciendo doble click en la barra gris a la izquierda de la linea donde quieras colocarlo).

Ahora anda a Debugger--StopWatch. Se abre una ventana

Ensamblá el programa y después presiona la tecla F9(o dale Play). Poné a Zero el StopWatch. Volvé a presionar el F9. Fijate cuanto dice el StopWatch.

Saludos.
"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 En

  • PIC10
  • *
  • Mensajes: 26
Re: problema con retardo de 16f84 y 16f628
« Respuesta #18 en: 11 de Julio de 2008, 15:32:15 »
bueno antes que nada, muy bueno el dato para saver el tiempo de retardo, me va a ser muy util

y el codigo ahora esta si



        List p=16f84
        __CONFIG  _WDT_OFF &  _PWRTE_ON &  _XT_OSC
STATUS equ 0x03
PORTB equ 0x06
TRISB equ 0x86
CONT equ 0x0C
CONT2 equ 0x0D
CONT3 equ 0x0E

      org 0x00
      goto INICIO
      org 0x05
INICIO
      bsf STATUS,5    ;cambia al banco1
      clrf TRISB         ;PORTB salidas
      bcf STATUS,5    ;cambia al banco0



y me tira este error


Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Archivos de programa\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F84 "84.asm" /l"84.lst" /e"84.err"
Error[113]   C:\84\84.ASM 2 : Symbol not previously defined (_WDT_OFF)
Error[113]   C:\84\84.ASM 2 : Symbol not previously defined (_PWRTE_ON)
Error[113]   C:\84\84.ASM 2 : Symbol not previously defined (_XT_OSC)
Message[302] C:\84\84.ASM 17 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Halting build on first failure as requested.
BUILD FAILED: Fri Jul 11 15:25:21 2008



estoy de mala racha :?

Desconectado En

  • PIC10
  • *
  • Mensajes: 26
Re: problema con retardo de 16f84 y 16f628
« Respuesta #19 en: 11 de Julio de 2008, 15:52:47 »
bueno no creo que sirva mucho pero aca un poco del circuito



     





Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: problema con retardo de 16f84 y 16f628
« Respuesta #20 en: 11 de Julio de 2008, 16:06:30 »
despues del list p=....  deberia ir un
#INCLUDE P16F88.INC

y hasta no hará falta que hagas las definiciones de los registros como el puertob, trisb, status, etc.

la configuracion _int.... es para utilizar oscilador interno en el 16f628a

un saludo
.

Desconectado En

  • PIC10
  • *
  • Mensajes: 26
Re: problema con retardo de 16f84 y 16f628
« Respuesta #21 en: 11 de Julio de 2008, 16:37:13 »
muchas gracias, puse la linea #INCLUDE P16F84.INC y me acepto perfecto la configuracion que antes me tiraba error ahora el programa eta completo y compila perfecto

aca el programa con las modificaciones por si alguien despues tiene el problema y lo quiere ver:




   List p=16f84
   #INCLUDE P16F84.INC
   __CONFIG  _WDT_OFF &  _PWRTE_ON &  _XT_OSC
STATUS equ 0x03
PORTB equ 0x06
TRISB equ 0x86
CONT equ 0x0C
CONT2 equ 0x0D
CONT3 equ 0x0E

      org 0x00
      goto INICIO
      org 0x05
INICIO
      bsf STATUS,5    ;cambia al banco1
      clrf TRISB       ;PORTB salidas
      bcf STATUS,5    ;cambia al banco0
PROG
      movlw b'11111111'
      movwf PORTB
      call RETARDO
      movlw b'00000000'
      movwf PORTB
      call RETARDO
      goto PROG
RETARDO
      movlw .100      ; 1
      movwf CONT3        ; 1
CICLO3
      movlw .97      ; 1
      movwf CONT2       ; 1
CICLO2
      movlw .33            ; 1
      movwf CONT         ; 1
CICLO
      decfsz CONT,f       ;1*(N-1)+2
      goto   CICLO        ;2*(N-1)
      decfsz CONT2,f       ;1*(M-1)+2
      goto   CICLO2       ;2*(M-1)
      decfsz CONT3,f       ;1*(P-1)+2
      goto   CICLO3        ;2*(P-1)
      return
   end


aclaro.
los comentarios a la derecha de la etapa de retardo son los ciclos que lleva cada instruccion




aunque todavia los pulsos siguen siendo demasiado rapidos y eso la verdad que me desconcierta mucho,
lo unico que se me ocurre es lo que decia bruno de que la alimentacion este mal pero yo al pic le estoy dando 5v que llegan bien, tambien puede ser que el oscilador este dañado pero si fuera asi no se si funcionaria.... la verdad nose, para colmo al depurar el programa con el MPLAB SIM los retardos duran un segundo como tendria que ser :?

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: problema con retardo de 16f84 y 16f628
« Respuesta #22 en: 11 de Julio de 2008, 16:44:35 »
intenta colocarle un condensador entre los terminales de alimentación, osea entre el positivo y negativo de la fuente, un condensador de 100nf (104)
.

Desconectado En

  • PIC10
  • *
  • Mensajes: 26
Re: problema con retardo de 16f84 y 16f628
« Respuesta #23 en: 11 de Julio de 2008, 22:15:25 »
mmmm  voy a probar, pero tengo que comprar. = nose pero ya desconfio del oscilador, no puede ser que yo le cambie el retardo a mucho mas tiempo y ni se inmute siempre exactamente con la misma velocidad de parpadeo de led :?, además no me tira ninguna clase de error




Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: problema con retardo de 16f84 y 16f628
« Respuesta #24 en: 12 de Julio de 2008, 10:59:11 »
los errores como seguramente te diste cuenta son simplemente errores de sintaxis y hasat cierto orden en las lineas de código, puedes escribir todas las instrucciones correctamente pero sin ningun sentido y el compilador al ver q todo esta escrito correctamente no te dira q hay errores.

En resumen el compilador, o ensamblador en este caso solo detecta errores de sintaxis y orden, quiza alguna otra cosa más.
No encuentra errores de algoritmo.

Puede q sea el condensador, cuando tienes una fuente de transformador se tiene muchos picos y caidas, mucho ruido que hace q el microcontrolador actue de forma extraña, ahora si utilizas una bateria, eso si seria extraño, jeje, ahi si talvez sea un problema de cristal
.

Desconectado En

  • PIC10
  • *
  • Mensajes: 26
Re: problema con retardo de 16f84 y 16f628
« Respuesta #25 en: 12 de Julio de 2008, 14:59:06 »
si, lo que decis de que el compilador solo detecta errores de sintaxis es verdad, pero la verdad que tampoco creo que el codigo tenga un error en el algoritmo, pasa que es muy simple, no tiene mucho secreto

y sobre lo que habia dicho de que puede que sea el cristal por otro lado lo pienso y si el cristal andaria mal totalmente no me correria ninguna de las instrucciones siendo que despues de unas pruebas me doy cuenta que el pic si hace lo que le digo, solo tiene problemas con los retardos, por lo que se podria descartar la falla total del cristal, ahora... si falla parcialmente pienso que el problema que tendria que tener es que el retardo me dure un poco menos o un poco mas, al principio si me paso eso como ya comente antes y los retardos me duraban mucho menos de lo debido

pero ahora cambie de prender todas las led a prender unas---- retardo------ y luego otras------ retardo----- vuelve

y el resultado fue que me prende las primeras pero las mismas quedan siempre prendidas como dando señal de que el prog se quedo en esa instruccion o en el retardo que se convierte a infinito


el codigo cambiado:

PROG
      movlw b'11000000'
      movwf PORTB
      call RETARDO
      movlw b'00000011'
      movwf PORTB
      call RETARDO
      goto PROG

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: problema con retardo de 16f84 y 16f628
« Respuesta #26 en: 12 de Julio de 2008, 20:14:41 »
le pusiste el condensador de 100nf?

porque el código si esta bien
.

Desconectado En

  • PIC10
  • *
  • Mensajes: 26
Re: problema con retardo de 16f84 y 16f628
« Respuesta #27 en: 12 de Julio de 2008, 21:53:15 »
perdona, no te entendi bien donde me decis que lo coloque

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: problema con retardo de 16f84 y 16f628
« Respuesta #28 en: 14 de Julio de 2008, 10:44:13 »
colocalo en la alimentacion, entre VDD y VSS del microcontrolador
.

Desconectado En

  • PIC10
  • *
  • Mensajes: 26
Re: problema con retardo de 16f84 y 16f628
« Respuesta #29 en: 15 de Julio de 2008, 10:45:53 »
que tal saben que estuve probando otra forma de hacer retardos y es con los registros especiales TMR0, OPTION, TOIF y maso menos de a poco lo voy entendiendo pero veo que la maxima cifra maso menos redonda que pude lograr con un divisor de 128 son 25ms, valor con el cual no estoy muy contento ya que tendria que repetir la instrucción 20 veces para llegar al medio segundo.

¿alguien sabe como puedo aumentar el tiempo de retardo con este metodo sin tener que repetir la instruccion tantas veces?, ¿se puede?


desde ya muchas gracias


la cuenta:



255 -TMR0 = 25·10-3 / (1·10-6 · 128) = 195,3

(el TMR0 lo cargo con 60) :-/


 

anything