¿Cómo puedo usar avrsim para simular Arduino?

Encontré un muy buen emulador avr de código abierto ( este ). Dado que hay una emulación uart implementada, puede simular Arduino.

Tengo algunos problemas con el ejemplo "board_simduino".

Conecté leds virtuales al puerto B (pines 8-13) - http://gitorious.org/~viroos/simavr/viroos-simduino-simavr/commit/bfaeac1e61f1d6678b3daab7fede9a783d01c098 , y funcionan.

Pero la conexión en serie parece rota. Puedo cargar el boceto ( ,link=/dev/ttyUSB0agregué el comando socat para eso), pero después de eso, la comunicación deja de funcionar. Por ejemplo, puedo cargar un boceto de "píxel físico", pero no puedo encender los LED. Intenté conectarme usando un monitor serial en buily en IDE y desde pySerial. Parece que los elogios están siendo ignorados.

También en el boceto "parpadeo" en el bucle principal:

void loop()
{
 digitalWrite(ledPin, HIGH);   // set the LED on
 delay(1000);                  // wait for a second
 digitalWrite(ledPin, LOW);    // set the LED off
 delay(1000);                  // wait for a second
}"

Tengo que quitar delay(1000);mando porque cuelgan el emulador.

Agradeceré cualquier ayuda. Lo más importante para mí por ahora es la reparación de uart (ejecutar el boceto de "píxel físico").

Respuestas (1)

Si bien no he usado un simulador de hardware por un tiempo, creo que lo que sucede es algo como esto.

Cada ciclo de reloj del AVR se simula, lo que toma múltiples ciclos de reloj en la PC host. Por lo tanto, el tiempo en el AVR simulado corre más lento que el tiempo real. Esto podría explicar por qué el bucle de retardo parece bloquear el simulador AVR.

Un escenario similar podría ser el caso con el puerto serie.

Personalmente, no estoy seguro de si la simulación de procesadores modernos con memoria flash es productiva, ya que es más rápido simplemente cargar el programa en el sistema y "dejar que se ejecute" para ver qué sucede.