mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi Zero -> Raspbian


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Jan H. (janiiix3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nabend,

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

/*
*       GPIO
*/
#include <stdio.h>
#include <wiringPi.h>

int main(void)
{
         if (wiringPiSetup()==-1)
         {
                 return 1;
         }
         else
         {
                printf("\r\nInit_OK");
         }
//       pinMode(0,INPUT);

        while(1)
        {
//              printf("\r\nStart\r\n");
        }

        return 0;
}


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..
gcc -o led led.c -lwiringPi
Dabei entstehen keine Fehler. Beim ausführen jedoch der besagte.

Autor: Rasputin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jan H. (janiiix3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rasputin schrieb:
> 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?

Moin,
also ich nutzen die neuste Version 2.xx.
Ich habe mein Programm so gestartet:
sudo ./led
jedoch mit dem gleichen Problem.

Sollte das Mapping nicht erstmal egal sein?

Autor: Rasputin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gimpel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grumpf

Autor: Jan H. (janiiix3)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harry L. (mysth)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Starte dein Programm doch mal unter strace.
Dann siehst du, was es macht.
strace ./led

Autor: Jan H. (janiiix3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario schrieb:
> Also in Deinem Programm ist kein Fehler.
> Installiere das Paket wiringPi noch mal neu.
> Hast Du GPIO im in config.txt oder setup aktiviert?
> gcc -Wall -o blink blink.c -lwiringPi
> sudo ./blink

Man muss noch was aktivieren?

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Man muss noch was aktivieren?
Nee, doch nicht, war falsch gedacht von mir, sorry.

Autor: Jan H. (janiiix3)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich versuche die "wiringPi" zu installieren bekomme ich folgende 
Fehlermeldungen / Warnungen (siehe Bild).
Wo bekomme ich diese Dateien her?

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jan H. (janiiix3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank M. schrieb:
> Hast Du die Variable auch exportiert? Sonst kommt die niemals in Deinem
> Programm an.

Ich vermute mal das beim Installieren von der wiringPi Bibliothek was 
schief geht..
Beim Installieren zeigt er mir an das irgendwas fehlen soll..

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.