PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] ne ganz dumme Frage zum Arduino!



pemiso
23.09.2012, 15:35
Hallo Forum,

... habe anscheinend massive Verständnisschwierigkeiten:

wie stelle ich es an, ein Programm, das der Arduino nach Einschalten sofort ausführen soll, so abzulegen, dass es auch nach dem Abschalten erhalten bleibt?
Nach meinem Verständnis müßte es ins EPROM, aber dann auch nach dem Einschalten von dort automatisch zur Ausführung ins SRAM geladen werden.
Kann aber nichts finden, was mir da weiterhilft ...

Bitte um Hinweise.

Vielen Dank. Peter

Torrentula
23.09.2012, 15:59
Das Programm, dass du schreibst, wird erstmal kompiliert und als HEX-File abgespeichert. Dieses wird dann per USB zum AVR geschickt und auf dem AVR wiederum ist der Arduino Bootloader, der dann den AVR programmiert mit dem HEX-File das du ihm geschickt hast. Über die Speicherzugriffe musst du dich eigentlich erstmal nicht kümmern.

Dein Programm wird im Flash-Speicher abgelegt, das ist ein nicht-flüchtiger Speicher, sprich nach dem Ausschalten der Betriebsspannung bleibt das Programm gespeichert. Der EEPROM ist ein weiterer nicht-flüchtiger Speicher, der allerdings nicht für das Hauptprogramm verwendet wird, sondern man legt dort eher Daten ab, die sich selten oder gar nicht ändern, z.B. Kalibrierdaten.

Die benötigten Variablen und Daten werden dann beim Programmstart in den SRAM geladen. Daten und Programmspeicher sind bei dem AVR getrennt, da er auf der Harvard-Architektur (http://de.wikipedia.org/wiki/Harvard-Architektur) basiert.

EDIT: Wenn du per ISP programmieren würdest, würde der Programmer sich auch wieder um das Abspeichern an den korrekten Stellen im Flash kümmern.

pemiso
23.09.2012, 16:17
Danke Torrentula,
peinlich, peinlich: auf Deine Antwort hin habe ich erstmal festgestellt, dass der Arduino nach dem Einschalten schon genau das macht, was ich ihm eigentlich beibringen wollte - nämlich das zuletzt ausgeführte Programm wieder aufzunehmen. Aber man sollte nicht nur vorausdenken, sondern auch mal testen!!!
Dank Dir nun ein Problem weniger :-)
Beste Grüße ... Peter

Andre Lohmann
28.09.2012, 20:52
Hallo, auch wenn dieser Thread schon als gelöst markiert war, würde ich die dumme Fragerunde gerne ein wenig weiter führen.

Kurz zu meinem Background:
Ich hab nen Asuro gelötet und Programmiert und ich hab diverse Spielchen mit meinem Arduino hinter mir. Ausserdem fange ich, dank Christian Schifferles Tutorial (http://www.physik.uni-regensburg.de/studium/edverg/elfort/C_KURS_Atmel_Programmieren%20htm/Index.htm), so langsam an zu begreifen, wie die ganze Geschichte mit den Registern denn funktioniert.

Da ich selbst Softwareentwickler (allerdings eher spezialisiert auf Webanwendungen) und begeisterter Linuxer bin, sind mir C sowie der Umgang mit dem GCC geläufig (wenn ich mich auf dem Gebiet auch lange nicht als Spezialist betiteln würde).

Mein Kopf ist nun voller Ideen, die definitiv eines tieferen Einstiegs in die ganze microC Materie bedürfen, speciell um das Wissen um Bootloader und Libraries.

Wenn ich den Arduino richtig verstanden habe, dann handelt es sich dabei um vier Dinge:
eine experimentier Platine mit USB-Seriell Wandler
eine IDE, die mir als wrapper um die ganzen avr tools dient
eine Library mit jeder Menge Funtionen zur vereinfachten Entwicklung (wrapper um das ganze Port Register gehassel + vieles mehr)
(analog dem Asuro kann die Library auch direkt in ein avr-gcc projekt eingebunden, kompiliert und dann per Programmer auf den mC geladen werden?)
ein spezieller Bootloader, der in der Lage ist, mit der Arduino IDE zu kommunizieren oder einfach mein Programm abzuackern

Liege ich da weitestgehends richtig? Wenn nicht, würde ich mich freuen, wenn man mein Weltbild ergänzen oder korrigieren könnte.

Hubert.G
29.09.2012, 10:04
Weitgehend liegst du richtig. Der Teufel steckt allerdings im Detail.
Wenn man außerhalb der Arduino IDE mehrere Librarys verwenden will kann es schnell mal zu Konflikten kommen.
Innerhalb der IDE wird so etwas anscheinend vom Precompiler gehandelt. Aber ein reines Copy und Paste ist ja ohnehin nicht gefragt.