Forum: Mikrocontroller und Digitale Elektronik Digitalpins I/O


von Ingo S. (Firma: privat) (nisus)


Lesenswert?

Hallo :)

Es ist das erste Mal, daß ich mit Mikrocontrollern
und Programmierung zu tun habe. Bitte habt
Nachsicht, weil ich absolut niedrigsten Kenntnisstand
auf diesem Gebiet habe...im Prinzip kenne ich Chips
nur als "Plastekäfer"
Was die ganzen Abkürzungen bedeuten weiß ich nicht
und Programmiersprachen kenne ich auch nicht.

Nun stehe ich vor einem Problem.
Ich möchte parallel aus einer Reihe von 16 LED (oder mehr)
gleichzeitig verschiedene LED leuchten haben.

Als erste Frage habe ich, wie das mit den digitalen I/O Pins
ist. Wenn beispielsweise ein "Teensy 2.0" angegeben ist
mit  "digitale I/O : 25" , bedeutet das, ich könnte damit ein
paralleles Signal erzeugen, womit aus einer Reihe von 25 LED
wahlweise verschiedene LED gleichzeitig leuchten?

von Gnorm (Gast)


Lesenswert?

Ja.
Hier mal was fuer den Anfang. Auch wenn es AVR ist. Aber wenn du bei 
Null anfaengst. https://www.mikrocontroller.net/articles/AVR-Tutorial

von Stromverdichter (Gast)


Lesenswert?

Du willst also mal sehen, was man mit den schwarzen Käfern so alles mit 
machen kann. Da empfehle ich dir einen Arduino Nano.
Da kannst du mit einem Klick viele Programmbeispiele einfach mit der 
Arduino-IDE raufladen.
Die Nanos gibt es als Nachbau sehr günstig, falls der Preis ein 
Kriterium ist.

Die Arduino Umgebung vereinfacht für den Anfänger die Syntax beim 
Programmieren. Trotzdem kannst du fließend eigen C oder C++ Code mit 
einbinden.

Mit der Arduino-IDE könntest du einfach per digitalWrite deine Pins 
einstellen.
https://www.arduino.cc/reference/en/language/functions/digital-io/digitalwrite/

Die ganze Initialisierung übernimmt die IDE für dich.

von MaWin (Gast)


Lesenswert?

Ingo S. schrieb:
> bedeutet das, ich könnte damit ein
> paralleles Signal erzeugen, womit aus einer Reihe von 25 LED
> wahlweise verschiedene LED gleichzeitig leuchten

Ja, dann sind aber keine mehr übrig um z.B. mit einem Taster sagen zu 
können wie sie nun blinken.

Grosse Anzahl von LEDs verwendet man im Multiplex, Stichwort MAX7219, 
oder an Schieberegistern mit Stromsenken, Stichwort CAT4016 oder 
TLC5916.

von Wolfgang (Gast)


Lesenswert?

Ingo S. schrieb:
> Ich möchte parallel aus einer Reihe von 16 LED (oder mehr)
> gleichzeitig verschiedene LED leuchten haben.

Als erste Übung ist der direkte Anschluss der einzelnen LEDs sicher eine 
gute Übung. Wenn es mehr als 16 werden sollen, werden die IO-Pins eines 
µCs allmählich knapp, insbesondere wenn man wegen ein paar LEDs nicht 
einen "Monster"-µC einsetzen möchte.

Eine Möglichkeit ist dann, die Zahl der verfügbaren Pins zu vergrößern, 
indem man die LEDs über Schieberegister mit serieller Eingabe und 
paralleler Ausgabe ansteuert, z.B. über 74HC595 oder tpic6b595

Wenn es nur darum geht, bei einer Reihe von vielen LEDs jede einzeln 
anzusteuern, kannst du auch LEDs mit integriertem Controller verwenden, 
z.B. die WS2812B. Dann brauchst du nur einen einzigen Pin vom µC für die 
Ansteuerung deiner ganzen Kette und kannst über den seriellen Datenstrom 
für jede LED Farbe und Helligkeit vorgeben.
Die LEDs gibt es als fertige Streifen, z.B.
https://www.ebay.com/itm/392384773161

von Wolfgang (Gast)


Lesenswert?

Stromverdichter schrieb:
> Die Arduino Umgebung vereinfacht für den Anfänger die Syntax beim
> Programmieren.

Die Syntax ist ganz normales C++.

Die Vereinfachung kommt, wie in (fast?) jeder Programmiersprache, durch 
die Verwendung von mitgelieferten Bibliotheken und ein standardmäßig auf 
dem µC laufendes Rahmenprogramm ("Betriebssystem"), in das man mit den 
eigenen Routinen normalerweise nur eingeklinkt ist. Um den Aufruf der 
eigenen Routinen kümmert sich die Ablaufsteuerung.

von Stromverdichter (Gast)


Lesenswert?

Wolfgang schrieb:
> Die Syntax ist ganz normales C++.

Och, jetzt machst du es aber kompliziert;-)
Ingo will ein paar LEDs blinken lassen.
Schieberegister und Sprachfeinheiten kommen da erst später.

@ingo
fang mal mit der einfachsten verbreiteten IDE(Arduino IDE) an. Schön an 
der Arduino-IDE ist, dass du später auch selbst ohne das 
Arduino-Framework in C oder C++ weiter-programmieren kannst.
Die IDE verbirgt das komplexe C++ zunächst vor dir. Du kannst dich also 
erst mal auf die vereinfachten Arduino-Befehle verlassen. Später kannst 
du dann eigenen Code in C oder C++ dazupfriemeln.

Wenn dir die Pins ausgehen, gibt es einige Möglichkeiten mehr LEDs 
anzusteuern, sei es per Schieberegister-Baustein, oder 
Multiplexer-Baustein oder per Multiplexing in Software.

16 LEDs kannst du noch gut direkt mit einem Arduino-Nano ansteuern.

von Stefan F. (Gast)


Lesenswert?

Stromverdichter schrieb:
> 16 LEDs kannst du noch gut direkt mit einem Arduino-Nano ansteuern.

Sehe ich auch so.

Bevor man da ein Fass aufmacht, dass man noch nicht beherrscht, ist es 
sicher anfangs erquickender, notfalls einfach den nächst größeren 
Mikrocontroller zu benutzen.

Zum Beispiel den "Arduino Mega 2560" mit rund 50 I/O Pins oder das 
billige "STM32F103VET6 Minimum System Development Board" mit mehr als 70 
I/O Pins.

Für fortgeschrittene Anwender möchte ich mich den Vorschlägen von MaWin 
anschließen.

von Wolfgang (Gast)


Lesenswert?

Stromverdichter schrieb:
> Du kannst dich also erst mal auf die vereinfachten Arduino-Befehle
> verlassen. Später kannst du dann eigenen Code in C oder C++ dazupfriemeln.

Und was meinst du, welcher Sprachsyntax man sich beim Aufruf und 
Verknüpfung der Arduino Library Routinen bedient/bedienen muss?

Meinst du, Arduino hätte einen eigenen Compiler?
Nein, das ist der GCC.

> 16 LEDs kannst du noch gut direkt mit einem Arduino-Nano ansteuern.

Bei "(oder mehr)" läuft das Konzept schnell in eine Sackgasse und man 
würde es im Nachhinein bereuen, das Projekt nicht gleich etwas 
weitsichtiger angesetzt zu haben.

von Stefan F. (Gast)


Lesenswert?

Wolfgang schrieb:
> Bei "(oder mehr)" läuft das Konzept schnell in eine Sackgasse und man
> würde es im Nachhinein bereuen, das Projekt nicht gleich etwas
> weitsichtiger angesetzt zu haben.

Ich würde es mehr bereuen, mich ein komplexes Gebilde zu stürzen dass 
ich selbst nicht mehr verstehe, bloß weil ich für alle Eventualitäten 
offen bleiben wollte.

Weniger ist oft mehr - für diese erfolgreich gelebte Philosophie wurde 
ich mit 1000€ mehr Gehalt pro Monat von meinem aktuellen Arbeitgeber 
aufgenommen, um diese auch in seiner Firma zu verbreiten. Und: läuft.

von Karl B. (gustav)


Angehängte Dateien:

Lesenswert?

MaWin schrieb:
> Grosse Anzahl von LEDs verwendet man im Multiplex, Stichwort MAX7219,
> oder an Schieberegistern mit Stromsenken,

Hi,
oder Kombination von kleinen µPs mit der legendären CMOS 4000 Serie.

ciao
gustav

von Wolfgang (Gast)


Lesenswert?

Stefanus F. schrieb:
> Ich würde es mehr bereuen, mich ein komplexes Gebilde zu stürzen dass
> ich selbst nicht mehr verstehe, ...

Wenn dein Arbeitgeber auf Kostenoptimierung in Serienprodukten Wert legt 
und es nicht um Entwicklung ausbaufähiger Konzepte geht, ist das sicher 
gerechtfertigt. Beim TO geht es IMHO aber wohl um Einzelstück, Hobby und 
Weiterbildung.

von Einer K. (Gast)


Lesenswert?

Ich bin dagegen.

von Joachim B. (jar)


Lesenswert?

MaWin schrieb:
> Ingo S. schrieb:
>> bedeutet das, ich könnte damit ein
>> paralleles Signal erzeugen, womit aus einer Reihe von 25 LED
>> wahlweise verschiedene LED gleichzeitig leuchten
>
> Ja, dann sind aber keine mehr übrig um z.B. mit einem Taster sagen zu
> können wie sie nun blinken.

bei nur 25 LEDs sind doch genug Ports übrig wenn er ws2812b verwendet, 
die 25 LEDs brauchen nur einen Port.
Ein Nano reicht auch um ein Array aus 75 Byte für die RGB Daten zu 
buffern.

Das ist schnell zusammengesteckt auf einem Steckbrett.

Stripes aus ws2812b gibt es in 144/m 72/m 60/m 30/m

so nun noch 3-Satz und die Länge kann man bei 25 LEDs ausrechnen.
Der maximale Strombedarf für 25 LEDs ist noch überschaubar -> maximal 
1,5A, aus dem USB Port geht das zwar nicht sicher bei Spitzenweiss, aber 
gedimmtauf 1/4 Helligkeit in den PWM Werten kann das klappen, sonst 
externe 5V Versorgung vorsehen und mit einer Diode gegen 5V aus den USB 
verriegeln.

https://www.google.com/search?q=arduino+nano+ws2812b

da ist bestimmt was für den TO dabei

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ingo S. schrieb:
> Wenn beispielsweise ein "Teensy 2.0" angegeben ist
> mit  "digitale I/O : 25" , bedeutet das, ich könnte damit ein
> paralleles Signal erzeugen, womit aus einer Reihe von 25 LED
> wahlweise verschiedene LED gleichzeitig leuchten?


Im Prinzip lautet die Antwort: ja.

Beachte allerdings, dass die Anzahl der I/O Pins teilweise recht 
optimistisch gezählt werden. Teilweise musst du auf USB oder andere 
Schnittstellen verzichten, um die maximale Anzahl von I/O Pins nutzen zu 
können.

von zitter_ned_aso (Gast)


Lesenswert?

Es kommt auch auf die LED's an (Stromverbrauch).

von Wolfgang (Gast)


Lesenswert?

zitter_ned_aso schrieb:
> Es kommt auch auf die LED's an (Stromverbrauch).

... und auf den µC (maximal zulässiger Ausgangsstrom).
Dabei ist sowohl der Grenzwert für den einzelnen DIO-Pin, als auch der 
für den Gesamtstrom zu berücksichtigen.

Beim ATmega32U4 sind das 40mA für DIO und 200mA für VCC/Gnd Pins.

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

na toll ...
ich habe mir nen "Banana pi M2+" gekauft...
nu bekomme ich den nicht gebootet ?

hab verschiedene iso.Datein als image versucht,
über sd-card einzufüttern ... nix geht.
Alles so wie in den Anleitungen beschrieben, aber
es funktioniert nicht.

Als nächstes würde ich für sd-slot einen Adapter
löten, damit ich vom port am Laptop direkt in den
port vom Bpi rein kann.

Aber vorher schreibe ich lieber hier kurz mein Problem,
bevor ich den Hammer nehme :)

von Wolfgang (Gast)


Lesenswert?

Ingo S. schrieb:
> Aber vorher schreibe ich lieber hier kurz mein Problem,

Die DIO-Pins sind eher nicht dein zentrales Problem. Da stimmt bei dir 
irgendetwas anderes nicht.

von Mario M. (thelonging)


Lesenswert?

Ingo S. schrieb:
> hab verschiedene iso.Datein als image versucht,
> über sd-card einzufüttern ... nix geht.

Wieso als .iso? Die Systeme kommen alle als .tgz-Dateien und müssen erst 
zu .tar und dann zu .img entpackt werden (z.B. mit 7-zip). Danach nicht 
einfach auf die SD-Karte kopieren, sondern mit einem Imaging-Tool (z.B. 
Win32 Disk Imager) direkt in die Sektoren der SD-Karte schreiben.

von Stefan F. (Gast)


Lesenswert?

Mario M. schrieb:
> mit einem Imaging-Tool (z.B.
> Win32 Disk Imager) direkt in die Sektoren der SD-Karte schreiben.

Ich finde immer erstaunlich, dass man unter Windows für jeden kleinen 
Furz ein Extraprogramm braucht. Unter Linux genügt ein simpler copy 
Befehl, der gleiche, mit dem ich auch Dateien kopieren würde:

> cp meinimage.iso /dev/sdc

Für Entwickler ist Linux in vielerlei Hinsicht angenehmer, als Windows.

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

Wolfgang schrieb:
> bei dir irgendetwas anderes nicht

das denke ich auch ...

Mario M. schrieb:
> erst zu .tar und dann zu .img entpackt werden
...
> Imaging-Tool (z.B. Win32 Disk Imager)

den habe ich verwendet.
unbootin habe ich auch verwendet.
mal mit den iso.Datein ... mal entpackt...
es gibt kein Bild auf dem Monitor.
Hab versucht mit verschiedenen Reihenfolgen den
boot zu initialisieren...erst sd rein - dann Strom
und andersherum...
An dem Bpi ist auch nen bootbutton ... den hab ich
auch gedrückt.
Auch vorher reset gedrückt...mal mit sd drin...mal ohne.
Debian 10.1 habe ich als OS versucht...
ubuntu-mate habe ich versucht.
sämtliche Anschlüsse ( usb-otg, Netzwerkkabel, hdmi )
mit entsprechenden Verbindungen an den laptop und
Monitor gelegt...das ding macht nix ?

Jetzt fällt mir eben nur noch die Variante ein, da direkt
über den sd-slot rein zu gehen.
Der laptop erkennt nichteinmal, daß da nen anderer
Rechner ist, wenn ich über usb rein will...oder Netzwerk.

deswegen.

von Jens M. (schuchkleisser)


Lesenswert?

Stefanus F. schrieb:
> Ich finde immer erstaunlich, dass man unter Windows für jeden kleinen
> Furz ein Extraprogramm braucht. Unter Linux genügt ein simpler copy
> Befehl, der gleiche, mit dem ich auch Dateien kopieren würde:

Ich find immer wieder erstaunlich, das man unter Linux für jeden kleinen 
Furz die Konsole benutzen muss. Unter Windows genügen ein paar Klicks, 
mit denen man schnell ein kostenloses Programm installieren kann und 
dann kann man ganz einfach und übersichtlich Datenträgerimages erstellen 
und auf Karten schreiben.
Von der Komplexität, welcher der zahllosen GUI-Manager denn jetzt der 
richtige ist mal ganz ab. Windows funktioniert einfach!

;) ;) ;)
Merkste, oder?

Ingo S. schrieb:
> Jetzt fällt mir eben nur noch die Variante ein, da direkt
> über den sd-slot rein zu gehen.

Das kannst du völlig vergessen.
Kann dein Laptop eine Karte simulieren? Nein.

Ingo S. schrieb:
> Der laptop erkennt nichteinmal, daß da nen anderer
> Rechner ist, wenn ich über usb rein will...oder Netzwerk.

Das geht erst, wenn der SBC gebootet hat. Vorher ist die Schnittstelle 
doof.

Ich nutz dazu Etcher (https://www.balena.io/etcher/), oder 
Win32Diskimager.
Bei beiden wird eine "img"-Datei geöffnet.
Wenn was auch immer du runztergeladen hast keine img ist, musst du es 
erst entpacken, z.B. mit 7zip, WinRAR o.ä.
Dieses hier 
https://drive.google.com/file/d/1dgrtVqbR4I6xYlSfWBJeGwh8xI79L1PD/view 
z.B. sollte einfach entpackt werden und da wäre die img-Datei.

Kann natürlich sein, das deine Karte, das Netzteil oder dein Rechner 
defekt sind.
Evtl. hast du einen USB-RS232-TTL-Adapter, den könntest du an die UART0 
hängen und sehen ob das Ding Bootloadermeldungen absetzt.
Ich weiß nicht ob der Bpi das macht, aber versuchen würde ichs.

von MaWin (Gast)


Lesenswert?

Stefanus F. schrieb:
> Unter Linux genügt ein simpler copy Befehl, der gleiche, mit dem ich
> auch Dateien kopieren würde:
>
>> cp meinimage.iso /dev/sdc

Und schon hast du ein genau so wenig funktionierendes System wie Ingo.

Merke: auch Linux kann fehlendes Hirn nicht ersetzen.

von M. K. (sylaina)


Lesenswert?

Stefanus F. schrieb:
> Unter Linux genügt ein simpler copy
> Befehl, der gleiche, mit dem ich auch Dateien kopieren würde:
>
>> cp meinimage.iso /dev/sdc
>
> Für Entwickler ist Linux in vielerlei Hinsicht angenehmer, als Windows.

Öhm...nein, das genügt bei weitem nicht. Versuchs mal mit dd ;)

von c-hater (Gast)


Lesenswert?

Ingo S. schrieb:

> Was die ganzen Abkürzungen bedeuten weiß ich nicht
> und Programmiersprachen kenne ich auch nicht.

Dann lerne den Kram. Jeder Normalbegabte wäre von ganz alleine auf diese 
alleinig zielführende Lösung gekommen...

von Stefan F. (Gast)


Lesenswert?

>> cp meinimage.iso /dev/sdc

MaWin schrieb:
> Und schon hast du ein genau so wenig funktionierendes System wie Ingo.
> Merke: auch Linux kann fehlendes Hirn nicht ersetzen.

M. K. schrieb:
> Öhm...nein, das genügt bei weitem nicht. Versuchs mal mit dd ;)

Ich habe das vorgestern erst so gemacht, mit einem Debian Live Image.

Hier ist die Anleitung, Kapitel 4.3.1: 
https://www.debian.org/releases/jessie/i386/ch04s03.html.de

Mawin, merke: Nicht andere Leute voreilig als behindert beleidigen, vor 
allem nicht, wenn man selbst keine Ahnung hat.

von Roland F. (rhf)


Lesenswert?

Stefanus F. schrieb:
> Hier ist die Anleitung, Kapitel 4.3.1:
> https://www.debian.org/releases/jessie/i386/ch04s03.html.de

Das beschreibt aber nicht die Installation eines Linux auf einem 
Banana-Pi M2+...

rhf

von Stefan F. (Gast)


Lesenswert?

Roland F. schrieb:
> Das beschreibt aber nicht die Installation eines Linux auf einem
> Banana-Pi M2+...

Doch tut es.

Beim Banana pi wird der dd Befehl empfohlen, der letztendlich das 
gleiche macht, wie cp.

http://wiki.banana-pi.org/Quick_Start_Banana_pi_SBC
https://askubuntu.com/questions/751193/what-is-the-difference-in-using-cp-and-dd-when-cloning-usb-sticks

Ihr seid ja alle so schlau! Wer keine Ahnung hat, möge sich bitte 
zurückhalten.

von Roland F. (rhf)


Lesenswert?

Stefanus F. schrieb:
> Ihr seid ja alle so schlau! Wer keine Ahnung hat, möge sich bitte
> zurückhalten.

Aber sonst geht es dir noch gut?

rhf

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

ok.
jetzt funktioniert mein Banana pi M2+
das Betriebssystem ist ein Armbian ( 5.91 )

cool.

jetzt kann ich weiter machen - oder könnte ?

wie gesagt möchte ich die Pins ansteuern.
in einem Beispiel habe ich einen code gesehen,
der das Schalten wohl ermöglichen soll.
Geht aber nicht bei mir..."Erlaubnis verweigert"
und irgend was fehlt "directory"

Mir ist klar, daß ic nicht einfach einen Text schreiben
kann, der die notwendigen Befehle enthält und Enter
drücke und meine LED anfangen zu blinken.
Es muß eine entsprechende Programmierumgebung
da sein.
Wie nennt man sowas?

von Mario M. (thelonging)


Lesenswert?

Ingo S. schrieb:
> einem Beispiel habe ich einen code gesehen

Welchen Code?

Ingo S. schrieb:
> Geht aber nicht bei mir..."Erlaubnis verweigert"

Das ist eine Frage der Berechtigungen.
http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_GPIO_C.html

Ingo S. schrieb:
> Mir ist klar, daß ic nicht einfach einen Text schreiben
> kann, der die notwendigen Befehle enthält und Enter
> drücke und meine LED anfangen zu blinken.

Doch. Im einfachsten Fall schreibt man das Programm mit einem Texteditor 
und kann es sofort starten.

von SZK500-Besitzer (Gast)


Lesenswert?

Ingo S. schrieb:
> Geht aber nicht bei mir..."Erlaubnis verweigert"
> und irgend was fehlt "directory"

Schöne Fehlermeldung(-Übersetzung).
Wie wäre es mit dem Original?

meistens hilft "sudo".

Und ein Linux-System zum Ansteuern von GPIOs ist nicht ergade ohne.
Es gab mal die wiringPi-Library (wird nicht mehr gewartet), damit geht 
es recht gut. Allerdings war sie ausschließlich fürs Raspberry Pi 
vorgesehen - irgendwelche Support-Anfragen für Portierungen auf andere 
Controller beim Lib-Ersteller führten dazu, dass er keinen Bock mehr 
hatte.

von my2ct (Gast)


Lesenswert?

Ingo S. schrieb:
> ok.
> jetzt funktioniert mein Banana pi M2+
> das Betriebssystem ist ein Armbian ( 5.91 )

Das interessiert hier eigentlich niemand ;-)

Falls jemand später mal auf diesen Thread stößt, weil er ähnlich 
Startprobleme wie du hast, würde ihn interessieren WIE du es jetzt zum 
Laufen gebracht hast.

von Jack V. (jackv)


Lesenswert?

SZK500-Besitzer schrieb:
> meistens hilft "sudo".

s/hilft/ist ’ne nutzbare Krücke:/

Richtig wär’s, die Rechte gemäß den Anforderungen zu vergeben.

von Stefan F. (Gast)


Lesenswert?

Ingo S. schrieb:
> Wie nennt man sowas?

Programmiersprache.

Zum Beispiel: Shell Scripte (bash), Python, Perl, Java, C

Wobei nach meinem Kenntnisstand nur C direkte Hardware-Zugriffe erlaubt. 
Für die anderen Programmiersprachen brauchst du zur Hardware passende 
Erweiterungen. Da es die für den Raspberry Pi gibt, schätze ich, dass es 
sie auch für den Banana Pi gibt. Checke das vorher, bevor du die falsche 
Programmiersprache lernst.

von Stefan F. (Gast)


Lesenswert?

Ingo S. schrieb:
> in einem Beispiel habe ich einen code gesehen,
> der das Schalten wohl ermöglichen soll.
> Geht aber nicht bei mir..."Erlaubnis verweigert"
> und irgend was fehlt "directory"

Du musst schon viel genauer beschreiben, was du gemacht hast, sonst kann 
man mit diesen vagen Infos nichts anfangen.

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

my2ct schrieb:
> Ingo S. schrieb:
>> ok.
>> jetzt funktioniert mein Banana pi M2+
>> das Betriebssystem ist ein Armbian ( 5.91 )
>
> Das interessiert hier eigentlich niemand ;-)
>
> Falls jemand später mal auf diesen Thread stößt, weil er ähnlich
> Startprobleme wie du hast, würde ihn interessieren WIE du es jetzt zum
> Laufen gebracht hast.

Also ... Welches Betriebssystem auf dem Banana Pi rennt,
ist schon wichtig...denn - das Armbian ist direkt von
--> Armbian.org für den Banana Pi M2+ optimiert und für
ARM-Prozessoren ausgelegt.
Images für  .xfce .i386  o.ä. funktionieren halt nicht, weil
der Prozessortyp ein ganz anderer ist.

Ansonsten habe ich mich nach dieser Erkenntnis einfach
an den Anleitungen im Internet orientiert...
•SDcard formatieren
•passendes Image (iso.Datei) auf die SDcard schreiben
 ( ich habe es mit win32 Disk Imager gemacht )
•SDcard in den Slot vom pi schieben
...
bootet

: Bearbeitet durch User
von Ingo S. (Firma: privat) (nisus)


Lesenswert?

Hier in dem Link ist ein Code-Schnipsel.

https://www.hackster.io/news/do-you-want-to-learn-arm-assembly-43213cdf3178

Dabei wird eine "2" in Register r0 geschrieben.
Nach der Kompilierung zu "probe.o" ( in meiner Bezeichnung)
, läßt sich über

./probe ; echo $?

der Fehlercode abfragen und als Ausgabe erhält man "2",
weil die in das Register geschrieben wurde.
Der Codeschnipsel gehört zu einem kompletten
Tutorial zur ARM Assembler-Programmierung ... leider
finde ich das nicht mehr ?

c-hater schrieb:
> Dann lerne den Kram

ja...bin ich dabei.
Dazu habe ich mir auch ein Buch gekauft.
Darin wird aber ASM von Microsoft behandelt und ist
unmittelbar nutzlos für mich, weil Armbian im Banana pi
das nicht frißt.
Kann das evtl. umgeschrieben werden ?
Also, daß ich das über Linux verwenden kann?

von c-hater (Gast)


Lesenswert?

Ingo S. schrieb:

> ja...bin ich dabei.
> Dazu habe ich mir auch ein Buch gekauft.
> Darin wird aber ASM von Microsoft behandelt und ist
> unmittelbar nutzlos für mich, weil Armbian im Banana pi
> das nicht frißt.

Tja, falsches Buch gekauft. Du musst wohl zuvor erstmal so viel lernen, 
dass du in die Lage kommst, das richtige Buch wählen zu können.

> Kann das evtl. umgeschrieben werden ?
> Also, daß ich das über Linux verwenden kann?

Das hat mit Linux oder Windows nix zu tun. Assembler sind für bestimmte 
Controller oder Controllerfamilien und halt nur jeweils dafür geeignet, 
wofür sie geschaffen wurden.

Und: man kann zwar mit Assembler auf die Hardware zugreifen, aber man 
kann das nicht nur mit Assembler tun.

Und: ausgewachsene Betriebssysteme wie Windows oder Linux sind 
eigentlich dafür geschaffen wurden, dass Anwendungen NICHT selber 
direkt auf die Hardware zugreifen. Das ist eigentlich der Job der 
Hardwaretreiber des Betriebssystems. Das direkte IO-Gefrickel unter 
Linux oder Windows ist also eher eine Perversion, die nur dazu dient, 
das Schreiben eines komplexen Treibers zu vermeiden. Und dieser Hack 
gibt auch nicht den vollen Zugriff auf die Hardware, sondern reicht 
wirklich zu kaum mehr als ein wenig Pinwackeln. An wichtige 
Hardwarefeatures wie Interrupts und DMA kommt man auf diese Weise nicht 
heran.

Wenn man in Assembler mit maximalen Freiheiten auf die Hardware 
zugreifen will, dann benutzt man entweder ein RTOS oder gar kein OS.

Aber bis du sowas kannst, werden viele Jahre vergehen. Wenn du überhaupt 
jemals so weit kommst...

Ich würde vorschlagen, du steigst erstmal ein paar Nummern kleiner ein, 
um dir die Grundlagen zu erarbeiten...

von Stefan F. (Gast)


Lesenswert?

Ingo S. schrieb:
> Kann das evtl. umgeschrieben werden ?

Das Buch oder der Assembler-Code? Egal, das ist beides weitgehend 
Unsinnig. Assembler Code ist extrem spezifisch für die Hardware. 
Umschreiben ist aufwändiger und schlechter, als neu schreiben.

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

c-hater schrieb:
> Ich würde vorschlagen, du steigst erstmal ein paar Nummern kleiner ein,
> um dir die Grundlagen zu erarbeiten

wo ist das ?

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

Bekomme ich bitte einen Link oder irgendetwas, wo
ich weiter komme bzw. anfangen kann ?
Von mir aus auch zu PIC-Programmierung.
Ein fertiger Rechner mit ansteuerbaren Pins ist von der
Überlegung her das Erste, was mir einfällt, um programmieren
zu lernen...gut - dann ist es eben nicht so. Nur wo fange ich
dann an, mein Problem zu lösen ?

von Stefan F. (Gast)


Lesenswert?

Ingo S. schrieb:
> Ein fertiger Rechner mit ansteuerbaren Pins ist von der
> Überlegung her das Erste, was mir einfällt, um programmieren
> zu lernen

http://www.arduino.cc

Wenn Dir Arduino zu primitiv ist: 
http://stefanfrings.de/stm32/index.html

Oder vielleicht gefällt Dir der Ansatz, einen X-Beliebigen PC mit einem 
programmierbaren Interface auszustatten:
http://stefanfrings.de/serial_io/index.html
http://stefanfrings.de/net_io/index.html
http://stefanfrings.de/wlan_io/index.html

Da kannst du auf fix und fertige Firmware und Treiber zurück greifen und 
kannst dich voll und ganz auf dein PC Programm konzentrieren.

Ähnliche Teile gibt es auch dort:
https://www.codemercs.com/de/io-warrior?L=1

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

Hallo :D

ein paar Tips konnte ich umsetzen.
Weil es ja Anfangs gar nicht vorwärts ging
mit dem Banana pi, bin ich auf arduino
umgestiegen. Ein Teensy 2.0 ... angesteuert
über windows mit der passenden
arduino software.
Ich habe es geschafft, damit eine LED Reihe
verschieden blinken zu lassen. Ganz gut zum
Lernen.
Einen Mikrocontroller zu programmieren in
assembler ist da schon aufwendiger.

Aber ich habe es geschafft :D

Mit einem Raspberry pi programmiere ich
einen assembler direkt über die GPIO in den
flash vom Mikrocontroller.
Kein weiteres, aufwendiges
Programmierboard oder ein AtmelStudio
under windows...Rechner <> chip.

Mein Programm läuft jetzt :D

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

Hallo :D
Mittlerweile verwende ich folgendes setup,
um verschiedene Mikrocontroller zu
programmieren:
•Handy
•Raspberry (an einer 20 K mAh Powerbank)
•5 Kabel an den I/O Ports

Das ist echt cool.
Jetzt kann ich übers Handy Mikrocontroller
in assembler programmieren.

Auf dem Handy ist eine SSH-App und darüber
mit dem Raspberry (A+)per W-lan verbunden.
Damit wird das Handy zum vollständigen
textbasierten Terminal mit Tastatur und
Bildschirm.
Auf dem Raspberry sind Änderungen
vorgenommen.Der bootet jetzt von USBstick
und über den sd-card slot ist eine sd
eingebunden in den Verzeichnisbaum des
OS (Raspian OS Lite). Automatisch mit dem
boot wird der ssh-service mitgeladen und
ich kann unterwegs den Raspi hochfahren
und daran per Handy arbeiten.

Die Kompilierungssoftware ist
-avra,
als Kompilierungstool für Programmtexte im
Texteditor
und
-avrdude
als Flash-Werkzeug für die Mikrocontroller
mit der Konfiguration, über bitbanging per
GPIO des Raspberry mit linux_GPIO die
Programmbefehle zu übertragen.

Für mein Vorhaben mit den verschiedenen
LEDs leuchten haben, genügt der ATmega8,
denn ich habe 19 LED, die ich ansteuere.
Noch läuft das Programm über den
integrierten Oszillator des MC's.

Als Übungschip habe ich auch einen ATiny12
in Verwendung. Einfache Programme alles...
zum Üben und lernen.
coole fading LED mit assembler :D

Ich habe gesehen, mein Eingangspost ist
heute über 2 Jahre zurück in der Zeit und ich
habe viel gelernt.
Jetzt verstehe ich auch die guten Hinweise
und Hilfestellungen aus euren Antworten viel
besser.
Danke :D

von Ingo S. (Firma: privat) (nisus)


Angehängte Dateien:

Lesenswert?

Das ist sie

fade fade :D

von sp103 (Gast)


Lesenswert?

Gratulation zum Erfolg - Du hast viel gelernt!

Für die Bananas ist https://sunxi.org/ die Referenz, dort findet man 
auch, wie
man direkt die GPIOs aus der Kommandozeile (oder Python usw.) ansteuert.

Das Zauberwort für Installationsprobleme bei den Bananas heisst übrigens 
serielle Schnittstelle...

von Wolfgang (Gast)


Lesenswert?

Stromverdichter schrieb:
> Du kannst dich also erst mal auf die vereinfachten Arduino-Befehle
> verlassen.

Das sind ganz normale Funktionsaufrufe für mitgelieferte Funktionen. Was 
soll dieser Unsinn mit "vereinfachten Arduino-Befehlen"?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.