Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Laufzeit diverser Funktionen Kategorie: Programmierung C (von PeterS - 2.08.2006 23:13)
Als Antwort auf Laufzeit diverser Funktionen von ortwin - 2.08.2006 17:40

Hallo,

das Problem ist ziemlich schwierig. Der Compiler erzeugt ja kein Assembler, sondern einen Bytecode, ähnlich wie
Java. Jeder dieser Bytecodes hat eine unterschiedliche Laufzeit. Eine 16bit Addition ist noch ziemlich flott, aber
float Operationen sind so langsam, das einem das Grausen kommt, der Atmel Mega ist ja auch eine 8 Bit CPU.

Die eingebauten Funktionen wie z.B. I2C und Serial_ReadExt() sind optimiert in Assembler geschrieben, aber jede
Funktion hat ihre eigene Laufzeit. Interaktionen (sprich warten) auf externe Daten sidn nicht abschätzbar. Hinzu
kommen noch der 10ms Interrupt, oder z.B. Interrupts für die serielle. Ich fürchte Du mu�t Deine Schleife wirklich
per Hand ausmessen.

�brigens stand im Forum das "a=a+a+a+a" 100µsec dauert. "a=1" würde ich auf ca. 20µsec schätzen.
Der Mega128 ist ürbigens wie der Mega32 mit ca. 14,7 Mhz getaktet.

Da beim Mega128 mehr Platz vorhanden ist, ist der Interpreter etwas besser optimiert und dadurch etwas
schneller.

C-Control Pro wurde als Nachfolger vom C-Control 1 gebaut. C-Control Pro ist schneller, hat mehr Speicher, und
mehr Schnittstellen. C-Control Pro hat Multithreading und einen Debugger mit Breakpoints und Variablen-
überwachung. C-Control Pro unterstützt C und BASIC. ABER C-Control Pro kann nicht mit einem hochoptmierenden
Compiler oder Assembler mithalten, wo alleine Peripherie mit Entwicklungsumgebung ca. $400-500 kostet.
Komplexe Abläufe in nur 2,3ms sind vermutlich kaum zu schaffen.

Gruss Peter

> Hallo zusammen,
>
> ich bin gerade an der Projektierung einer Anwendung wo es auf die Laufzeit des Programmes ankommt.
> ich habe 2,3 msec. Zeit um wieder am Einstiegspunkt zu landen.
> das klingt zunächst mal so als ist da endlos Zeit,
> aber ich muÃ? in meiner Schleife mehrfach I2C() und Serial_ReadExt() ansprechen.
>
> Frage 1:
> ich habe hier im Formum gelesen, daÃ? der Befehl a=a+1 ca. 5usec dauern soll
> --- stimmt das überhaupt --- ???
>
> Frage 2:
> wenn ich jetzt z.B. I2C_Start() aufrufe - wieviele Zyclen werden dann verbraucht ?
> bei Serial_ReadExt() hängt die Laufzeit ja sicher davon ab ob ein Zeichen gelesen wurde oder nicht.
>
> Zusammenfassung:
> wie lange dauert beim Mega128 mit dem Conrad Bootloader / Interpreter ein Befehl genau
> gibt es eine Liste wieviel Zyclen (oder Zeit) ein von Conrad mitgelieferter Befehl verbraucht.
>
>
> Würde mich sehr freuen wenn hier jemand was exaktes weiss, da ich ansonsten die Sache mit dem
> Oszi einzeln ausmessen muÃ?.
>
> Bitte schreibt nicht zurück "guck mal ins ATMEL Handbuch" das habe ich schon.
> ich weiÃ? aber nicht welchen AssamblerCode der Conrad Compiler erzeugt.
> Wenn man soetwas einsehen könnte , könnte ich die Befehle abzählen und mit 1/16000000 multiplizieren.
>
> viele Grü�e aus Aalen bei heute mal endlich 20,7 Grad :-)
>
> ortwin
>
>


    Antwort schreiben


Antworten: