2016-06-07 6 views
0

So habe ich eine BeagleBone Black Board, und ich möchte in der Lage sein, einige GPIO Pin von einem low Wert auf einen high Wert zu setzen.BBB: GPIO Signal wird nicht hoch bleiben

Um dies zu erreichen, verwende ich die BlackLib1 Bibliothek (eine C++ Bibliothek, die allgemeinen Zugang zu allen Beaglebones Pins bietet).

Diese Bibliothek hat eine Klasse namens BlackGPIO, die die Funktionalität bietet, die ich möchte.

BlackLib::BlackGPIO NSLP_pin(BlackLib::GPIO_61, BlackLib::output, BlackLib::SecureMode); 

auto NSLP_pinMode = NSLP_pin.getValue(); 

NSLP_pin.setValue(BlackLib::low); 

I erwarten, dass diese Zeilen Code wird das Signal von einem low Wert auf einen high Eins gesetzt (das Signal ist low Standard).

Das Problem ist, dass das Signal high nur für etwa ~10ms (auf einem Umfang gemessen) geht, und danach geht es wieder low.

Was mache ich falsch?

Wie kann ich die einige GPIO Pin auf einen bestimmten Wert setzen, und so bleiben, bis ich es ändere?

[1] link

Antwort

0

Die link legt die BBB Stifte von der Kommandozeile zu exportieren und es hoch oder niedrig gesetzt. Sie können eine kleine C++ - Funktion entwickeln, um diese Befehle an den Kernel zu senden, um die BBB-Pins zu aktivieren/deaktivieren. Ich verwende die gleiche Methode in meiner C-Anwendung und es funktioniert perfekt.

Beispiel Code-Schnipsel in C zu ermöglichen, den Stift:

FILE *GPIO; 
GPIO = fopen("/sys/class/gpio/gpio65/direction", "w"); 
fseek(GPIO,0,SEEK_SET); 
fprintf(GPIO,"61"); 
fflush(GPIO); 
fclose(GPIO);