Vom Arduino zum Mikrocontroller

Gast #4985731
Lesenswert?

Hallo und einen schönen Abend!

Ich arbeite gerade an einem Projekt mit einem Arduino. Im Grunde misst 
der Arduino einen Widerstand, verarbeitet ddas Signal weiter und gibt 
ein Bild über die serielle Schnittstelle an einen kleinen 
monochromatischen Bildschirm aus.
Längerfristig möchte ich gerne auf Mikrocontroller umsteigen, daher 
meine Frage. Kann der Arduinocode direkt auf einen Mikrocontroller 
übertragen werden, oder muss die Software neu geschrieben werden?
Wäre es generell besser direkt den Mikrocontroller zu verwenden oder 
macht es Sinn zum probieren am Arduino zu bleiben?

Vielen Dank für dei Antworten!
Gast #4985751
Lesenswert?

Arduino ist die Kapselung komplexer Vorgänge in ein sehr einfach 
verständliches Format, welches aber dem Nutzer alle internen Vorgänge 
der CPU verbirgt. Und es ist nicht kompatibel zu irgendetwas anderem 
außer Arduino.

2017 sind 8 Bitter fast schon obsolet, daher direkt zum Martführer ARM 
wechseln auf 32 Bit.
Gast #4985789
Lesenswert?

Nur zur Sicherheit: (hobel) verarscht Dich ;-)

Natürlich kannst Du ein mit der Arduino-UI und Arduino-Bibliotheken 
erstelltes Programm auf einen nackten AVR flashen, entweder mit einem 
Programmer, oder per Bootloader.

Du kannst Arduino-Projekte in Atmel Studio importieren, wenn Du von der 
Arduino-UI die Nase voll hast oder Debuggen willst.

Du kannst Dein Arduino-Projekt auf andere AVR portieren (3rd party board 
definitions), auf diverse ARM portieren, z.B. STM32 (Plugin für 
Arduino), diverse TI-ARMs (Energia), oder auf ESP8266 und ESP32 
(letzterer unfertig).
#4985909
Lesenswert?

Hi

Aber NICHT Alles auf JEDEN µC.

Klingt aber auch logisch, da der neue/nackte µC ja den Arduino ersetzen 
können muß und somit wenigstens die dort benutzten Funktionen enthalten 
muß.

Mit einem 8-Beiner wird man kein 16-fach Lauflicht direkt am µC 
herstellen können (jaha, der Arduino hat mehr als 8 Beine, schon 
gesehen)

MfG
#4986007
Lesenswert?

Wenn ichs richtig verstehe is der Arduino nur ein Hardwarepaket um den 
ATmega328P. Prinzipiell wäre es doch sogar möglich den programmierten µC 
aus dem Arduino zu nehmen und ihn in ein Board zu löten?

Die Frage die sich mir stellt ist ob der ATmega328P oversized ist für 
meine Anwendung, oder macht die Bildschirmausgabe einen µC dieser Art 
nötig?
Gast #4986019
Lesenswert?

Klaus W. schrieb:
> Wenn ichs richtig verstehe is der Arduino nur ein Hardwarepaket um den
> ATmega328P.

Oder ein ATmega168 bei früheren Arduino UNO/NANO, ein ARM Cortex-M3 beim 
Arduino Due, eine ESP8266 beim ESP-12E oder ein ...

Dauergast schrieb:
> Du kannst Dein Arduino-Projekt auf ...

Klaus W. schrieb:
> Die Frage die sich mir stellt ist ob der ATmega328P oversized ist für
> meine Anwendung, oder macht die Bildschirmausgabe einen µC dieser Art
> nötig?

Das kommt drauf an, wie und was du als Bild über deine serielle 
Schnittstelle schicken möchtest. Der SRAM eines ATmega328P ist auch nur 
2kByte groß. Damit füllst du keinen 4k-Bildschirm ;-)
#4986056
Lesenswert?

Wolfgang schrieb:
> Der SRAM eines ATmega328P ist auch nur
> 2kByte groß. Damit füllst du keinen 4k-Bildschirm ;-)

Der geplante Bildschirm ist nur 128x64 Pixel groß, aber 2kByte sind doch 
etwas wenig. Ich möchte ne Sequenz aus fünf Bildern ausgeben, da muss es 
doch mehr sein, oder wie funktioniert das mit den SRAM?
Ein einzelnes Bild hat bei dieser Größe bereits 7kByte, oder vertue ich 
mich da?
#4986091
Lesenswert?

Was ich nicht ganz verstehe, wie schafft es der Arduino Uno Bilder 
darzustellen die größer als sein RAM sind?

Ich bin dieser Anleitung gefolgt:
www.instructables.com/id/How-to-use-OLED-display-arduino-module/

und es hat super funktioniert. Ich glaub ich seth etwas auf dem 
Schlauch...
Gast #4986094
Lesenswert?

Klaus W. schrieb:
> Der geplante Bildschirm ist nur 128x64 Pixel groß,
> Ein einzelnes Bild hat bei dieser Größe bereits 7kByte, oder vertue ich
> mich da?

Nö, genau 1kByte. Oben stand was von monochromatisch, d.h. du kannst 8 
Pixel in ein Byte speichern.

Alternativ könntest du das Bild vor der Ausgabe neu berechnen/zeichnen. 
Der Code dazu steht dann halt im meist ausreichend vorhandenen Flash.
Wenn du aber tatsächlich viel SRAM brauchst, suche mal nach seriellen 
SRAMs mit SPI- oder I²C-Schnittstelle.
Gast #4986096
Lesenswert?

Klaus W. schrieb:
> Was ich nicht ganz verstehe, wie schafft es der Arduino Uno Bilder
> darzustellen die größer als sein RAM sind?

Das darstellen ist nicht das Problem, es geht um den Bildinhalt. Gerade 
bei der Anzeige von Messwerten oder Texten muss das Bild ja nicht 
pixelweise gespeichert werden sondern kann vor der Ausgabe neu berechnet 
werden.
Gast #4986099
Lesenswert?

> Wenn ichs richtig verstehe is der Arduino nur ein Hardwarepaket um den
> ATmega328P.

Es gibt nicht "den Arduino".

Es gibt zahlreiche Arduino Module. Die meisten bestehen aus einem AVR 
Mikrocontroller und einem USB-UART Interface.

Dann gibt es noch die Arduino Entwicklungsumgebung, welche im 
Wesentlichen aus einem sehr primitiven Texteditor, dem GNU C Compiler 
und einem Framework (Libraries) besteht. Herausragendes Merkmal der 
Arduino Software ist die kinderleichte Installation.

Beides kann man unabhängig voneinander nutzen. Ich nutze zum Beispiel 
das Arduino Framework um meine ESP8266 Module (das sind keine Arduino 
Module) zu programmieren. Aber als Editor nutze ich stattdessen 
NetBeans.

Ich benutze auch Arduino Nano Module (die billigen aus China), aber die 
programmiere ich nicht mit der Arduino Software, sondern mit der 
avr-libc und mit NetBeans oder QT Creator als IDE.

Du kannst die ganze Arduino Software durchaus auch zum Programmieren 
einzelner AVR Mikrocontroller verwenden. Dann brauchst du allerdings 
entweder einen ISP Programmieradapter, oder du kauft die Chips bei einem 
Händler, der Dir den Arduino Bootloader vorinstalliert.
Gast #4986103
Lesenswert?

> Was ich nicht ganz verstehe, wie schafft es der Arduino Uno Bilder
> darzustellen die größer als sein RAM sind?

Viele Displays enthalten einen eigenen Bildspeicher mit seriellem 
Interface. Bei diesen kannst du das Bild ganz in Ruhe berechnen und 
Stück für Stück an das Display senden.

Bei Displays ohne Bildspeicher, muss dein Programm das ganze Bild 
erzeugen/berechnen während es angezeigt wird - und zwar fortlaufend. Das 
ist schon deutlich schwieriger, dahert würde ich diese Variante 
vermeiden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren