Autor Tema: Luchando contra el ruido POR SOFTWARE  (Leído 144335 veces)

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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #45 en: 16 de Septiembre de 2007, 16:13:31 »
Pues no tenía ni idea de esa directiva, pero suena muy interesante:

Syntax:
 #zero_ram

Purpose:
 This directive zero's out all of the internal registers that may be used to hold variables before program execution begins.


El zero_ram o incluir un c18iz.lib en el C18, no hacen más que cumplimentar algo que pide el estandar ANSI C y es el de que se inicialicen todas las variables utilizadas a un estado 0 por defecto.

Esto, sirve en muchos casos donde queremos asegurarnos del correcto funcionamiento de nuestro software y en otros casos, no sirve por tratarse de precisamente, querer tener los datos de "donde estaba" al momento de ocurrir el problema.

En Assembly yo hacia algo muy similar porque sino uno debia inicializar cada memoria que utilizaria, a mano.  Y eso lleva mucho tiempo, codigo, etc.  De esta forma, ponia todo a 0 usando el direccionamiento indirecto y en unas pocas instrucciones inicializaba toda la ram.

- 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 jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #46 en: 16 de Septiembre de 2007, 16:18:25 »
Da la impresión de que la EEPROM es algo inestable y que se borra con mucha facilidad. Nada más lejos de la realidad, lo raro es que los adatos estén corruptos y muy dificilmente se borran por ruido. La prueba la tenemos en los propios porgramas almacenados el los pic que duran años y años perfectamente. Yo me inclino a pensar que los problemas con la memoria son debidos a una mala programación. De todas formas con un buen checksum no deberiamos tener más problemas y si los datos guardados no coinciden con los escrito habria que revisar las subrutinas que realizan estas operaciones.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #47 en: 16 de Septiembre de 2007, 16:47:04 »
Llevando tu método al límite, Iván, si nuestro programa está basado en una máquina de estados, incluso podríamos ir al estado que estaba activo durante el Reset, ¿verdad?
Según tengo entendido la RAM permanece con los mismos valores, por lo que quizás se podría conseguir una transparencia total para el usuario.

Opino que son raras las aplicaciones que deban correr justo en el punto anterior a donde venian corriendo, ya que si por ejemplo, estamos atendiendo algo importante y se resetea el pic por un BOR, tardará algunos useg o mseg (dependiendo de qué tengamos activado) en volver al lugar donde estaba lo cual en muchos casos sería peor a que directamente reinicie de nuevo.

De todas formas si ese es el caso, sugiero usar memorias externas muy veloces y que tengan posibilidad de 'recordar datos' frente a un reset.   Un ejemplo claro son las memorias ferro magnéticas que se graban en micronésimas de segundo! 

http://www.ramtron.com/doc/AboutFRAM/Technology.asp

Creo que no hay soluciones tan simples y que realmente se complican muchisimo porque también puede darse el caso de que a la mitad de una grabación se corte la alimentación o se resetee el pic.  Si hablamos de una aplicación que corra constantemente entonces estas cosas sí pueden pasar.

Lo ultimo no nos salva de que al reiniciar el software, tener que leer la memoria y verificar que los datos allí incluidos sean correctos, para ello tal vez debamos agregar algun checksum por ejemplo, dentro de la misma memoria que valide los datos. 

Por ello soy de insistir en que si bien por software hay cosas para hacer y tener en cuenta, es por hardware donde reamlente debemos hacer que la cosa funcione y sea confiable.

En lo particular por software me dedico a interpretar y/o determinar las causas de un reset, más que volver a donde estaba.  No siempre es posible y en muchisimos casos es peligroso y hasta puede daniar algo. 



Da la impresión de que la EEPROM es algo inestable y que se borra con mucha facilidad. Nada más lejos de la realidad, lo raro es que los adatos estén corruptos y muy dificilmente se borran por ruido. La prueba la tenemos en los propios porgramas almacenados el los pic que duran años y años perfectamente. Yo me inclino a pensar que los problemas con la memoria son debidos a una mala programación. De todas formas con un buen checksum no deberiamos tener más problemas y si los datos guardados no coinciden con los escrito habria que revisar las subrutinas que realizan estas operaciones.

Un saludo

Las eeprom son mas o mucho más inestables que las FLASH. Si tus programas no hacen uso de la eeprom, allí tienes la respuesta.

Si tus programas sí hacen uso de la eeprom, entonces estamos frente a un hardware bien diseñado para el entorno en el que trabaja.  A veces un hardware bien diseñado para un entorno no lo es bueno para otro que contenga más ruido magnético o un ambiente eléctrico más ruidoso en general.



Aunque ahora, siempre que necesito EEPROM, uso una Externa. La interna no me da buena espina.

Solo a modo de anécdota puedo decir que ambas eeprom son vulnerables a los mismos problemas.  En una oportunidad me pasaba que una aplicación con eeprom externa andaba mal y le echaban la culpa al pic. Bien, como estas cosas son dificiles de demostrar sin datos fehacientes (sino termina siendo la palabra de uno contra el otro por más argumentos que uno esgrima) , me vi forzado a hacer un código dentro de la propia aplicación que verificaba la eeprom del pic y la eeprom externa, a cada rato.  Pasaba que cuando frenaba un motor, se metía un pulso electrico que afectaba a la eeprom externa y no al pic (el cual tenía su hardware más bien diseñado).  Este es un caso en que el problema era la eeprom externa! y le echaban la culpa al pobre PIC.  Solucion? -> les dije que filtren mejor la alimentación de la memoria y santa solución!.


En efecto, en todos los PIC's en que he probado esto hasta ahora se dá ese efecto, tras un Reset, MCLR a masa, la RAM queda intacta con todos los valores que tenía anteriormente (16F628, 16F777, 16F876, 18F2550 y 18F4550)

Creo que se puede agregar que esto funciona y va de la mano de una buena deteccion de la causa del reset :)  Sino, seria altamente peligroso.
« Última modificación: 16 de Septiembre de 2007, 17:40:05 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 MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #48 en: 16 de Septiembre de 2007, 17:09:30 »
Hola Maunix!!
Creo que estas siendo el unico ganador del campeonato de POSTs, aunque creo que estas corriendo solo!! :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #49 en: 16 de Septiembre de 2007, 17:10:42 »
Mis pequeños trucos básicos para paliar los efectos del ruido:

Hard:
  La fuente de alimentación:
    AC: En la entrada un varistor siempre y su filtro con transformador y condensadores junto con su conexión a tierra.
    DC: Capacidades variadas, 10nF, 100 a 330nF y Electrolítico

Me parece muy útil y valoro el que hayas mencionado, solamente puedo agregar que no me gusta ser amigo de las reglas que nunca se cambien , porque? porque creo que aprendo constantemente.

Hay casos, en que si usamos como fuente de alimentación una fuente switching, poner cualquier capacitancia en paralelo puede hacer oscilar a la fuente.  La fuente de por sí es un sistema de control a lazo cerrado, y si le agregamos capacitores y que hagan entrar en resonancia al lazo se alimentación, podríamos hacerla oscilar lo cual podría hasta dañar el hardware.

A lo que voy , y no quiero corregir a nadie ni mucho menos, solamente opinar desde mi experiencia y es que en estas cuestiones no existen soluciones mágicas que siempre resuelvan el problema, depende de la alimentación, del entorno, de la complejidad , del consumo.

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 maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #50 en: 16 de Septiembre de 2007, 17:13:32 »
Hola Maunix!!
Creo que estas siendo el unico ganador del campeonato de POSTs, aunque creo que estas corriendo solo!! :mrgreen: :mrgreen:

What? si te cuento que se me corta la luz cada 15 minutos me creerias?

PD: no me interesa el número de posts, solamente poner juntos los mensajes que correspondan a un mismo tema, nada más. Alguna vez propuse que se elimine el número de posts ya que genera una competencia innecesaria en la gente que compita por eso (y aclaro que no soy precisamente de los que lo hacen). 

Hay gente que posteó 200 veces y con una claridad inusitada expuso temas impresionantes.  El tener muchos años, como el tener muchos posts, no indican nada.  Hay una frase que contiene mucha sabiduría que dice que una cosa es tener experiencia y otra antigüedad.

saludos

PD: agrupé mis mensajes contiguios en uno solo. 
PD2: EPEC y la re@#$!#$! jajaja.  :mrgreen: :mrgreen:

Nota sobre PD2: EPEC o Empresa Provincial de Energía de Córdoba.
« Última modificación: 16 de Septiembre de 2007, 17:47:08 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 dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3495
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #51 en: 16 de Septiembre de 2007, 18:58:17 »

Hay circuitos comerciales que dividen la memoria E2Prom en dos partes, una es la pagina de trabajo y la
otra es la imagen de la primera. Siempre se trabaja con la pagina principal, se verifica lo que se escribe,
se dividen las paginas en filas y columnas y se genera un checsun por línea y luego uno general que
es la suma de todos los parciales y si todo esta correcto se actualiza la imagen, este sistema funciona
muy bien cuando se tiene la configuración del programa en E2Prom.
En los arranques siempre se hace un verificado de los checsum de la 1ª pagina.

Puedes dar ejemplos de como aplicar esto??
Es interesante el tema!! :mrgreen:

Por desgracia no tengo nada que pueda publicar sobre este tema...
Saludos desde Granada, España.

Conectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18269
    • MicroPIC
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #52 en: 17 de Septiembre de 2007, 01:45:11 »
Joe, Maunix, tu teclado sí que está bien diseñado contra el ruido...  :mrgreen:

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #53 en: 17 de Septiembre de 2007, 07:59:36 »
PD2: EPEC y la re@#$!#$! jajaja.  :mrgreen: :mrgreen:
Nota sobre PD2: EPEC o Empresa Provincial de Energía de Córdoba.

Te compadezco. La semana pasada instalaron un generador en mi ciudad (para evitar los cortes en el verano), y como va a sobrar energia, la distribuyen a otra ciudad. Tengo la suerte de vivir por donde pasa la nueva linea que debieron "reforzar", asi que me he pasado toda una semana son energia de 8 a 13.

Realmente, no nos damos cuenta de lo dependientes que somo de la electricidad!!! No soldador, no PDF, no TV, no DVD, no foro, no programar.....y no ruido electrico :)

Menos mal que mi soft de diseño de circuitos corre sobre un cuaderno cuadriculado, si no no se que hubiese hecho :) :) :) :)

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #54 en: 17 de Septiembre de 2007, 08:30:16 »
Joe, Maunix, tu teclado sí que está bien diseñado contra el ruido...  :mrgreen:

jiji. Ultimamente ando con muchas cosas y la verdad "se extraña" no tener tiempo para el foro y solo quise aportar un granito de arena al respecto de mi experiencia, esperando sean bien tomados como puntos de vista y no como juicios categóricos de mi parte.  :) :)


PD2: EPEC y la re@#$!#$! jajaja.  :mrgreen: :mrgreen:
Nota sobre PD2: EPEC o Empresa Provincial de Energía de Córdoba.

Te compadezco. La semana pasada instalaron un generador en mi ciudad (para evitar los cortes en el verano), y como va a sobrar energia, la distribuyen a otra ciudad. Tengo la suerte de vivir por donde pasa la nueva linea que debieron "reforzar", asi que me he pasado toda una semana son energia de 8 a 13.

Realmente, no nos damos cuenta de lo dependientes que somo de la electricidad!!! No soldador, no PDF, no TV, no DVD, no foro, no programar.....y no ruido electrico :)

Jaja, tal cual.  Mi señora no había terminado de ver una película que teníamos en DVD y para ver los últimos 45 minutos estuvo casi 2 horas!!  Ni te puedo explicar la cantidad de |@#~|@#~|@ que decía jajaja.

También se me quemó una lámpara de bajo consumo, de tantos picos de tensión se terminó dañando (y estas si que no son baratas que digamos...  :5] :5] :5] :5] )

Menos mal que mi soft de diseño de circuitos corre sobre un cuaderno cuadriculado, si no no se que hubiese hecho :) :) :) :)

Jiji, ese si que es inmune al ruido eléctrico aunque puede no serlo al ruido de la humedad o de que Santino lo agarre para jugar.  :D :D

- 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 aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #55 en: 17 de Septiembre de 2007, 08:36:55 »
Citar
Jiji, ese si que es inmune al ruido eléctrico aunque puede no serlo al ruido de la humedad o de que Santino lo agarre para jugar.

No habia pensado en eso!!!!!!!!! Ya me voy a la fotocopiadora a hacer un "backup"!! :) :) :)
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #56 en: 17 de Septiembre de 2007, 13:00:47 »
Citar
Jiji, ese si que es inmune al ruido eléctrico aunque puede no serlo al ruido de la humedad o de que Santino lo agarre para jugar.

No habia pensado en eso!!!!!!!!! Ya me voy a la fotocopiadora a hacer un "backup"!! :) :) :)

Jiji, mi tía aún se acuerda de su carpeta de trabajos prácticos para una matería que tuvo que rendir en la facultad, la cual tenía 'hermosos decorados' hechos por su sobrino (leáse yo) en varios colores a la edad 3 o 4 años  :D :D
El profesor le dijo ¿señorita ud tiene hijos? ... mi tía respondió algo así como "no, ¿por?" , Profesor: "porque supongo que ud no ha hecho estos hermosos gráficos a color"

Morajela , nunca dejes algo importante de papel cerca de los chicos  :mrgreen: :mrgreen:
- 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 PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5470
    • Electrónica Didacta
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #57 en: 25 de Octubre de 2007, 18:18:17 »
respecto a la mención de #zero_ram e inicialización de variables.

una anecdota: resulta que en un programa necesitaba que mis variables estuviesen en cero al inicio de la ejecución, me dió bastante trabajo pensar donde estaba el problema, porque el programa daba resultados extraños y a la final se me ocurrió "limpiar" dichos registros y se arregló todo. Ahora tengo pendiente inicializar las variables a cero al inicio.

por cierto en C se usa el calificador static

un ejemplo en asm de una variable global con/sin static (listado generado por el ccs):

Código: C
  1. .................... static int pepe;
  2. 0010:  CLRF   20
  3. .................... int papa;
  4. .................... int luis;
  5. .................... static int jose;
  6. 0011:  CLRF   23

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #58 en: 26 de Octubre de 2007, 02:33:51 »
Veo, Pedro, que el static del CCS fuerza el Clear File de la posición de memoria. Muy interesante. Yo ya me he acostumbrado a cualificar todas las variables Globales como static.
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Luchando contra el ruido POR SOFTWARE
« Respuesta #59 en: 26 de Octubre de 2007, 04:12:22 »
Ahhhh ... ¡qué bien me ha venido tu comentario sobre los static, Pedro!

Tengo varios bufferes de caracteres, algunos hasta de 128 bytes, que inicializaba con su correspondiente bucle for al comenzar main().

Pero todos estaban declarados como static, por lo que además de mi bucle y antes de él tenía todo una retahíla de ...

Código: ASM
  1. 60EE:  CLRF   1F
  2. 60F0:  CLRF   20
  3. 60F2:  CLRF   21
  4. 60F4:  CLRF   22
  5. 60F6:  CLRF   23
  6. 60F8:  CLRF   24
  7. 60FA:  CLRF   25
  8. 60FC:  CLRF   26
  9. 60FE:  CLRF   27
  10. 6100:  CLRF   28
  11. 6102:  CLRF   29
  12. 6104:  CLRF   2A
  13. 6106:  CLRF   2B
  14. 6108:  CLRF   2C
  15. 610A:  CLRF   2D
  16. 610C:  CLRF   2E
  17. 610E:  CLRF   2F
  18. 6110:  CLRF   30
  19. 6112:  CLRF   31
  20. 6114:  CLRF   32
  21. 6116:  CLRF   33
  22. 6118:  CLRF   34
  23. 611A:  CLRF   35
  24. 611C:  CLRF   36
  25. 611E:  CLRF   37
  26. 6120:  CLRF   38
  27. 6122:  CLRF   39
  28. 6124:  CLRF   3A
  29. 6126:  CLRF   3B
  30. 6128:  CLRF   3C
  31. 612A:  CLRF   3D
  32. 612C:  CLRF   3E
  33. 612E:  CLRF   3F
  34. 6130:  CLRF   40
  35. 6132:  CLRF   41
  36. 6134:  CLRF   42
  37. 6136:  CLRF   43
  38. 6138:  CLRF   44
  39. 613A:  CLRF   45
  40. 613C:  CLRF   46
  41. 613E:  CLRF   47
  42. ...


Les he quitado el static y dejado mis bucles de inicialización, que realmente es un único bucle en una única función a la que le paso como parámetros el puntero al primer elemento del buffer y el número de bytes que aloja.

El resultado ha sido espectacular, mi programa ha mermado, se ha acortado, en 1144 bytes de ROM.  :mrgreen: :mrgreen: :mrgreen:

Me encanta aprender cosas nuevas (que si además me sirven pues mejor).

Muchas gracias.
« Última modificación: 26 de Octubre de 2007, 05:13:45 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania


 

anything