Forum: Mikrocontroller und Digitale Elektronik Arduino Simulator


von Maus (Gast)


Lesenswert?

Welche Möglichkeiten gibt es Arduino-Code zu simulieren?

Konkret möchte ich die Geschwindigkeit simulieren. Die angeschlossene 
Hardware besteht im Grunde nur aus Shiftregistern, Tastern, LEDs und 
einem Display.

Kann ich das vielleicht sogar mit AVR-Studio machen wenn ich da 
irgendwie die Arduino-Dependencies und so einbinde?
Oder mit einem anderen bewährten Simulator?

Danke

von Michael H. (michael_h45)


Lesenswert?

Schau dir mal Proteus von Labcenter an. Ich hab hier schon öfters drauf 
verwiesen:
Beitrag "Re: 4 Bit Zähler aus Flip-Flops"
Beitrag "Re: Binär-Uhr hoffentlich finale Schaltung"

von Michael (Gast)


Lesenswert?

Maus schrieb:
> Welche Möglichkeiten gibt es Arduino-Code zu simulieren?

Was zur Hölle möchte man da simulieren? Das ist doch lächerlich.

von Maus (Gast)


Lesenswert?

> Proteus von Labcenter
kann ich da tatsächlich Arduino-Code mit Bootloader simulieren?

> Was zur Hölle möchte man da simulieren? Das ist doch lächerlich.
Jau, Danke für die Antwort ;)
Na wie gesagt, das Timing möchte ich raus finden.
Ich möchte schauen ob eine Timer-ISR zu lang wird, also ob sie erneut 
aufgerufen wird bevor sie durch gelaufen ist. Und ob da zwischen den 
Ticks noch platz für Dinge aus dem Loop sind. usw.

Was ist daran lächerlich? Wäre ziemlich cool!

von Michael H. (michael_h45)


Lesenswert?

Maus schrieb:
>> Proteus von Labcenter
> kann ich da tatsächlich Arduino-Code mit Bootloader simulieren?

ich brauch noch deine telefonnummer, wenn ich dir das internet vorlesen 
soll.
...

von Maus (Gast)


Lesenswert?

na das habe ich gefunden:
http://www.youspice.com/ys/howto-arduino-simulation-proteus.3sp

aber scheint so als ob man hier nur .hexen reinladen kann und nicht 
Takt-für-Takt die Abarbeitung des Arduino-Codes beobachten kann. Also 
nicht so, wie das in z.B. AVR-Studio in C geht.

Also so etwas gibt es nicht?

von Busbauer (Gast)


Lesenswert?

Trick um Interrupt-Timing Probleme zu lösen:
Pin am anfang auf 1 Setzen und am ende wieder auf 0. Das mit nem Oszi 
anschauen, alternativ Flipflop oder so ein Kram ran.
Ansonsten hab ich mir gerade das überlegt:

volatile int dummer_zufall = 0;

ISR
{
if(dummer_zufall == 1)
{
    ALARM ALARM ALARM
}
dummer_zufall = 1;
total überladene Interruptrutine...
...
...
...
...
...
}
Während dessen in der while-Schleife:
while(1)
{
 dummer_zufall = 0;
}

von Maus (Gast)


Lesenswert?

> volatile int dummer_zufall = 0;
>
> ISR
> {
> if(dummer_zufall == 1)
> {
>     ALARM ALARM ALARM
> }

gute idee,
danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.