- 3D-Druck Einstieg und Tipps         
Seite 4 von 10 ErsteErste ... 23456 ... LetzteLetzte
Ergebnis 31 bis 40 von 96

Thema: C++ fstream GPIO Trigger/Interrupt

  1. #31
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Anzeige

    LiFePo4 Akku selber bauen - Video
    WriingPi mach aus einem GPIO aber auch keinen echten Hardware Interrupt.
    Wenn es nicht zwingend sein muss würde ich die Lösung gerne Hardware unabhängig halten. Da sind halt Kernel und C Funktionen meiner Meinung die besser Wahl.

    Ich schau mir das mal an was IBM von inotify schreibt. Die Seite die ich gefunden hatte war ja auch Englisch findet man leider ja öfter nicht anderes. Ich probier das auch mal aus mit inotify dann kann ich auch mal gucken wie schnell das ist. Stimmt schon an die blockierenden read habe ich nicht mehr gedacht.

  2. #32
    HaWe
    Gast
    Zitat Zitat von alexander_ro Beitrag anzeigen
    WriingPi mach aus einem GPIO aber auch keinen echten Hardware Interrupt.
    vermutlich, nach meinem begrenzten Verständnis, hast du damit Recht.
    Hier äußert sich der Meister des wiringPis persönlich dazu:
    https://www.raspberrypi.org/forums/v...146408#p146408

    s.a. hier unter "Interrupts"
    https://projects.drogon.net/raspberr...gpi/functions/

  3. #33
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    WriingPi mach aus einem GPIO aber auch keinen echten Hardware Interrupt.
    neuerem kernel sei dank schon, wie gesagt der einzige grund wrum ich es nochmal erwähnt hatte ... leider aber eben limitiert auf raspbery pi
    https://www.raspberrypi.org/forums/v...ic.php?t=74643

    viel erfolg beim probieren mit inotify, und denk dran, wenn der kernel älter ist, musst du auf dnotify zurückfallen aber dann wirds unperformant ... zumindest nach dem was ich bei vergleichsdiskussionen so gelesen habe


    PS: -----------

    du kansnt auch die realtime patches installieren wenns richtig dramatisch werden sollte mit den timings, aber dann hast du natürlich nichts universelles mehr
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #34
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    @Ceos: So alte Kernel gibt es doch für den Raspberry gar nicht mehr. Bei IBM ist für inotify von Kernel 2.6 die rede. Ich habe zwar ein Gentoo auf meinem laufen ich benutze aber den Kernel den auch das Raspian benutzt. Die boot Partition habe ich einfach kopiert.

    Das ist ein Irrtum zu glauben das etwas schneller wird mit den Realtime Funktionen des Kernels. Realtime garantiert nur eine Reaktion in einer bestimmten Zeit. Diese Zeit muss aber auch im Rahmen der Möglichkeiten des Systems liegen. Deutlich schneller würde es nur wenn man die Filesystem Zugriffe durch Memory Mapped IO ersetzt. Das will ich aber nicht weil das wieder andere Probleme mit sich bringt. Trotzdem will ich aber auch nicht sinnlos Rechenzeit verschwenden.

    Ob das echte Hardware Interrupts sind müsste man im Datenblatt des Prozessors nachlesen. Das ist mir aber im Moment zu viel Aufwand.

  5. #35
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Realtime garantiert nur eine Reaktion in einer bestimmten Zeit
    darauf kams doch an oder nicht?

    Ob das echte Hardware Interrupts sind müsste man im Datenblatt des Prozessors nachlesen
    ja sind es beim Raspberry Pi + wiring pi seitdem der kernel ISR unterstützung bekommen hat

    Deutlich schneller würde es nur wenn man die Filesystem Zugriffe durch Memory Mapped IO ersetzt. Das will ich aber nicht weil das wieder andere Probleme mit sich bringt.
    seh ich genau so ... in beiderlei hinsicht
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  6. #36
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Zitat Zitat von Ceos Beitrag anzeigen
    darauf kams doch an oder nicht?
    Stimmt ist nicht unwichtig. Aber wenn der Raspberry nicht bis zum letzten Prozent Rechenleistung ausgelastet ist sind die Abweichungen in der Reaktionszeit auch ohne Realtime sehr gering. Selbst wenn Gentoo Updates compiliert das relativ hohe Last verursacht reicht scheinbar die verbleibende Rechenzeit um einige Ports ohne nennenswerten Zeit Verlust zu überwachen und zu schalten. Das macht der Kernel schon recht ordentlich und ist so für meine Zwecke mehr als ausreichend.

  7. #37
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    okay freut mich und danke für den informativen test
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  8. #38
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Bin ja noch gar nicht fertig mit dem Testen ...
    Danke für eure Hilfe.

  9. #39
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.04.2005
    Ort
    Bad Aibling
    Beiträge
    212
    Jetzt läuft es mit inotify. Es macht auch einen Unterschied ob man rising, falling oder both benutzt. Nur Merkwürdig ist das falling und rising invertiert erscheinen. Kann das an den internen Pullup oder Pulldown Widerständen liegen? Ein aktiver Pullup würde doch wie ein Inverter wirken. Nur weiß ich nicht wie man die konfigurieren kann ...

    [Edit]
    Ich habe jetzt gelesen das die internen Pull Up/Down nach dem booten ausgeschaltet sind. Dann lag es daran das der Port bei mir dann offen war. So kleine Mosfet wie in den Prozessoren wird das bisschen Energie das an einer offenen Leitung einstrahlt schon reichen das er einschaltet. Mit einem externen Pull Down Widerstand funktioniert es dann einwandfrei. Wenn man immer einen gesicherten Zustand haben will wird man so externe Widerstände nehmen müssen. Weil der interne beim booten oder Reset ja nicht vorhanden ist und erst beim Start der Steuerungssoftware konfiguriert wird.

    Nach einigen Tests mit der inotify Lösung sieht man schon das das nicht die schnellste ist. Wenn man in einer Endlos Schleife einen Port ein/ausschaltet und den anderen als Eingang für der Trigger benutzt. Verliert er sehr viele Impulse die der Trigger nicht mitbekommt. Bisher habe ich als kleinsten Wert mit einer Verzögerung von einer Millisekunde getestet. Damit funktioniert es problemlos. Ob noch kleinere Werte möglich sind habe ich bisher nicht getestet. Für die Lösung von Mechanischen Steuerungsaufgaben sollte es aber ausreichend sein.
    Code:
      for (;;)
      {
        std::cout << "Port 2: 1" << std::endl;
        ioPort2 << 1;
        milliSleep (1); // benutzt intern nanosleep
    
        std::cout << "Port 2: 0" << std::endl;
        ioPort2 << 0;
      }
    Vermutlich wäre die Lösung mit epoll schneller und auch recht gut Hardware unabhängig. Bei epoll spart man sich ja einmal die Zugriffe über das Filesystem die schon sehr viel Zeit kosten. Alles Memory Mapped ist zwar schnell aber leider dann auch 100% Hardware abhängig.
    [/Edit]

    [Edit]
    Falls es jemanden interessiert habe ich den aktuellen Stand in mein git Repo kopiert. Das ist noch nicht fertig aber man kann sehen wie es geht. Fehlerhandling usw. muss man noch anständig machen. https://git.hts-software.de/index.ht.../Gpio/Gpio.hpp
    [/Edit]
    Geändert von alexander_ro (24.01.2018 um 10:59 Uhr)

  10. #40
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    31.01.2004
    Ort
    36399
    Alter
    50
    Beiträge
    1.562
    Alexander bist du jetzt mit deinem Code zufrieden ?
    Ich möchte einen Drehgeber damit abfragen die Zeiten die du gemessen hast sehen irgend wie passen aus.
    P: Meine Tochter (06.11.07) und https://www.carnine.de
    M: Träumen hat nix mit Dummheit zu tun es ist die Möglichkeit neues zu erdenken

Seite 4 von 10 ErsteErste ... 23456 ... LetzteLetzte

Ähnliche Themen

  1. Benötige Hilfe zu AT32U3C und GPIO
    Von xrzr im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 10.11.2015, 19:54
  2. Respberry Pi GPIO mit C++ und QT
    Von Basti1204 im Forum Raspberry Pi
    Antworten: 0
    Letzter Beitrag: 06.03.2013, 00:01
  3. [ERLEDIGT] Raspberry Pi GPIO
    Von Kampi im Forum Raspberry Pi
    Antworten: 4
    Letzter Beitrag: 04.11.2012, 23:45
  4. GPIO-Register Ansprechen
    Von kmrish im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 7
    Letzter Beitrag: 14.07.2011, 10:45
  5. schmitt-trigger an interrupt
    Von Bluesmash im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 19.06.2005, 23:46

Berechtigungen

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

12V Akku bauen