Autor Tema: Analizador lógico de 3 Canales monitorizado en el PC  (Leído 61631 veces)

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

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #30 en: 16 de Abril de 2006, 08:48:30 »
Continuamos avanzando ...

El Firmware del PIC 18F4550 y el Software del PC hablan el mismo idioma ...

El PIC dispone ya de una recepción de comandos de dos tipos:

1.- Comandos destinados a volcar información a un Monitor RS232 (me ha dado la idea Radon con su comentario de un par de post mas abajo) Así puedo analizar los datos numéricamente si necesidad de Soft alguno (mas allá de un Siow, Hyperterminal o similar) Este grupo de comandos dispara el envío de la información de forma "amigable", tabulada y con cabeceras de explicación de qué es lo que está enviado. Le llamo "friendly_trans"

2.- Comandos destinados a enviar la informacion "formateada" al Soft del PC en la que se define una trama con: inicio de transmisión, datos encapsulados con inicio y fin de cada "churrete" y fin de transmisión. Este grupo de comandos dispara el envío de la información de forma sistemática con una estructura definida, fácil de procesar por el Soft del PC. Le llamo "hardy_trans".

Ejemplo de recepción de los mismos datos en formatos "amigable" y "duro" ...

Con el Monitor Siow de CCS C:




Y con el RRLOGICANALYZER.EXE del PC que ya recibe correctamente los datos recopilados por el PIC y es capaz de mostrármelos ... listos para lanzarme a la siguiente fase del proyecto: ¡¡¡ Dibujarlos !!!



Como podéis comprobar en ambos casos los datos son exactamente los mismos ....  :-/

Os tendré al tanto de los nuevos avances ...



Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #31 en: 16 de Abril de 2006, 17:24:13 »
Un solo detalle que creo que no he puesto aún en todo este desarrollo que llevamos visto.

Es la base de tiempos que estamos utilizando, y a los que se refieren las tablas de datos capturados por el PIC, que pueden verse en la imágen del post anterior.

Si os fíjais además de la columna de orden de detección hay otras dos que nos indican respectivamente el Número de Overflows completos que se han producido en el TIMER1 y el valor del Timer en el momento de producirse la interrupción.

Como las señales utilizadas en el ejemplo de dicha imagen están invertidas, esto es: que primero se produce la interrupción por flanco de bajada y despues viene la de subida, la primera linea de datos a tener en cuenta es precisamente la numero 0 de la tabla de Falling Edges, seguida de la número 0 de la de Rising Edges, a continuación se produce la numero 1 de la de Falling Edges y después la 1 de la otra tabla ... y así hasta las numeros 9 de ambas que definen el último pulso detectado.

Todos estos números estan expresados en Overflows y Ticks del Timer1, que a su vez está configurado con:

setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);

Por lo que va exactamente a "toda pastilla" y esto significa que se incrementa, un Tick cada (FOSC/4).

Como el Cristal generador del Clock es de 20 Mhz tenemos un Ciclo de instrucción de 1/2000000*4=0.0000002 segundos
o lo que es lo mismo 0.2 uS (microsegundos) por Tick, valor por el que tenemos que multiplicar la columna Timer para expresarla en Tiempos.

Como el TIMER1 es un contador de 16 Bits, de 0 a 65535, cada desbordamiento se produce cada 65536 Ticks, o sea cada 0.2 uS * 65536 = 13107,2 uS, o lo que es lo mismo cada 13.1072 mS (milisegundos), valor por el que tenemos que multiplicar la columna Overflows para expresarla en Tiempos.

Así, desde el inicio del muestreo. se puede calcular cada flanco de subida o bajada con:

X (en uS) = 13107,2 * Overflow + 0.2 uS * Timer

y esta X es la muestra que hay que representar gráficamente, desplazando la correspondiente línea vertical del flanco, tras transformarla para adecuarla la escala de tiempos, establecida para cada división de la regla de medida (dibujada con pequeños puntos blancos sobre la imagen y que puede ser ajustada mediante Escala (t))

Continuamos para bingo  :lol:

Os mantendré informados.


« Última modificación: 16 de Abril de 2006, 17:28:26 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #32 en: 16 de Abril de 2006, 17:57:18 »
Otra pequeña reflexión técnica antes de dar por finalizada la jornada Picmaníaca de hoy ...

Fijaos que en todos los ejemplos que he posteado hasta ahora (podéis ver las imágenes de los Monitores Siow que he pegado en los distintos mensajes) siempre la primera interrupción se produce a los 21 Ticks del TIMER1, los siguientes son cada uno de su padre y de su madre ...

Y me he pregundado ¿por qué es esto así?

La respuesta es fácil y tiene que ver por la forma en que he programado en el PIC la ext_handler() o rutina de manejo de la interrupción externa.

Con el fin de tener siempre unos valores coherentes desde un valor conocido del estado del TIMER1, y no dejar a éste correr alocadamente desde que el PIC se resetea, he implementado un trozo de código que es el causante de que esta primer interrupción llegue siempre con el mismo "retraso" y se registre con ese valor ....

Mi idea es cuando se produzca la primer interrupción, y solo en la primera interrupción, pongo el TIMER1 a 0 y habilito la interrupción por desbordamiento de dicho timer. Así todas las muestras parten exactamente del mismo tiempo de referencia. Esté como esté el TIMER1 al llegar la primera interrupción éste es inicializado y así todas las interrupciones posteriores serán expresadas como distancias, en tiempo, que las separa de la primera que se ha producido.

La rutina completa es:

Código: CSS
  1. #int_ext
  2. ext_handler() {
  3.  
  4.    if(nTintext==0){
  5.       set_timer1(0);
  6.       nTimer1Overflow=0;
  7.       enable_interrupts(int_timer1);
  8.    }
  9.  
  10.    ++nTintext;
  11.  
  12.    switch(fedge){
  13.  
  14.       case 0:  TimesDown[uTimeDown][0]=get_timer1();
  15.                TimesDown[uTimeDown][1]=nTimer1Overflow;
  16.                ++uTimeDown;
  17.                fedge=1;
  18.                ext_int_edge(0,L_TO_H);
  19.                break;
  20.  
  21.       case 1:  TimesUp[uTimeUp][0]=get_timer1();
  22.                TimesUp[uTimeUp][1]=nTimer1Overflow;
  23.                ++uTimeUp;
  24.                fedge=0;
  25.                ext_int_edge(0,H_TO_L);
  26.                break;
  27.    }
  28. }

Luego los famosos 21 Ticks de TIMER1, que me muestra como valor recogido para la primera interrupción, son exactamente lo que el PIC necesita para procesar , recordad que sólo en la primera interrupción detectada, desde el código if(nTintext==0) hasta el registro del valor en TimesDown[uTimeDown][0]=get_timer1();

Calcularé en tiempos tanto este valor para la primera interrupción, como el salto de ese mismo if(nTintext==0) para las ulteriores interrupciones, con el fin de corregir las tablas de tiempos recogidas,y que se ajusten así mas a la realidad de lo que está ocurriendo en esos pines de Dios.

Os mantendré informados.  :lol:



« Última modificación: 19 de Julio de 2007, 21:14:24 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #33 en: 17 de Abril de 2006, 17:38:51 »
Sin palabras ...  :-/



Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado piriots

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #34 en: 17 de Abril de 2006, 18:20:08 »
Que deprisa redpic veo que llevas el turbo puesto! Muchas felicidades por otro de tus magnificos proyectos!! Yo por distintas razones llevo algun tiempo alejado del foro pero voy siguiendo los proyectos.

Salu2

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1678
    • winpic800
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #35 en: 18 de Abril de 2006, 02:29:15 »
Un proyecto interesantisimo ademas que te esta quedando de PM.

Que bien me vendria ahora uno de 8 canaletas  :lol:

Solo queria comentar otra posivilidad que podria ser para perder los menos ciclos posibles al coger las muestras .


Se podria usar la interrupcion de timmer ( valor variable del mismo , indicado por el usuario ).
alli llenar un buffer con el valor del puerto (los 8 bits sin preocuoparse por su nivel) e incrementar un puntero .
Buffer lleno ? ..... a enviarlo . stop timer hasta nueva orden .

Usar la interrupcion de cambio de estado del puerto para el trigger ... alli start timmer si se cumple la condicion deseada.

Puedes usar un cristal del 12mhz con pll . es a lo maximo que puede correr el pic .
ASM en los puntos criticos .
Lo ideal seria con dspic . ya veras cuando pruebes algunooo .........  :)

a disfrutar .




Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #36 en: 18 de Abril de 2006, 06:45:54 »
Estupendo proyecto RedPic.

Creo que podrías volver a llamarlo de 4 Canales, si como dice Sispic, utilizas la interrupción por cambio en el puerto B<7:4> y pasas el valor completo de estos 4 bits al software.

Si no me equivoco ya que no conozco mucho los 18F, incluso de 7 Canales si utilizas las interrupciones externas RB0/RB1/RB2 junto con la de cambio en RB<7:4> y pasas el valor completo del puerto B a tu software.

Saludos desde Almería, España
Saludos desde Almería, España

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #37 en: 18 de Abril de 2006, 15:55:42 »
Otro palito a la burra ....   8)

He realizado un nuevo muestreo (realizado con un simple botón rebotando ...)
Lo cargo con el Soft del PC y lo dibujo (como en las pruebas anteriores )
Tal como puede comprobarse en la imagen que acompaño la primera interrupción llega hasta los valores:
9 Overflows de Timer1 + 37752 Ticks de Timer 1
con lo que aplicando la formula correspondiente de
X (en uS) = 13107,2 * Overflow + 0.2 uS * Timer
Nos dá un valor del flanco de subida de X (en uS) = 13107,2 * 9 + 0.2 uS * 37752 = 125511 uS tras comenzar el muestreo.
O sea 125,511 milisegudos.
He añadido este cálculo a la ventana de Valores.
He seleccionado en la Escala de Tiempos el valor de 50 ms por división (raya grande en la regla)
He realizado los correspondientes cálculos para encontrar cúantos microsegundos le corresponden a cada pixel.
Y he añadido el cálculo inverso para que al mover el ratón sobre el gráfico me indique a qué valor de tiempo corresponde.

Ea, el Analizador lógico de 3 Canales (simple) ya mide en tiempos sobre la pantalla ....   :-/





Y eso es todo por hoy. Mañana más.

Os tendré informados.

« Última modificación: 18 de Abril de 2006, 16:01:43 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #38 en: 19 de Abril de 2006, 02:51:14 »
Amigos Sispic, Manofwar, Piriots ...

Todo se andará, todo se andará ... fijaos que ahora solo estoy manejando un único canal pra poner a punto el Soft del PC con todas las funcionalidades posibles...

Ya he pensado tambien en el módulo Compare CCP para obtener otro canal "interruptivo" y podemos añadir otros mas "a pelo", sin interrupciones que actuen como "esclavos" de los que disponen de interrupción y podemos así ahorrar un importante consumo de RAM.

Pretendo dejar este proyecto bien terminado con los tres (o cuatro) canales y justo después encarar su ampliación a n canales y mayor velocidad de muestreo, probablemente con dsPic ... sin olvidar que debo conectar es mismo tri-channel mediante USB para transferencias rápidas de info del PIC al PC ....

Pero lo dicho, cada cosa a su debido tiempo, que si no lo único que consigo es embarbascarme con mas problemas (o desconocimientos) de los que puedo digerir.  :lol:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #39 en: 23 de Abril de 2006, 09:56:04 »
Nooooo, no creáis que este proyecto está durmiendo el sueño de los justos, nada de eso ...  :P

Estoy solucionando algunos asuntos muy importantes antes de acometer nuevas fases.

En concreto estoy liado con la representación gráfica (en detalle) de la señal escaneada. En post anteriores pudistéis ver cómo se podía ya medir en pantalla con solo mover el puntero del ratón ... pero había un pequeño fallo, o mejor dicho una importante carestía, y era que cuando cambiaba la base de tiempos, con el "t / div" y la ponía muy corta o lo que es lo mismo que ampliaba la escala de representación, se me salía el gráfico del área de dibujo por la derecha.

Natural, si tengo un testeo que dura 200 ms y estoy representándolo a una escala que hace que en pantalla solo aparezcan, digamos que por ejemplo unos 100 ms, la señal no cabe y ... pues no se ve.

Ahora ya si se vé.  :-/

Lo que he hecho es añadir tantos bloques del tamaño de una "t/div" como me hagan falta a la imagen, y ésta montarla sobre un Scrollbox para que con las barras de desplazamiento pueda ver cualquier porción de ella.

Y funciona de maravilla ....

En el ejemplo que podéis ver a continuación muestro una ampliación a lo bestia de una imagen hasta ser capaz de visualizar un micropulso de 37 microsegundos, muestreado entre otros del orden de más de una centena de milisegundos, de hecho es un rebote del botón pulsador en el momento de soltar el pulsador y cerrarse éste ...

una gozada  8) :




Mañana, más. Os mantendré informados.

« Última modificación: 23 de Abril de 2006, 15:08:35 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1678
    • winpic800
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #40 en: 23 de Abril de 2006, 14:57:40 »
Como disfrutasssssss  :-/ :-/

Una gozada tu proyecto . :P

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #41 en: 23 de Abril de 2006, 15:13:59 »
Si, amigo Sisco, disfruto, gozo, me divierto, flipo en colores jua jua jua  :D  :D  :D

¿se me nota tanto? si, supongo que sí ...  :-/  :-/  :-/

Este proyecto en concreto llevaba años en la reserva esperando su turno ... y ahora ... con los PIC's y con ustedes ...
tengo el apoyo, la serenidad y la ilusión suficientes para hincarle el diente ....

Gracias a vuestras palabras de apoyo ... son el motor que hace funcionar todo esto.  Snif :8}

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 4 Canales (Simple) con monitorización/edición en PC
« Respuesta #42 en: 23 de Abril de 2006, 18:49:11 »
.
« Última modificación: 24 de Abril de 2006, 02:39:07 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #43 en: 23 de Abril de 2006, 18:50:28 »
Adelante con tu proyecto, estas realizando un trabajo barbaro, y la presentación que estas obteniendo es profesional. Animo y a seguir con el proyecto.
* 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 RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5538
    • Picmania by Redraven
Re: Analizador lógico de 3 Canales (Simple) monitorizando en el PC
« Respuesta #44 en: 24 de Abril de 2006, 02:39:35 »
Hola RedPic, personalmente en muchas ocasiones necesite de un "implemento" como el que describes, me anoto para ayudar en lo que este a mi alcance.

Un saludo.

Atte. CARLOS

Amigo Chaly (y demás amigos) te tomo la palabra  :):

No es para "yá" pero necesito tu/vuestra ayuda ...

Chaly, eres de los foreros en que mas confianza tengo en cuanto a conocimientos electrónicos "puros" ... que es donde mas agua hago y estoy mas perdido ...  :? ... y por eso te cito mas directamente ...  :mrgreen:

Por el momento a este proyecto aún le queda bastante ya que el Soft del PC quiero que sea lo mas completo posible, además al PIC quiero implementarle una buena comunicación con el PC para que puedan ser configuradas desde éste el mayor número de parámetros y/o circunstancias posibles de las formas de muestreo de cada canal ....

En principio solo voy a tratar señales digitales a nivel TTL por lo que no hay excesivos problemas, pero ...

La idea que quiero planterarte/plantearos es la de adaptar otros tipos de señales para que puedan ser también analizadas con este Hard/Soft que estamos desarrollando. Imagínate, por ejemplo, que deseamos testear una comunicación RS232 con señales +12 y -12 ... o que queremos utilizar otras con niveles de milivoltios que hay que amplificar... o ... de decenas o centenas de voltios que haya que atenuar... o ... incluso señales que tenemos que "cuadrar" para poder ser leídas por el PIC (estoy pensando en disparadores Schmitt o similar) ... etc. etc. etc.

En fin, un poco de Hardware de conversores de señales para poder ampliar este proyecto ... (siento no poder darte mas info de lo que quiero porque simplemente no la tengo, son solo ideas, pequeñas ideas que tengo)


Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania