Autor Tema: pic con bloqueos.  (Leído 3133 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
pic con bloqueos.
« en: 02 de Febrero de 2008, 16:48:33 »
hola a todos.
ya he terminado la primera fase de un circuito para emular los caudalimetros de los automoviles.y se me presenta un problema que no se si es de harware o software.

es la primera vez que trabajo con el wachtdog,y me esta pasando algo raro que no se si tiene que ver con este.

resulta que cuando engancho el circuito a la alimentacion,el circuito funciona bien.pero avezes al alimentar el circuito el chip no funciona como debiera.y he activado el watchdog para que se resetee el circuito si se bloquea.
pero aun asi cuando el circuito se bloquea,el chip no se puede hechar a funcionar aunque le haga un reseteo externo.

para que funcione hay que volver a quitar la alimentacion,y posteriormente conectarlo.

que puede pasar aqui?

lo unico que se me pasa por la cabeza es que como el arranque del programa ,esta basado en un valor que esta almacenado en la eeprom de datos.y puede que cuando activo la alimentacion el valor sea diferente o que no lo halla leido bien y por eso no funcione,lo que hare es modificar el programa para que cuando lea el valor lo haga dos vezes.

si a alguien se le ocurre que podiera haber otro problema se lo agradeceria.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: pic con bloqueos.
« Respuesta #1 en: 02 de Febrero de 2008, 17:35:20 »
he averiguado algo.y es que cuando se bloquea,realmente no esta bloqueado.ya que un contador interno que he confecionado para que incremente unas direcciones de datos de la eeprom interna,funciona perfectamente.

asi que las interrupciones funcionan bien. ahora me queda ver porque no corre el programa principal.algo mas dificil ya que el fallo no ocurre cuando uno quiere.


lo que no entiendo es porque aunque resetee el pic,este no comienza el programa desde el principio.

es que hay algun registro interno que no se borra al resetear el pic,y que si se borra si se apaga? cuales son? y como borrarlos si se produce este fallo.
« Última modificación: 02 de Febrero de 2008, 17:56:37 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: pic con bloqueos.
« Respuesta #2 en: 02 de Febrero de 2008, 20:23:16 »
creo haber encontrado el problema.
resulta que otra vez me ha fallado el hardware del registro STATUS.como comentaba en este tema:

http://www.todopic.com.ar/foros/index.php?topic=20118.msg149155#msg149155


por lo visto,el problema puede estar,en que estoy utilizando un xtal de 4.194304Mhz en vez del 4Mhz que es el que puede como maximo el pic que estoy utilizando.

ya que el pic ejecutaba bien un subprogama de contador de tiempo.que tengo puesto en una interrupcion por desbordamiento del TMR1.

y en el programa principal tengo una instruccion de resta que modifica el valor del registro STATUS,y que luego compruebo el bit de carry,para tomar una decision.

pues despues de conectar la alimentacion de forma intermitente,para producir el fallo,el pic se me quedo bloqueado.
y no podia ponerlo a funcionar.entonces introduge la linea BSF STATUS,C en la zona donde el pic se quedaba bloqueado y logre que el pic empezara a funcionar de nuevo.
aunque quizas lo que hubiera hecho falta poner era BCF STATUS,C pero se desbloqueo con la anterior instruccion.

supongo que al escribir en el bit C de STATUS,he desbloqueado esta celula de memoria.
he intentado hacer lo mismo con el otro pic que tengo bloqueado,pero no funciona.seguro que este flag se ha estropeado.

P.D alguien me puede dar informacion de los problemas de trabajar con velocidades superiores a las dadas por el fabricante?
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: pic con bloqueos.
« Respuesta #3 en: 03 de Febrero de 2008, 11:00:28 »
hola groundman
que pic estas usando? que no admite 4.194304Mhz como tienes configurado el cristal? creo que para ese valor es XT pero prueba con HS
otra cosa, dices que el programa re-arranca tras desconectar la alimentacion y no tras un reset. eso puede ser por algun registro de la ram que no le da tiempo a perder la info, e interfiere en el arranque del programa, como hablas algo sobre el arranque con un reg. de la eeprom, a lo mejor es un reg. usado en esa rutina, si el reset es de muy corto tiempo y queda algo de energia en el circuito, poca ya que el pic resetea, pero suficiente pues tarda mas en borrar la ram con algo de energia, que sin nada, al quitar la alimentacion. algunos registros se quedan con algo de info tras un reset, prueba a borrar los registros de ram al principio antes de iniciar tu programa.
en cuanto a lo de freir el bit C  :shock: que rutina matabits utilizas en los programas?? :D lei en un post de Leon pic, creo, que era bastante dificil cargarse uno de esos registros por sobreescribirlo demasiadas veces, refiriendose a los reg utilizados en las rutinas de retardo, creo. como lo has frito :shock:
prueba esto y comenta el resultado, seguiremos descartando posibles fallos, intenta pegar el programa por si alguien ve el fallo en las rutinas

un saludo y espero te ayude

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: pic con bloqueos.
« Respuesta #4 en: 03 de Febrero de 2008, 11:20:49 »
Porque no subes aqui el codigo y esquematico, asi podremos ayudarte...

Coincido con Alogic, es muy dificil de creer que te pase lo que describes, ojo!! no estoy diciendo que es imposible!!
Pero yo en mi carrera con los PICs ya me cargue unos cuantos, pero siempre por mala conexion, nunca por un codigo mal escrito, ni tampoco vi que se rompan por conectar un cristal superior al que lleva, en todo caso al poner el que lleva se soluciona el problema... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: pic con bloqueos.
« Respuesta #5 en: 03 de Febrero de 2008, 17:25:11 »
gracias por vuestros comentarios.he hecho algunos cambios en mi programa.pero no funcionan.

en la zona PRINCIPAL he puesto unas lineas de codigo que tengo deshabilitadas para comprobar si fallava el bit carry de STATUS.
y este bit funciona bien en los dos chips.no se cual sera el fallo,me va ha costar encontrarlo.
porque en la zona RESTA del programa donde se me queda bloqueado.no se porque no sale del bucle RESTA2.

aqui pongo parte del programa porque  tiene 1104 lineas ensambladas y no caben en esta respuesta.

DIVIDE      
         call   RESTA
         movf   RESUL,w
         addwf   ANALOG,f         ;suma analog y resul
         btfss   STATUS,C         ;comprueva si analog se pasa de 255
         return
         movlw   0xff
         movwf   ANALOG            ;si analog se pasa de 255 se le asignara valor 255
         return

;//////////////////////////////resta tabla a dato analogico///////////////////
RESTA        movf   TEMP_TABLA,w      ;carga temp_tabla en el acumulador
         
         subwf   ANALOG_TEMP,f      ;resta temp_tabla  analog_temp
         btfsc   STATUS,C         ;comprueva si hay acarreo
         goto   RESTA2
         goto   RESTA3            ;goto si hay acarreo
RESTA2      ;BSF      STATUS,C
         
         clrwdt
         incf   RESUL,f
         goto   RESTA
RESTA3      
         clrf   ANALOG_TEMP         ;si hay acarreo, analog=0
         return
y aqui un subprograma que he hecho para probar si falla el bit de carry,y cuando lo cargo funciona bien.asi que creo que el problema puede estar al realizarse la resta entre los dos registros ANALOG_TEMP Y TEMP_TABLA


 PRINCIPAL   BANK0
         movlw   0x50
         movwf   ENTRADA   
         movlw   0X45      ;cambiar a 55h para comprobar si carry funciona
         movwf   SALIDA
         subwf   ENTRADA,W
         btfsc   STATUS,C
         goto   PRINCIPAL
         movlw   0xff
         movwf   PORTB
EN         GOTO   EN   
« Última modificación: 03 de Febrero de 2008, 17:33:24 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: pic con bloqueos.
« Respuesta #6 en: 04 de Febrero de 2008, 00:46:08 »
ya logre hacer funcionar los dos chips,no hera ningun bit de carry averiado.

el problema estaba en el programa.y es que este programa graba unos valores en la eeprom de datos ,que al volber a alimentar el circuito.este funcionava segun el valor que tuviera la direccion de eeprom de datos.y se me habia pasado grabar otros valores muy importantes,y claro al ponerlo enmarcha de nuevo,no funcionava bien.

pero me ha venido muy bien esta experiencia,ya que nunca tube en cuenta de que no es lo mismo desconectar el circuito,que hacerle un reset externo,o con el wachdog.por eso me he dado cuenta de que es muy importante asignar un valor aunque sea cero a los registros de proposito general.para que cuando se produzca un reset,el circuito no nos haga cosas raras.

saludos.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Gorgonas

  • PIC12
  • **
  • Mensajes: 81
Re: pic con bloqueos.
« Respuesta #7 en: 04 de Febrero de 2008, 03:37:28 »
Podrias explicar mejor, cual es la funcion del circuito? es por curiosidad :D a que te refieres con emular el caudalimetro del coche?

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: pic con bloqueos.
« Respuesta #8 en: 04 de Febrero de 2008, 19:50:37 »
se trata de que todos los caudalimetros de placa caliente,ya no se los de hilo caliente.se desgastan o modifican las propiedades de sus componentes por el desgaste y la suciedad del paso del aire por el mismo.
yo tengo un citroen motor HDI. y con 80.000Km tube que cambiar el caudalimetro por falta de potencia.

ahora tiene 140.000Km y ya noto la falta de potencia.he comprobado con el circuito que he hecho,y el caudalimetro y me da un voltage maximo de salida de 4.5V
cuando deberia ser de 5V.ya que este circuito almacena en la eeprom interna el valor maximo que proporciona el caudalimetro.

este circuito se intercala entre el conector que va hacia el caudalimetro y el caudalimetro.
lo que hace el circuito es convertir el valor maximo del caudalimetro en 5v.y sus valores intermedios,con valores relativos.

asi aprendo y me ahorro un dinero ya que el caudalimetro me costo unos 100€.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Gorgonas

  • PIC12
  • **
  • Mensajes: 81
Re: pic con bloqueos.
« Respuesta #9 en: 04 de Febrero de 2008, 23:46:35 »
Y esto realmente funciona :S es decir el caudalimetro por suciedad y demas puede no llegar al maximo los 5v que dices tu y por ejemplo quedarse en 4, pero esos valores intermedios como los calculas? porque no precisamente su funcionamiento seria lineal no?
Es decir para caudal maximo suponte 5v y para medio 2,5 igual ahora el maximo no pasa de 4 pero el medio sigue dando 2,5 no se si me explico :S

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: pic con bloqueos.
« Respuesta #10 en: 05 de Febrero de 2008, 20:30:30 »
lo siento no se que quieres decir.pero te dire que el funcionamiento se basa en unas tablas precalculadas.y que tomando el valor maximo que entrega el caudalimetro al pic,que para ello hay que poner le motor ya en caliente y  a 140km/h en cuarta velocidad si es que llega.pero para esto tendras que ir a un circuito de pruevas,para no salirte de la ley. :D

de esta forma el caudalimetro habra llegado a su pleno rendimiento.
el valor analogico que entrega el caudalimetro,pasara al pic para su gestion.
y una vez tratado se sacara el valor por uno de sus puertos de 8bit y de este a un conversor D/A yo he usado el DAC 0808.

y si,el valor es lineal. va desde 0v a 5v sin saltos.esto se hace con un contador para la salida que incrementa o decrementa segun el valor de entrada.

o si lo que preguntas es como se calcula los valores diferenciales para corregir el valor,te dire que entre 4 y 5v hay 16 valores que pertenecen a la tabla que diseñe.con un monton de calculos y que ya no me acuerdo ni como las hize.porque hace ya casi 2 años.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Gorgonas

  • PIC12
  • **
  • Mensajes: 81
Re: pic con bloqueos.
« Respuesta #11 en: 05 de Febrero de 2008, 22:08:05 »
me refiero precisamente a esta frase ""si,el valor es lineal. va desde 0v a 5v sin saltos"" cuando el caudalimetro se va estropeando no deberia de estropearse precisamente de forma lineal...esa es la duda que tengo, porque supones que se estropea de forma lineal ;)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: pic con bloqueos.
« Respuesta #12 en: 06 de Febrero de 2008, 12:06:55 »
exacto,se estropea de forma lineal normalmente.y es devido en parte a la suciedad que trae el aire y se deposita en las placas.e incluso a la placa calefactora que emite menos temperatura con el desgaste del tiempo de uso.


Montando mi primera impresora 3D (Raprep Prusa i3)