- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Bits auf uC effektiv abfragen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von askazo Beitrag anzeigen
    Du brauchst also maximal 5 Takte um einen Vergleich zu machen. Diese Operationen benötigst Du auf jeden Fall (Laden - Vergleichen - Verzweigen).
    Das ist ja auch alles korrekt. Nur ergeben 5Takte/Bit*6Bits*8Arrays=240Takte. Bei einem Clock von 30Mhz ist meinuC eine Weile unterwegs.
    Vielleicht geht es wenn man die Arrays über Bitmasken verknüpft.
    Da muss ich aber mal drüber schlafen.

    Zitat Zitat von Richard
    z.B. mit der case Funktion wenn 1,2,4,8,16,32,64..........oder wasauchimmer.
    Wäre möglich. Doch sind da viele Kombinationen möglich. Das werden sehr lange switch/case Routinen.

    Vielen Dank euch!

    Viele Grüße

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von .:Sebastian:.
    Registriert seit
    07.01.2006
    Ort
    Arkon I
    Beiträge
    203
    Moin

    Also besser als mit askazos Lösung wirst du net werden können.
    Weil egal wie du es im Source schreibts wird dein Kompilier dir immer in etwa das hinoptimieren.
    Selbst die switch und case Sache, wird der Kompiler auf If und else zurückvereinfachen und dann so ähnlich umsetzen.

    Du könntest höchstens mit nem geschickten assembler Programm vllt. noch einen Takt einsparen, je nach dem wie man deinen Code umschreiben kann.

    Auf der anderen Seite :
    240 Takte bei 30mhz (komische Frequenz btw.)
    240 / (1/ (30*10^6)) = 8*10^-6s = 8uS
    Das sind 8us das heißt du kannst immer noch fast 125000mal pro Sekunde dein Array vergleichen.
    Ob das jetzt als "eine Weile unterwegs" gilt überlasse ich mal deiner Definition

    Was ich ich dann auch noch frage : Musst du mehrere Bits im selben Byte prüfen ?
    Weil das werden dann weniger als 5Takte pro Abfrage, weil du ja nur einmal Laden musst um mehre Bits in dem Byte zu vergleichen.
    Sprich du wirst noch etwas schneller.

    Wenn dir das nicht reicht solltest du über einen größeren uC nachdenken, oder überlegen ob so viele Vergleiche überhaupt notwendig sind.
    Machen vllt. mache Vergleiche andere überflüssig ? Gibts irgendwelche abhängigkeiten der Werte untereinander ?
    Allerdings kann dir das keiner sagen, solange wir nicht wissen was warum so verglichen wird.


    Gruß
    Sebastian
    Geändert von .:Sebastian:. (14.06.2011 um 23:08 Uhr) Grund: Noch ne Idee gehabt.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.242
    In AVR Assembler gäbs noch ein paar Möglichkeiten.

    Die nutzung des T-Flags im SREG

    BST r16,1
    BRTS jump
    BST r16,2
    BRTS jump1. ; uns so weiter.

    Eine andere Möglichkeit wär noch das rollen über das Carry Flag

    CLC
    ROR r16
    BRCS jump
    ROR r16
    BRCS jump1 ; und so weiter

    Da hierbei der Schiebevorgang über das Carry stattfindet, und dieses wieder von der anderen Seite in das gerollte Byte eingeschoben wird, kann man damit auch mehrbytige Zahlen verarbeiten.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Leider kenne ich C nicht, jedoch ein Gedanke zum Programm:

    Das Byte Array bräuchte vielleicht nicht in den Abfragen auf Bits zurechtgeschoben/maskiert zu werden sondern könnte vorher aufbereitet werden.

    zB ein Bit Overlay, das über das Bytearray gelegt wird. Das hätte dann 64 Elemente. Oder man macht ein Byte array mit 64 Elementen, bei dem ein Byte den Bitwert des originalen Arrays enthält.

    Würde für die Geschwindigkeit der Abfragen vermutlich nichts bringen - der Code sähe dann aber möglicherweise in Bezug auf die Bittests eleganter aus.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. Stromangabe bei Sicherungen Effektiv oder Spitze
    Von dominik699 im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 02.09.2010, 10:33
  2. Bascom - Effektiv?
    Von Namenlos im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 30
    Letzter Beitrag: 17.11.2008, 18:58
  3. AVR: I2C und ACK/NACK Bits
    Von Murus im Forum AVR Hardwarethemen
    Antworten: 3
    Letzter Beitrag: 18.07.2007, 16:47
  4. LCD mit 8-Bits ansteuern
    Von Lebi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 06.11.2006, 22:52
  5. Fuse bits
    Von FRY-Robotik im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 25.06.2006, 12:50

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test