Raspberry Pi Zero -> Raspbian

OP #5964210
Lesenswert?
• ▲
▼
Nabend,

ich komme nicht weiter :(
Versuche gerade mit dem PI und wiringPi ein paar GPIO´s zum leben zu 
bekommen.

1
/*
2
*       GPIO
3
*/
4
#include <stdio.h>
5
#include <wiringPi.h>
6

7
int main(void)
8
{
9
         if (wiringPiSetup()==-1)
10
         {
11
                 return 1;
12
         }
13
         else
14
         {
15
                printf("\r\nInit_OK");
16
         }
17
//       pinMode(0,INPUT);
18

19
        while(1)
20
        {
21
//              printf("\r\nStart\r\n");
22
        }
23

24
        return 0;
25
}

Sobald ich die Funktion "pinMode(..)" wieder mit einbinde und das 
Programm kompiliere und ausführen will, kommt ein "Segmentation fault" 
zurück.

Ich weiß ehrlich gesagt nicht mehr weiter..

Das ganze wird mit "gcc" wie folgt aufgerufen..
1
gcc -o led led.c -lwiringPi
Dabei entstehen keine Fehler. Beim ausführen jedoch der besagte.
Gast #5964236
Lesenswert?
• ▲
▼
Vielleicht helfen ja die Infos von folgender Seite:

http://wiringpi.com/reference/setup/

......
One of the setup functions must be called at the start of your program 
or your program will fail to work correctly. You may experience symptoms 
from it simply not working to segfaults and timing issues.

Note: wiringPi version 1 returned an error code if these functions 
failed for whatever reason. Version 2 returns always returns zero. After 
discussions and inspection of many programs written by users of wiringPi 
and observing that many people don’t bother checking the return code, I 
took the stance that should one of the wiringPi setup functions fail, 
then it would be considered a fatal program fault and the program 
execution will be terminated at that point with an error message printed 
on the terminal.

        If you want to restore the v1 behaviour, then you need to set 
the environment variable: WIRINGPI_CODES (to any value, it just needs to 
exist)
.......
.......
    wiringPiSetup (void) ;

This initialises wiringPi and assumes that the calling program is going 
to be using the wiringPi pin numbering scheme. This is a simplified 
numbering scheme which provides a mapping from virtual pin numbers 0 
through 16 to the real underlying Broadcom GPIO pin numbers. See the 
pins page for a table which maps the wiringPi pin number to the Broadcom 
GPIO pin number to the physical location on the edge connector.

This function needs to be called with root privileges.
............

Welche Version benutzt du? Vermutlich v2 die immer 0 zurückgibt.
Hast du dein Programm als Root gestartet?
Stimmt das Pin Mapping für den Pi Zero?
Gast #5964324
Lesenswert?
• ▲
▼
Jan H. schrieb:

> also ich nutzen die neuste Version 2.xx.
Dann wird die Abfrage "if (wiringPiSetup()==-1)" nie wahr werden, wenn 
du nicht die Environment Variable "WIRINGPI_CODES" definierst und ihr 
irgendeinen Wert gibst. Das ist für dein aktuelles Problem aber 
vermutlich egal.

Du solltest aber die Environment Variable "WIRINGPI_DEBUG" definieren 
und ihr irgendeinen Wert zuweisen, dann sollte WiringPi diverse Debug 
Infos ausgeben die dir vielleicht einen Hinweis auf die Problemursache 
geben.
OP #5967489
Lesenswert?
• ▲
▼
Rasputin schrieb:
> Jan H. schrieb:
>
>> also ich nutzen die neuste Version 2.xx.
> Dann wird die Abfrage "if (wiringPiSetup()==-1)" nie wahr werden, wenn
> du nicht die Environment Variable "WIRINGPI_CODES" definierst und ihr
> irgendeinen Wert gibst. Das ist für dein aktuelles Problem aber
> vermutlich egal.
>
> Du solltest aber die Environment Variable "WIRINGPI_DEBUG" definieren
> und ihr irgendeinen Wert zuweisen, dann sollte WiringPi diverse Debug
> Infos ausgeben die dir vielleicht einen Hinweis auf die Problemursache
> geben.

Habe ich gemacht. Kommen jedoch keinerlei Meldungen.
Gast #5967973
Lesenswert?
• ▲
▼
Also in Deinem Programm ist kein Fehler.
Installiere das Paket wiringPi noch mal neu.
Hast Du GPIO im in config.txt oder setup aktiviert?

Hier das Blinkbeispiel von http://wiringpi.com/examples/blink:

#include <wiringPi.h>
int main (void)
{
  wiringPiSetup () ;
  pinMode (0, OUTPUT) ;
  for (;;)
  {
    digitalWrite (0, HIGH) ; delay (500) ;
    digitalWrite (0,  LOW) ; delay (500) ;
  }
  return 0 ;
}

 then to compile and run, you would enter:

gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
Moderator Persönliche Seite #5970038
Lesenswert?
• ▲
▼
Jan H. schrieb:
> Rasputin schrieb:
> Jan H. schrieb:
>
> also ich nutzen die neuste Version 2.xx.
>
> Dann wird die Abfrage "if (wiringPiSetup()==-1)" nie wahr werden, wenn
> du nicht die Environment Variable "WIRINGPI_CODES" definierst und ihr
> irgendeinen Wert gibst. Das ist für dein aktuelles Problem aber
> vermutlich egal.
> Du solltest aber die Environment Variable "WIRINGPI_DEBUG" definieren
> und ihr irgendeinen Wert zuweisen, dann sollte WiringPi diverse Debug
> Infos ausgeben die dir vielleicht einen Hinweis auf die Problemursache
> geben.
>
> Habe ich gemacht. Kommen jedoch keinerlei Meldungen.

Hast Du die Variable auch exportiert? Sonst kommt die niemals in Deinem 
Programm an.

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.