Homepage Wiki Forum Buy

GNUBLIN embedded GNU/Linux

Open source learning and training plattorm for embedded GNU / Linux
A projects from Hochschule Augsburg and embedded projects GmbH

Project homepage: http://www.gnublin.org
Wiki: http://wiki.gnublin.org
Aktuelle Zeit: Sa 18. Nov 2017, 00:54

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: GPIO in C
BeitragVerfasst: Mi 6. Feb 2013, 17:13 
Offline

Registriert: Do 31. Jan 2013, 17:58
Beiträge: 5
Hallo zusammen,
habe viel mit dem Beispielprogramm für die LED rumgespielt.
Was ich aber einfach nicht zum laufen bekomme, ist die lesende Richtung in C.
Wie kann ich den Status eines Pins in C abfragen?

Zum schreiben nutze ich

#define FBLO_GPIO 0x1C0
#define MODE1_SET 0x24
#define GPIO11 (1 << 5)

*(unsigned int *) (mymem + FBLO_GPIO + MODE1_SET) = GPIO11;

Danke für die Hilfe :)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: Mi 6. Feb 2013, 20:40 
Offline

Registriert: Do 8. Nov 2012, 09:47
Beiträge: 93
Wohnort: Aachen
So geht es:
Code:
u_short value = *(u_int *)(mymem + FBLO_GPIO + PINS) & GPIO11;  // result is 0 or (1 << 5)

oder
Code:
bool value = (*(u_int *)(mymem + FBLO_GPIO + PINS) & GPIO11) ? true : false;

Soll heißen auf der Adresse BITS stehen alle IO Pads nebeneinander. Du musst selbst maskieren oder schieben.

Allerdings gibt es noch ein sonderbares Verhalten beim Mix der Richtungen. Nach einer zufälligen Anzahl Zugriffen kippen die Ausgänge auf 0, wenn man in einer Schleife andere gemappte Ports liest.

Ich bin übrigens gerade dabei für GPIO eine Bibliothek zu schreiben. Wenn Interesse besteht, stell ich die hier zur Verfügung.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: Do 7. Feb 2013, 07:56 
Offline
Administrator

Registriert: Sa 7. Apr 2012, 09:18
Beiträge: 251
ja klar interessierte das.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: Do 7. Feb 2013, 10:49 
Offline

Registriert: Do 8. Nov 2012, 09:47
Beiträge: 93
Wohnort: Aachen
Gebt mir noch einen Abend Zeit.

Wegen der beschriebenen "Effekte" habe ich die Funktionen so verändert, dass man sich für eine Vorzugsrichtung entscheiden kann. Die andere Richtung (oder beide) wird dann per sysfs abgewickelt. Doch dieser Umbau ist noch nicht ganz fertig.

Siehe auch viewtopic.php?f=10&p=1500#p1500


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: Do 7. Feb 2013, 15:29 
Offline

Registriert: Do 31. Jan 2013, 17:58
Beiträge: 5
Wunderbar... funzt..
vielen Dank


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: Do 7. Feb 2013, 19:54 
Offline

Registriert: Do 8. Nov 2012, 09:47
Beiträge: 93
Wohnort: Aachen
Hallo Tippex,

könntest Du mal testen, ob Deine Ausgänge auch kippen, wenn Du in einer Schleife abwechselnd Ein- und Ausgaben machst?
Meine Schleife sieht etwa so aus:

while (! gpio_read(BUTTON)) {
gpio_setHigh(LED);
// sleep(1); // beseitigt den Fehler nicht!
}

Nach einiger Zeit geht die LED immer wieder kurz aus. Ersatzweise geht auch beim Elektor-Gnublin das Relais, dann ist es gut zu hören.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: Fr 8. Feb 2013, 23:55 
Offline

Registriert: Do 31. Jan 2013, 17:58
Beiträge: 5
Hallo Schwabix,
ja da ist was krumm...

// GPIO3 kippt bei mir zufällig
while (getPort(mymem, GPIO11)) {
setPortHigh(mymem, GPIO3);
}
// GPIO3 bleibt nahezu stabil... aber nur wenn das printf drin ist
while (value) {
setPortHigh(mymem, GPIO3);
value = getPort(mymem, GPIO11);
printf("pin:%i\n",value);
}

Nachtrag:
Statt dem printf geht auch ein usleep(1);


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: So 10. Feb 2013, 02:23 
Offline

Registriert: Do 8. Nov 2012, 09:47
Beiträge: 93
Wohnort: Aachen
Sodele, jetzt haben meine gpio Funktionen einen sinnvollen Stand erreicht.

Wo kann ich denn mal Header und C Source abwerfen? Als Anhang ist das ja hier nicht erlaubt.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: Mo 11. Feb 2013, 16:13 
Offline

Registriert: Do 8. Nov 2012, 09:47
Beiträge: 93
Wohnort: Aachen
Prima, JPG ist das einizge, das ich als erlaubten Anhang gefunden habe ;-)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: GPIO in C
BeitragVerfasst: Di 12. Feb 2013, 04:47 
Offline
Administrator

Registriert: Sa 7. Apr 2012, 09:18
Beiträge: 251
Geht jetzt mehr?


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 25 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de