Raspberry Pi 2 B: GPIO-Library für die Programmiersprache Icon

  • Hallo zusammen,


    3/4 Forenbeiträge drehen sich momentan darum, dass irgendwelche Programme und Libraries für das neue Raspberry Pi 2 Modell B nicht funktionieren.


    Für diejenigen, die meine Icon-Tutorials durchgearbeitet haben und in der Programmiersprache Icon programmieren (wollen), ist schon vor einigen Wochen der Quellcode der GPIO-Library vorgestellt worden und wie dieser auf die Modelle A+ und B+ angepasst wird.


    Genauso funktioniert das auch für das neue RPi 2 Modell B...


    Wenn mir jemand die Ausgabe von

    Code
    cat /proc/cpuinfo


    schickt, dann kann ich den Quellcode aktualisieren und in diesem Thread posten.


    Beste GRüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Siehe dazu in den Spoiler am Anfang des Beitrags von Raspberry 2 erscheint - Beitrag#15 :fies:




    Und an dieser Stelle sei auch erwähnt das motom001 >> hier << ein vorläufigen Workaround für RPi.GPIO gepostet hat :thumbs1:

  • Hallo Meigrafd,


    :danke_ATDE:


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Jaja, ICON, der Hit unter den Programmiersprachen - wieselflinker Programmablauf (fast wie ASM), schnell verständlich, leicht zu kodieren.


    Spass beiseite, Ernst komm raus:
    Ist das eigentlich die Sprache, die es schon Jahrzehnte gibt und mal aus Algol (und *weißichimmomentnet*) entwickelt wurde? Irgendwann damals, als auch Cobol entstand?


    Das Beste(?) setzt sich halt nicht immer durch, leider. ;)
    Wobei mir C einfach lieber ist. Andere mögen Python. Warum einen Verlierer(?) aufleben lassen und alleine auf weiter Flur stehen? :)


    Nix für ungut,
    Gruß, mmi

  • Hallo MMI,


    zur Geschichte der Programmiersprache Icon:


    http://www.cs.arizona.edu/icon/faq.htm#lineage


    Es war SNOBOL, nicht ALGOL ;) - ist aber auch egal.


    Die letzte Version stammt vom Juni 2013. Die letzte Version für MAC OS vom July 2014.


    Somit handelt es sich sicherlich nicht um einen Verlierer, den ich hier aufleben lasse.


    Alle meine Anwendungen, die in der Industrie eingesetzt werden, basieren auf Icon. Und irgendwie kann ich nicht sagen, dass es schlecht läuft.


    Lazarus / Delphi basieren auf Pascal, das Niklaus Wirth um 1970 herum als OpenSource freigegeben hat. Pascal hat auch schon Jahrzehnte auf dem Buckel und ist trotzdem eine sehr gut auch für Programmieranfänger erlernbare Programmiersprache.


    Das gleiche gilt übrigens auch für Icon.


    Nichts für ungut!


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Ok Andreas, lassen wir es einfach mal so stehen. ;)

  • Hallo zusammen,


    ooops, da war noch was...


    Hier der Quellcode der GPIO-Library für die Programmiersprache Icon.


    Diese GPIO-Library unterstützt die Modelle A und B (jeweils PCB-Revisionen 1 und 2), A+, B+, Compute Module und den neuen RPi 2.



    Diese Library stellt folgende Befehle zur Verfügung:


    Setzen des Status von Pin pin auf Wert wert für die Dauer dauer [ms]. Spezifikationen für dauer sind optional.

    Code
    GPIO(pin, wert, dauer)


    Abfragen des Status von Pin pin

    Code
    wert := GPIO(pin)


    Schreiben eines Zeichens zeichen in die 7Segment-Anzeige für die Dauer dauer [ms]. Spezifikationen für dauer sind optional.

    Code
    SEGMENT7(zeichen, dauer)


    Neu ist die Funktion GPIO_board(). Diese Funktion liefert Informationen über das angetroffene Board, falls jemand Anwendungen entwickeln möchte, die die Board-Revision / Modell bei der Programmausführung berücksichtigen.



    Viel Spaß damit!


    Beste Grüße


    Andreas

    Files

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Hallo zusammen,


    hier gibt's dann auch den Quellcode meiner in Icon geschriebenen GPIO-Library.


    Diese gilt jetzt auch für die Modelle
    - Zero
    - 3B


    Sollte jemand Fehlermeldunbgen erhalten, dass sein Modell nicht erkannt wird, dann benötige ich wie immer die Ausgabe von

    Code
    cat /proc/cpuinfo


    und ratz-fatz funktioniert die Library dann auch auf einem anderen Modell.


    Um aus dem Quellcode:


    zur GPIO-Library zu kommen, genügt ein F9 aus Geany heraus oder ein

    Code
    icont -c GPIO


    aus einem Terminal heraus, um die beiden Dateien GPIO.u1 und GPIO.u2 zu erzeugen, die dann mit

    Code
    link GPIO


    in Eure Programme eingebaut werden kann.


    Viel Spaß damit!


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Hallo zusammen,


    es wurde mal wieder eine neue Version der GPIO-Library fällig.


    An den bisherigen Funktionen habe ich nichts geändert - das war wohl alles bereits 2013 soweit ausgereift.


    Neue Datenstruktur:

    Code
    record gpio_alt(
                       pin,
                       func,
                       alt)


    [font="Courier New"]pin[/font] ist die Angabe eines GPIO-Pin nach GPIO-Notation.
    [font="Courier New"]func[/font] ist die Bezeichnung der Alternativfunktionalität, z.B. TXD
    [font="Courier New"]alt[/font] ist die Bezeichnung der Alternativfunktionalität, z.B. alt0


    Diese Struktur wird als Liste von der neuen Funktion [font="Courier New"]GPIO_find_function(functionality)[/font] zurückgegeben und lässt sich dann recht leicht auswerten (s. Beispielprogramm).



    Neue Funktionen:


    Code
    raspi_gpio(pin, mode, params)


    Ermöglicht einen alternativen Zugriff auf die GPIO-Pins. Unabhängig von den der eigentlichen Funktion [font="Courier New"]GPIO()[/font].
    Wenn kein Pin angegeben wird, dann erhält man bei [font="Courier New"]mode = "get"[/font] bzw.[font="Courier New"] "funcs"[/font] eine Übersicht über alle GPIO-Pins, deren Status (Programmierung als Input, Output und Wert), Alternativ-Funktionalitäten.


    Wenn ein Pin angegeben wird, dann bezieht sich die Rückmeldung nur auf diesen Pin. Irgendwie logisch.


    Interessanter wird's bei [font="Courier New"]mode = "set"[/font].


    Hier hat der Programmierer einen vollen Zugriff auf die Pins. Hier werden dann die Parameter genutzt. Diese liegen in einer Liste vor, was in Icon durch [] realisiert wird.


    Folgende Parameter werden ausgewertet:
    [font="Courier New"]"input"[/font]: Setzt den angegebenen Pin als Eingang
    [font="Courier New"]"output"[/font]: Setzt den angegebenen Pin als Ausgang
    [font="Courier New"]"alt0" ... "alt5[/font]": Setzt die entsprechende Alternativ-Funktionalität zum angegebenen Pin
    [font="Courier New"]"pullup"[/font]: Setzt den Pull-Up-Widerstand zum angegebenen Pin
    [font="Courier New"]"pulldown"[/font]: Setzt den Pull-Down-Widerstand zum angegebenen Pin
    [font="Courier New"]"nopull"[/font]: Deaktiviert Pull-Up- und Pull-Down-Widerstand
    [font="Courier New"]"HIGH"[/font]: Setzt einen als Ausgang gesetzten Pin auf HIGH, 1, oder 3,3 V
    [font="Courier New"]"LOW"[/font]: Setzt einen als Ausgang gesetzten Pin auf LOW, 0 oder 0 V


    Zu der etwas langatmigen Notation habe ich mich entschlossen, weil die damit entwickelten Programm eine gesteigerte Lesbarkeit erhalten.


    Code
    GPIO_find_function(functionality)


    Diese Funktion macht Vorschläge, unter welchen GPIOs sich eine gesuchte Alternativv-Funktionalität "versteckt". Diese Funktion ist für Fälle gedacht, in denen sich erst während der Laufzeit die genaue Pin-Belegung und -Nutzung herausstellt und man während der Laufzeit eines Programmes live sehen will, wie sich das alles verhält. Z.B. kann diese Liste in einem Listenfeld ausgegeben werden und der Anwender sucht sich z.B. Vorschlag 3 aus, um eine bestimmte Alternativfunktionalität umzusetzen.



    Beispiel-Programm:


    Ausgabe:


    Der Anhang enthält den Quellcode des Test-Programms sowie die GPIO-Library in compillierter Form. Nach dem Entpacken ist das Ergebnis in das Icon-Arbeitsverzeichnis [font="Courier New"]/home/pi/icon9_51/bin/[/font] zu kopieren.



    Viel Spaß damit und beste Grüße


    Andreas

    Files

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Hallo zusammen,


    durch Hinzufügen weniger Zeilen und Verwendung entsprechender GPIO-Bezeichnungen läuft die GPIO-Library auch auf einem NVIDIA Jetson Nano.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.