¿Cómo depurar un circuito que usa Charlieplexing y PWM con LED bajo ISIS?

2

Utilizando mikroC y Proteus ISIS , he construido un circuito que usa un PIC12F629 ( enlace a la hoja de datos PDF ). Controla varios LED usando técnica de Charlieplexing (y además PWM para cambiar su brillo con el tiempo) .

Ejemplo:

LED1 100%
LED2 75%
LED3 0%

Unos pocos ms despues:

LED1 75%
LED2 100%
LED3 25%

Si ejecuto la simulación paso a paso, todo funciona bien (los LED se encienden y apagan en cada paso cuando se supone que deben hacerlo).

Sin embargo, si ejecuto la simulación a toda velocidad, el único resultado que obtendré es que los LED parpadean como locos (se encienden / apagan al azar). De todos modos, sé que si ejecuto un circuito usando componentes reales, el resultado debería ser totalmente diferente (como en mi primer ejemplo, con porcentajes).

Esto es lo que creo que sucede: los LED se encienden / apagan muy rápido bajo ISIS, pero no lo suficientemente rápido como para recrear la persistencia de la visión efecto como en la vida real.

¿Es posible, utilizando ISIS, simular lo que obtendría en la vida real?

Sería bueno, por ejemplo, tener un tipo especial de componente LED en ISIS (para colocarlo en el circuito) que se renderice cada 50 ms (no solo cuando el estado haya cambiado). Los LED se volverán más claros o más oscuros dependiendo de la señal desde la última comprobación (p. Ej., La señal fue "alta" el 90% del tiempo desde los últimos 50 ms, se muestra en rojo brillante, la señal es "alta" el 10% del tiempo, se muestra en rojo oscuro, y así sucesivamente).

    
pregunta tigrou

1 respuesta

1

Proteus VSM (Modelado de sistema virtual) no funciona en tiempo real, al menos no en computadoras de escritorio de muy alta calidad. La simulación requiere un uso intensivo del procesador, como vería si abriera el Administrador de tareas de Windows mientras se ejecuta la simulación. Dependiendo de las capacidades de su computadora y la cantidad de elementos de simulación activos en su diseño, la velocidad real de simulación varía ampliamente.

Una forma de estimar cuánto más lento que el simulador en tiempo real funciona, es incorporando un bucle (no un ISR de temporizador) en su código de microcontrolador simulado, que da la vuelta a algunos GPIO una vez cada tanto. Digamos que configuramos este período en alrededor de una décima de segundo en tiempo real, contando los ciclos de reloj del código.

Por lo tanto, si la simulación cambia ese bit una vez cada 20 segundos, la simulación se ejecuta a 1/200 de tiempo real.

Agregue un par de elementos de simulación activos al diseño, luego ejecute la simulación nuevamente y observe cómo cambia los bits para ver cuánto más lento se vuelve.

Dicho esto, en realidad no hay ninguna forma práctica para lograr una verdadera simulación en tiempo real de cualquier diseño de Proteus no trivial, con el hardware actual del consumidor. Al darle suficiente potencia de procesamiento, quizás al hacer overclocking masivamente en tu PC, el tiempo real podría ser factible, pero no me quedaría sin aliento.

    
respondido por el Anindo Ghosh

Lea otras preguntas en las etiquetas