- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 11

Thema: wieviele Befehle kann mein µC in einem Taktzyklus erledigen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Das sollte im Datenblatt stehen und hängt u.A. von der Breite des Befehlsregister (und der Taktrate) ab. 8 Bit Prozessoren können nur 1 Befehl pro Takt, 16,32,64 Bittige entsprechend mehr. Dazu kommt noch die Architektur des Prozessors da gibt es auch große Geschwindigkeits Unterschiede. Noch schneller würden speziell für Dein Problem "gestickte" FPGA's sein können. Dein Prozessor Typ sagt (mir) leider nichts, aber Du hast sicher ein Aktuelles Datenblatt.

    Gruß Richard

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Auch die 32 Bit µCs können normal maximal 1 Befehl pro Takt. Nur sind die Befehle bei den 32 Bit µCs etwas mächtiger, halt eine 32 Bit Addition statt einer 8 Bit Addition. Bei den DSPs gibt es einige die etwas mehr können, weil der mehr als eine CPU parallel arbeitet.

    Für die Erfassung des 200 kHz Signals reicht der µC aber wohl aus. Bei mir im Frequenzzähler schaft das auch ein 8 Bit AVR (Tiny2313) mit 20 MHz, bis knapp 300 kHz. Das sollte auch mit dem STM32 zu schaffen sein. Zur sicherheit aber noch mal ins Datenblatt schauen, denn die ARMs sind teilweise langsam beim Zugriff auf IO Register. Den Timer sollte man aber eher mit maximalem Takt laufen lassen damit man auch ein brauchbare Auflösung hat.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von Besserwessi Beitrag anzeigen
    Auch die 32 Bit µCs können normal maximal 1 Befehl pro Takt.
    Woher ich es habe ? Aber irgendwo hatte ich schon einmal mit Prozessoren zu tun welche mehrere Befehle mit/in einem Takt abarbeiten konnten. Leider ist (meine) Höchstform zu diesem Thema schon etwas länger zu Ende ich habe es schlicht vergessen (oder falsch in Erinnerung). Aderersteis wenn ein "Breiteres Register" pro Takt Parallel ver/be arbeitet werden kann, sollte es schneller gehen?

    Gruß Richard

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Beim PC sind die Prozessoren so weit, das die mehr als einen Befehl pro Zyklus können. Die üblichen µCs können das aber nicht, da ist man eher noch bei mehreren Zyklen pro Befehl. Da gibt es aber ggf. welche die einem einige Aufgaben durch spezielle Hardware abnehmen können (z.B. UART, Input Capture mit FIFO, "DMA"-Funktionen ).
    Durch die breiteren Register werden einige Aufgaben schneller, aber nicht alle. Hier hilft es vermutlich schon, weil die Auflösung des Timers auch eher bei 16-32 Bit liegt.

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich kenn den konkreten Processor nicht, aber beim AVR könnte man folgende Abschätzung vornehmen:

    Bei 1 MHZ Takt kann er in 1 µS einen Befehl ausführen.
    bei 24 MHZ und deinen 2.5 µS könnten also 24 * 2.5 Befehle abgearbeitet werden => 60

    Mit 60 Befehlen kannst du vielleich 5-6 mal Pin abtasten.
    zum halbwegs genauem Flankenerwischen ist das eher wenig (IMHO)
    Geändert von PicNick (08.07.2011 um 07:48 Uhr)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    07.07.2011
    Beiträge
    35

    1-zeil von C-Code entspricht 5-Zeille von ASS-Code

    Hallo,

    ich danke allen für die Antwort.

    Durch weitere Recherche bin ich darauf gekommen:
    * 1-Zeile eines C-Code entspricht 5-Zeilen von Assembler-Code. Jede Zeile von Assebler-code bedeutet Ein Befehl.
    * Die CCU arbeitet unabhängig von dem kern-prozessor. Das heisst; sie arbeitet quasi parallel

    Schlussfolgerung besagt, dass der µc (Laut der og. Angabe) 24-Zeile Assebler-Code in millionstel Secunde erledigen kann.
    Erst wenn CCPU einen Interrupt auslöst, dann wird 12 Taktzyklen für das Sprengen von dem Main-Programm ins ISR und 6 Taktzuklen für das Zurücksprengen (von ISR in Main-Programm) benötigt. Also Ingesamt 18 Taktzyklen für hin und her. Dann bleibt übrig nur ca. 6 Taktzyklen.

    mit Ziffern heisst das:
    Taktsystem 24MHz -> 41,6 ns oder 0,0416 µs
    Psc-Takt(Prescaler) 400KHz -> 2,5 µs

    D.h. innerhalb einem PSC-Takt macht das System ca. 60 Takten
    von diesem 60 Takten wird 18 Takten für hin und her um sonst verschwunden (0,75 µs).
    Übrig bleibt doch genung und zwar 42 Takten (1,75 µs).
    D.h. Alles was zu rechnen etc. zu tun is, soll befor die Nächste steigende Flanke erledigen, nämmlich innerhalb von 1,75 µs oder 42 systemtakten.

    Ist meine Schlussfolgerung Richtig? Ich brauche doch von euch als wissender Bestätigung?!

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Da kommen wir ja eh mehr oder weniger auf das Gleiche.
    Frage ist nun, WAS denn genau bei jeder Flanke zu rechnen oder zu tun ist. Eine FFT bringst du da nicht durch, logo
    ISR ist auf jeden Fall besser als abtasten, da genau mit den Flanken ausgelöst wird.

    btw: das C / assembler verhältnis mit 1:5 ist sehr theoretisch bzw reiner durchschnitt (und hängt auch vom eingestellten Optimizer ab). Bei sowas wie
    (double)result = (double)Varia / 0.48
    geht normalerweise das Licht aus und es ist doch nur eine Zeile.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Ähnliche Themen

  1. Mein Asuro kann balancieren!
    Von waste im Forum Asuro
    Antworten: 64
    Letzter Beitrag: 24.10.2011, 21:20
  2. C++ Befehle mit einem USB-Adapter (mit FT232RL) nutzen
    Von Ulle23 im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 23.10.2008, 10:36
  3. Mein AVR kann GSM?
    Von 1hdsquad im Forum Elektronik
    Antworten: 28
    Letzter Beitrag: 16.03.2007, 18:05
  4. Wie kann ich mit C I2c-Befehle ausgeben ?
    Von faboi im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 3
    Letzter Beitrag: 11.04.2006, 18:23
  5. Antworten: 6
    Letzter Beitrag: 14.08.2005, 13:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test