- Akku Tests und Balkonkraftwerk Speicher         
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
    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.

  2. #2
    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?!

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

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.07.2011
    Beiträge
    35
    Danke PicNic

    ja, aber ich wolte es in details formulieren, damit ich sicher gehen kann "" die Tücke liegt immer in deitails.

    Sorry! Was Meinst du mit FFT?

    Das externe Interrupt wäre in meinem Fall nicht praktisch, praktischer wäre wenn ich die Impulsfolge mittels CCU erwiscche.
    Denn der Geber kann mit 200KHz laufen.D.h pro 5µs ändert sich das Pagelstand des Signals. viel mehr wenn ich dieses Signal nicht nur bei Steigende oder Fallende Flanke erfassen möchte sonder sowohl als auch. D.h. Das Abtastrat soll mind. 2,5 µs schnell sein. noch Kompletierter wäre wenn nicht nur ein Signal sonder Zwei signale (cha-A und Cha-B), die der Drehgeber ausliefert und die von einander 90-Grad Phasig verschoben sind. So letzt endlich soll jede 1,25µs einen Interrupt ausgelöst werden.

    Innerhalb dieser 1,25 µS soll folgendes erledigt werden:
    * Integer aritmehtic: Ich soll aus den erfassten Signalen die Geschwindigkeit, Drehzahl und Drehrichtung rausfinden.
    * Diese Werte sollen auch über SPI übertragen werden, falls der Master das SSL triggert.
    * Zu guter letzt soll die Werte auf LCD angezeigt werde.

    ohhhhhhhhhhhhhh das alles ist innerhalb einer 1,25 µs zu erledigen ???? viel zu viel denke ich mal.
    Deswegen werde ich über ccu alle 10 steigende/fallende Flanke einen Interrupt auslösen.

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ah so, Drehgeber. Anschlussfrage: für Odometrie, also Wegmessung, oder für sowas wie einen Motor (der ja nicht einfach von einem Impuls zum nächsten die Richtung wechseln kann) ?
    Im zweiten Fall ist das mit dem 90° Signalen nicht notwendig und das mit auf- und ab-Flanken eigentlich auch nicht.

    Auch klar: Für Geschwindigkeit bzw. Drehzahl brauchst du eine Zeit, die du extra tickern lassen musst.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    So einen STM32F103 hat doch eine sehr schone Timerfunction : der A und B Ausgangen von encoder werden gleich an einen Hardwarecounter verbunden. Diese Timer/counter erfasst dan genau die exacte Zaehlerstand von encoder, ohne das den Processor sich da bemuht. Das Hauptprogram kan dan immer zugreifen auf diesen "Counter" wenn notig. Und das kan dan auch mehrmals gemacht werden, das Ding hat genugend Timer und Eingangen. Ich habe das so gemacht mit das Discovery board von STM. Functioniert problemlos !!Für in bestimmte Zeitpunkten eine ISR laufen lassen isst den 3"Systicktimer" gedacht.

Ä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
  •  

fchao-Sinus-Wechselrichter AliExpress