Rechenzeit AVR-Studio

  • Thread starter Michael Schlegel
  • Start date
M

Michael Schlegel

Guest
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
<Michael.Schlegel@e-technik.tu-chemnitz.de>:


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.
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
 
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.
Das ist Normal. Ist beim MPLAB für die PICs auch so ;)

cu
 
"Frank Scheffski" <fscheffski@t-online.de> schrieb im Newsbeitrag
news:08cec012780dpbdfunjooepjktd8gposdb@4ax.com...
Am Wed, 09 Jun 2004 17:31:08 +0200, schrieb Michael Schlegel
Michael.Schlegel@e-technik.tu-chemnitz.de>:


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.
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..

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.
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,

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.
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:
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

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
 
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.

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
 
In article <2iqou3Fpk11uU1@uni-berlin.de>,
"Georg Meister" <georg.meister@gmx.at> writes:
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.
Ich glaub du hast ein paar Zehnerpotenzen übersprungen,
Ich hätt gern so einen PC. Darauf würde sogar Java erträglich :)


--
MFG Gernot
 
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.

Ich glaub du hast ein paar Zehnerpotenzen übersprungen,

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
 
In article <2irk5vFq9iddU1@uni-berlin.de>,
"Georg Meister" <georg.meister@gmx.at> writes:
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.

Ich glaub du hast ein paar Zehnerpotenzen übersprungen,


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.
Wenn du das so siehst ist es natürlich richtig. Ich ging vom echten AVR aus.

--
MFG Gernot
 
"Gernot Fink" <G.Fink@gmx.net> schrieb im Newsbeitrag
news:2irm38Fpii14U1@uni-berlin.de...
In article <2irk5vFq9iddU1@uni-berlin.de>,
"Georg Meister" <georg.meister@gmx.at> writes:
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.

Ich glaub du hast ein paar Zehnerpotenzen übersprungen,


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.

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

Und warum geht das mit meinem P4 2,4 Ghz dann fast in Echtzeit ?
 
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.

Wenn du das so siehst ist es natürlich richtig. Ich ging vom echten AVR
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
 
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.

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

Und warum geht das mit meinem P4 2,4 Ghz dann fast in Echtzeit ?
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
 

Welcome to EDABoard.com

Sponsor

Back
Top