Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi wiringPi oder bcm2835, Timerinterrupt


von Andreas W. (andy_w)


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

von Timmo H. (masterfx)


Lesenswert?

Wiring Pi ist schon Dokumentiert, auch die Pin-Zuordnung: 
https://projects.drogon.net/raspberry-pi/wiringpi/pins/

Wenns um Geschwindigkeit geht ist nativ am besten.

Bzgl. Interrupts gibt es auch was in WiringPi: 
https://projects.drogon.net/raspberry-pi/wiringpi/functions/

von Andreas W. (andy_w)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.