Wie kann ich mit avrsim Arduino simulieren?

7

Ich fand einen sehr schönen Open-Source-AVR-Emulator ( dieser ). Da eine Uart-Emulation implementiert ist, kann sie Arduino simulieren.

Ich habe einige Probleme mit dem Beispiel "board_simduino".

Ich habe virtuelle LEDs an Port B angeschlossen (Pins 8-13) - http://gitorious.org/~viroos/simavr/viroos-simduino-simavr/commit/bfaeac1e61f1d6678b3daab7fede9a783d01c098 , und sie funktionieren.

Aber die serielle Verbindung sieht unterbrochen aus. Ich kann eine Skizze hochladen (ich habe dazu ,link=/dev/ttyUSB0den Befehl socat hinzugefügt ), aber danach funktioniert die Kommunikation nicht mehr. Zum Beispiel kann ich eine "physische Pixel" -Skizze hochladen, aber ich kann keine LEDs einschalten. Ich habe versucht, eine Verbindung mit einem seriellen Monitor in der IDE und von pySerial herzustellen. Es sieht so aus, als würden Empfehlungen ignoriert.

Auch in "Blink" -Skizze in der Hauptschleife:

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
}"

Ich muss den delay(1000);Befehl entfernen, weil sie den Emulator hängen.

Ich werde jede Hilfe schätzen. Das Wichtigste für mich ist vorerst das Uart-Fixing (Skizze "physisches Pixel" ausführen).

Maciek Sawicki
quelle

Antworten:

2

Ich habe zwar eine Weile keinen Hardware-Simulator mehr verwendet, aber ich denke, was passiert, ist so etwas.

Jeder Taktzyklus des AVR wird simuliert, der auf dem Host-PC mehrere Taktzyklen benötigt. Daher läuft die Zeit auf dem simulierten AVR langsamer als in Echtzeit. Dies könnte erklären, warum die Verzögerungsschleife den AVR-Simulator zu hängen scheint.

Ein ähnliches Szenario könnte bei der seriellen Schnittstelle der Fall sein.

Persönlich bin ich mir nicht sicher, ob die Simulation moderner Prozessoren mit Flash-Speicher produktiv ist, da es schneller ist, das Programm einfach in das System zu laden und es "laufen zu lassen", um zu sehen, was passiert.

geo_melb
quelle