Raspberry Pi wiringPi oder bcm2835, Timerinterrupt

OP #4314324
Lesenswert?
• ▲
▼
Hallo,
um die Hardwarepins in C-Programmen benutzen zu können, braucht man eine 
der obigen Bibliotheken. wiringPi gefällt mir erst einmal gar nicht, da 
ich bisher noch keine vernünftige Doku dazu gefunden habe. Außerdem hat 
die eine ganz andere Pinnummerierung, wegen der dürftigen Doku ist es 
auch schwierig, herauszufinden, welche Ports nun welche wiringPi-Nummer 
haben.

bcm2835 hat dagegen eine deutlich bessere Doku und benutzt die originale 
bcm2835 Pinnummerierung. Daher würde ich diese Bibliothek bevorzugen.

Nun brauche ich aber noch eine Interruptroutine, die ca. 1000-mal pro 
Sekunde aufgerufen wird. Ob das mit einem internen Timer geht oder ob 
nur Interrupts auf Flanken von einem GPIO-Port möglich sind, ist erst 
einmal egal, notfalls schließe ich einen 1000Hz-Oszillator an einen GPIO 
an. Leider sieht es mit der bcm2835-Bibliothek relativ düster mit 
Interrupts aus, mit wiringPi geht angeblich ein Interrupt von einem 
GPIO.

Kann man mit bcm2835 auch Interrupts realisieren oder gibt es irgendwo 
eine gute Doku für wiringPi, in der alle vorhandenen Funktionen erklärt 
sind, incl. der benötigten Parameter? Wie schnell ist wiringPi beim 
Ansprechen der Ports?

Wenn es gar nicht anders geht, kommt ein kleiner Mikrocontroller dazu, 
der die Aufgaben der Interruptroutine übernimmt (hauptsächlich Abfrage 
des optischen Drehgebers, evtl. auch Timervariablen zählen) und dann per 
SPI abgefragt wird... Aber es wäre mir lieber, wenn ich mir diese 
Zusatzhardware sparen könnte.

Gruß
Andy
OP #4314737
Lesenswert?
• ▲
▼
Hallo,
inzwischen habe ich auch etwas mehr Doku gefunden:
http://wiringpi.com/reference/
Aber gerade die Pinnummerndoku ist nicht vollständig: Ich habe den 
Raspberry Pi B+ und die Doku behandelt nur die Steckerpins 1-26, aber 
nicht die Pins 27-40. Das sind andere Pins als auf P5 vom Raspberry Pi 
B.

Es sieht aber so aus, daß es Funktionen gibt, die die wiringPi-Nummern 
in die bcm2835-Nummern und zurück ügersetzt. Von den GPIOs werde ich den 
SPI-Bus nutzen, ebenso einen PWM und ein paar einzelne GPIOs. 6 davon, 
um bis zu 64 SPI-Slaves ansprechen zu können, die werden vor dem 
SPI-Zugriff gesetzt und verknüpfen es mit dem CS0 für jeden SPI-Slave, 
z.B. mit zwei 74HC138. Ich habe nämlich weit mehr als nur 2 SPI-Slaves 
(ist ein größeres Projekt)... Dafür werde ich mir sowieso eigene 
Funktionen schreiben, die dann die wiringPi-Funktionen benutzen.

Ein paar Sourcen habe ich im gepackten Download gefunden, ich hoffe, es 
sind alle Sourcen dabei, evtl. wird dann einiges klarer. Evtl. finde ich 
dann auch eine vollständige Übersetzung der Pinnummern.

Schön, daß der Raspberry Pi kein Flash oder sonst einen permanenten 
Speicher hat, so kann ich vor der Installlation von wiringPi ein Image 
von der SD-Karte machen und wieder in den alten Zustand zurückkehren, 
falls das doch nichts werden sollte. Das gilt auch für andere 
Experimente von irgendwelchen Setups oder Installationen, außerdem kann 
man so ein laufendes Raspiprojekt ganz simpel klonen, ohne jedesmal die 
Software neu installieren zu müssen.

Gruß
Andy

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.