Rechenzeit AVR-Studio

Jun 09, 2004 12 Replies

Hallo,



mein ATMege8535 läuft mit 2MHz und soll u.A. ein paar kleine bistabile Relais ansteuern. Das Einschalt-Signal soll ca. 100 ms anliegen, so daß ich einen "Do Nothing Loop" eingebaut habe der die 100 ms Verzögerung erzeugt. Die Simulation dieser Verzögerungsschleife dauert aber auf meinem PIII 500MHz gut 3 Minuten! Ist das Normal oder sollte ich nochmal nachrechnen ob die Schleife wirklich nur 100 ms dauert :-). Die Software ist noch nicht ganz fertig, daher kann ich es noch nicht ausprobieren.



MfG Michael


Michael Schlegel Faculty of Electrical Engineering and Information Technology Chemnitz University of Technology, Germany http://www.tu-chemnitz.de/~micsch

Am Wed, 09 Jun 2004 17:31:08 +0200, schrieb Michael Schlegel :

Das ist beim BASCOM-Compiler dasselbe. Wenn ich den Simulator anwerfe, muß ich vorher alle waitxxx mit rem stillegen, sonst kann ich zwischenzeitlich erstmal duschen gehen.

MfG

Frank

Das ist Normal. Ist beim MPLAB für die PICs auch so ;)

cu

"Frank Scheffski" schrieb im Newsbeitrag news: snipped-for-privacy@4ax.com...

Mach die Schleife mal sehr viel kleiner und schau nach dem Ablauf der Schleife nach wieviel CPU-Takte abgelaufen sind. Wenn du 1 Mhz verwendest, rechnet sichs leicher..

Da kann aber etwas nicht stimmen... Auf meinem P4 2,4 Ghz laufen BASCOM-Schleifen im Simulator fast in "Echtzeit" d.h. ein "Waitms 5000" dauert ewas länger als 5 Sekunden. (Simulation eines 4433 mit 2 Mhz)

Noch ein Tip: Mit BASCOM gehts viel einfacher als in Assembler !

Moin Michael,

das ist völlig normal. Softwaresimulatoren laufen eben nicht in Echtzeit. Wenn du irgendwann anfängst z.B. Timer- oder externe Interrupts zu benutzen kannst du den Softwaresimulator gleich in die Tonne drücken. Oder hat dein PC einen /INT0 Eingang ? Manchmal kann man irgendwelche komplizierten Stimuli Dateien für Interrupts erzeugen, aber das ist es dann auch nicht. Ob ein Audiosignal das du per PWM ausgeben möchtest auch wirklich kein Blubbern oder Knackser enthält findest du erst raus wenn du die Schaltung aufgebaut hast.

Gruß Holger

Dipl. Ing. (FH) Holger Klabunde http://home.t-online.de/home/holger.klabunde/homepage.htm Debugger: Hilft bei der Suche nach einem besseren Programmierer ;)

Michael Schlegel schrieb:

Irgendwo im Simulator (glaube Rechts unter Prozessor oder so) hat's ne Stoppuhr... musst nur angeben dass du mit 2 MHz taktest und kannst via Breakpoints die Zeit 'stoppen'.

Gruss, Edi

Eigentlich sollte es mit einem moderenen PC möglich sein, den AVR in Echtzeit zu simulieren. Die Simulatoren für die Spielconsolen aus den 80ern schaffen das ja schon seit Jahren. Scheint so dass der Simulator in AVR Studio nicht besonders gut optimiert ist. Eine halbe Million Befehle, um einen einzigen AVR-Befehl zu simulieren, ist aber schon ziemlich heavy. Das schafft man ja nicht mal im Basic Interpreter.

Wie auch immer. Simulatoren für Microcontroller, der ja normalerweise mit diversen Hardwareumgebungen wechselwirken, sind ohnehin nur sehr eingeschränkt verwendbar. Besorg dir doch einen JTAG ICE (Nachbauten ab 50 EUR), da kannst du den AVR in der echten Hardwareumgebung in Echzeit debuggen.

Georg

Ich glaub du hast ein paar Zehnerpotenzen übersprungen, Ich hätt gern so einen PC. Darauf würde sogar Java erträglich :-)

MFG Gernot

Sofern die Angaben von Michael stimmen:

Der AVR läuft mit 2 MHz, der PC mit 500. Beide brauchen 1-2 Takte pro Befehl. Die Delay-Loop am AVR dauert 100 ms, am PC simuliert 3 Minuten. Der PC ist also 250 mal schneller und braucht trotzdem für die gleiche AVR-Routine 1800 mal so lang.

Ergebnis: 450.000 PC-Befehle pro simulierten AVR-Befehl.

Georg

Wenn du das so siehst ist es natürlich richtig. Ich ging vom echten AVR aus.

MFG Gernot

"Gernot Fink" schrieb im Newsbeitrag news: snipped-for-privacy@uni-berlin.de...

um

heavy.

Der

aus.

Und warum geht das mit meinem P4 2,4 Ghz dann fast in Echtzeit ?

Keine Ahnung. Vielleicht stimmen die Angaben von Michael nicht, seine Schleife dauert viel länger oder er hat irgendwelche Optionen falsch eingestellt.

Dein 2.4 GHz Rechner braucht jedenfalls so etwa 1000 Pentium-Befehle pro AVR-Befehl, was mir für einen geradlinig herunterprogrammierten Simulator ohne besondere Optimierungen ein realistischer Wert zu sein scheint.

Georg

Hallo,

ich hatte übersehen, daß die Warte-Schleife mehrfach (ca 15 mal) in der entsprechenden Funktion gerufen wird, als relativieren sich meine Angaben etwas. Es bleiben somit rund 10 Sekunden zur Simulation von 0.1 Sekunde im AVR, was von Echtzeit aber immer noch weit entfernt ist.

MfG und Danke für die Antworten Michael

Michael Schlegel Faculty of Electrical Engineering and Information Technology Chemnitz University of Technology, Germany http://www.tu-chemnitz.de/~micsch

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required