- Labornetzteil AliExpress         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 36 von 36

Thema: Ausführungsgeschwindigkeit: Grundlegende Frage zu Bascom

  1. #31
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Anzeige

    Praxistest und DIY Projekte
    Ja,dann sollte das Problem gelöst sein.
    Gruß
    Ratber

  2. #32
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich würde eben versuchen, einfach jede 1/1000 Sekunde EINE einzelne Meßung zu machen und wär dann in 64 mS wohl fertig. da bliebe immer Zeit dazwischen für irgendwelches Nebenzeugs.
    Ich find', diese spezielle 1/100 Sekunde ist einfach überladen. (IMHO)
    Da eine Meßung ~ 100 µS fertig wäre, könnte man vielleicht auch flotter ticken, aber eben die Last immer schön verteilen.

    (Wenn das von der Aufgabe her eben geht)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #33
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209
    Ja,dann sollte das Problem gelöst sein.
    scheinbar nicht, habe mal h1=10 in h1=80 geändert, aber keine Besserung....

    Ich find', diese spezielle 1/100 Sekunde ist einfach überladen. (IMHO)
    ich bin für jede Lösung (am besten mit code-ansätzen ) dankbar:
    mindestens 10 mal in der sekunde 5 adc-kanäle mit mittelwertbildung (8 Messungen gingen auch) auswerten, ohne das andere Interrupts gestört werden.

    Hätte nie gedacht, daß es so kompliziert ist mit getadc(x) zu arbeiten....

  4. #34
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Wenn die anderen Int nicht zu häufig kommen gibts auch kein Terror.

    Ich rechne nochmal.

    Eine Einzelwandlung dauert komplett 25 Taktzyklen (Lt. Datenblatt) und der Takt darf bei 10 Bit Auflösung max. 200 Khz betragen.
    (Geht man höher dann leidet die auflösung aber es geht flotter.)
    Das sind nach Adam Riese 125µs pro Wandlung wenn man streng nach Datenblatt geht)
    Bei 5x10 bzw 5x8 Wandlungen am Block sind das 6.25 bzw. 5ms für alles.

    Bei 100 Messungen/s wird also alle 10ms ein messzyklus gestartet.

    Dh. du hast mit der einfachen Methode 5ms für dich alleine um was anderes zu machen.
    Bei nem Systemtakt von 16Mhz also 80000 Taktzyklen für was anderseres.
    Wenn du den ADC mit IRQ betreibst dann sogar wesentlich mehr da der ja die größte Zeit alleine läuft.


    So und nun zum Praktischen Problemchen.
    Und das Problem ist ja das Bascom den einfachsten Weg geht und nach dem Starten der Abfrage einfach wie nen Engländer am Busstop steht bis die Wandlung beendet ist.
    Dazwischen passiert rein garnichts.

    Für den Normalfall wenn einer alle Sekunde mal nen Kanal abfragt fällt das garnicht auf.
    Auch einen Kanal 10x oder alle 8 jeweils 1x die Sekunde ist gut zu managen aber bei deinen 5000 bzw. 4000 Messungen/s ist dann schnell ende.
    Das ist in Assembler schon nicht mehr so unbeachtet zu erledigen.(Weißt schon was ich meine)

    Vieleicht wäre hier ein Mix aus Bascom und Assembler ne gute Idee.
    Verleg einfach die AD-Wandlung manuell aus dann kannste den ADC-Int nutzen.
    Einige µs Zeit sollten dabei schon rausspringen und der Code wird nur auf dem Papier größer.(Müßte eher kleiner werden denn du gibst ja schon genau vor)

    Rein in Bascom gehts natürlich auch.

    Äh,ja.
    Ich hoff du kannst jetzt mit dem geschreibsel da oben was anfangen.
    Is etwas wirr geworden.
    Gruß
    Ratber

  5. #35
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209
    aber bei deinen 5000 bzw. 4000 Messungen/s ist dann schnell ende
    nicht ganz. selbst bei 100 getadc(x) /Sek (alle 10ms nur eine Messung) bricht alles ein...also ist getadc nicht zu gebrauchen...


    Werde nun versuche das mit dem ADC-Interrupt zu lösen und hoffen, daß es da keine Behinderungen gibt....

  6. #36
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    nicht ganz. selbst bei 100 getadc(x) /Sek (alle 10ms nur eine Messung) bricht alles ein...also ist getadc nicht zu gebrauchen...
    Ja,das meinte ich ja damit.

    Bascom übersetzt ja nicht so optimal wie man das in Assembler machen würde.
    Das ist eine Sache die bei allen Hochsprachen mehr oder weniger auftritt.
    Bascom ist insgesammt schon recht gut und realtiv effizient in Punkto Codegröße aber auch das hat logischerweise Grenzen.

    Wenn es absolut kritisch wird dann ist C oder Assembler die bessere Wahl.
    Gruß
    Ratber

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

Labornetzteil AliExpress