PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verständnisfrage zu Dateien auf einem Board (Arduino) - und was bringt RESET ?



Ark
17.02.2012, 21:22
Hallo alle zusammen,

ich beschäftige mich seit heute mit Arduino. Verwenden tue ich ein Arduino UNO Board. Ich bin absoluter Anfänger und habe daher einige Fragen. Also ich habe mit der Arduino IDE einen Programmcode hochgeladen, der die Status LED schnell blinken lässt. Abgespeichert unter den Namen "sketch_blinken1.ino". Danach habe ich einen weiteren Programmcode geschrieben, abgespeichert unter den Namen "sketch_blinken2.ino" und hochgeladen. Funktioniert auch. Der Unterschied der beiden Codes lag in der Blink-Geschwindigkeit der Status LED.

Jetzt meine Fragen:

1. Ersetzt so ein Board immer automatisch die vorhandene Dateien: In meinem fall "sketch_blinken1.ino" mit ""sketch_blinken2.ino" oder wie kann ich mir das intern mit dem Speicher vorstellen? Nicht das ich jetzt immer lustig weiter Speicher mit unterschiedlichen Namen und irgendwann ist der Speicher voll? Oder hat das mit den Namen gar nichts zu tun und es gibt quasi nur einen Speicherbereich der beschrieben werden kann und diese Namensgebung ist eigentlich nur für mich zur besseren Verwaltung auf meinem Computer?

2. Wofür ist der "RESET" Knopf ? Ich dachte eigentlich, der würde den kompletten Programmcode löschen, aber irgendwie scheint das nicht zu funktionieren. Sprich:

"sketch_blinken1.ino" hochgeladen, Status LED blinkt. Dann Reset Knopf gedrückt. Status LED hört kurz auf zu blinken, fängt danach aber wieder an. Daher gehe ich davon aus, das mein Programm noch auf dem Board ist? Was bringt der RESET Knopf dann?

Würde mich über eine Erklärung sehr freuen :) !

Lg

ePyx
17.02.2012, 21:59
Willkommen im Forum. ;)

Zu 1. Der Speicher wird immer komplett ersetzt. Dazu wird dein Code in Maschinencode (Assembler) compiliert und anschließend in ein Intel Hexfile transferiert. Dieses enthält dann den Maschinencode, die Adressinformationen und die Prüfsummen.

Neuer Code landet immer am Anfang und ersetzt ( abgesehen vom Bootloader, da du diesen ja benutzt ) überschrieben.

Zu 2. Es gibt bei den Arduinoboards auch die Möglichkeit den automatischen Reset zu deaktivieren. Der Reset setzt den aktuellen Programmstatus auf 0, löscht aber keinen Inhalt.

Wenn du weitere Fragen hast, wirst du hier im Forum sicherlich auch viele finden, die dir Antworten geben werden, oder es zu mindestens versuchen werden. Daher keine Scheu.

crissa
17.02.2012, 22:47
Hoi,
über Arduino, Podcasts mit Arduino suchen, Robotiklabor Podcast finden, hören und einigen Links bin ich auch hier gelandet. Aktuell arbeite ich das Arduino Buch von Erik Bartmann durch.

Mittlerweile ist das Breadboard da und ich spiele mit LEDs und PWM rum. Ich habe mir fest genommen erst dann eigene (größere) Schaltungen zu bauen wenn ich mit dem Buch durch bin, es gibt noch einiges auf zu frischen.

Was hat Dich hierher gebracht?
Tschö, Tore

5Volt-Junkie
17.02.2012, 23:14
RESET am Arduino kannst Du grob mit dem RESET am PC vergleichen. Wenn du ihn drückst, startest Du ihn (PC/Arduino) neu, löschst aber kein Betriebssystem (Bootloader) oder die Programme (Code) drauf.

Kampi
18.02.2012, 10:15
Das Arduino Board hat im Auslieferungszustand, also wenn du es bekommst, nur einen sogenannten Bootloader drauf. Dieser Bootloader sorgt dafür das du das Board ohne Programmer nur mit der Entwicklungsumgebung (IDE) mit einem Programm beschreiben (flashen) kannst. Dieser Bootloader ist an einem festen Platz im Speicher des Controllers der NUR für Bootloader reserviert ist gespeichert und den kannst du nur löschen indem du mit einem Programmer den ganzen Controller auf auslieferungszustand zurücksetzt (das meint soviel wie du machst den komplett platt so wie der Controller das Atmel-Werk verlassen hat).
Dann gibt es noch einen Programmspeicher wo das aktuelle Programm gespeichert wird.
Hier kann immer nur ein einziges Programm gespeichert werden. Dieses Programm wird ab einer bestimmten Adresse (ich sage einfach mal Adresse 0) in den Speicher geschrieben. Dies erledigt der Bootloader alles für dich. Wenn du ein Programm auf dein Arduino überträgst löscht er das alte und speichert das neue im Flash. Dabei beginnt er immer mit dieser Adresse 0. So wird "gewährleistet" das immer nur ein komplettes Programm im Flash ist.
Der RESET Knopf kannst du mit dem RESET Knopf am PC vergleichen.
Angenommen du hast ein Programm geschrieben was den Controller in einer Endlosschleife festhält (der Grund wieso er das macht ist erstmal egal ;) ). Wenn du jetzt willst das der Controller zum Anfang des Programmes zurück springt hast du im Grund zwei Möglichkeiten (wie beim PC wo sich z.B. dein Windows aufgehängt hat). 1. du ziehst den Stecker oder 2. du drückst auf den RESET-Knopf.
Beim PC ist das Stecker ziehen nicht immer so prall deswegen drückst du eher den RESET-Knopf. Und dies sorgt dafür das der Programcounter im Controller resetet wird und alles was dazu gehört und er das Programm wieder ganz von Anfang an abspielt.
Du hast es ja gesehen. Nachdem du den RESET-Knopf gedrückt hast ging die LED aus. Erst als du den Knopf wieder los gelassen hast leuchtete sie wieder.
Wenn du den RESET-Knopf gedrückt hältst kannst du den Mikrocontroller im RESET-Zustand lassen. In diesem Zustand stellt der Controller all seine Tätigkeiten ein und beim verlassen des RESET-Zustandes beginnt er von vorne.

Hoffe das hilft dir weiter :)

Ark
18.02.2012, 12:13
Wirklich vielen Dank für die ausführlichen Antworten. Jetzt leuchtet mir einiges ein. Ist ja nicht auszuhalten wenn man etwas macht, es funktioniert, aber man weiß nicht warum :D ...



Was hat Dich hierher gebracht?

Ich wollte mich mit Microcontrollern beschäftigen. Habe mir dann im Google ein Forum gesucht und bin dann über dieses Forum erst auf Arduino aufmerksam geworden.

Lg

Kampi
18.02.2012, 13:45
Noch ein kleiner Nachtrag.....
Genau genommen überträgst du nicht die Datei (also dein Programm) auf den Controller sondern vielmehr generiert dein Compiler (der in der Arduino IDE mitgeliefert wird) aus dem Programm (deiner Datei) ein Hex-File. In dem Hex-File steht dein Programm als Maschinensprache übersetzt drin. Und dieser Inhalt wird dann in den Flashspeicher kopiert. ;)

halfdone
23.02.2012, 01:51
Hey Ark :) !

Schau dir doch mal das Buch "Die elektronische Welt mit Arduino entdecken" von Erik Bartmann an. Dort werden nebst vielen Projekten auch noch mal die Grundlagen erläutert. U.a auch die von dir genannte Frage.

Grüße

crissa
23.02.2012, 06:55
Hoi,
das Buch arbeite ich gerade durch und bin schon bis zum Würfel (aka W6) gekommen. Allerdings habe ich auch nicht jedes Projekt nach gebaut. Es kommt schon einiges an benötigten Teilen zusammen, LEDs und Widerstände habe ich noch genug, aber bestimmte ICs, Fotowiderstände usw. musste ich erst bestellen. Der Schreibstil wendet sich eher an ein jüngeres Publikum. Meinem etwas eingerosteten Elektronik Wissen hat das aber ganz gut getan.

Neben dem Buch (ca. 35 Euro) und dem Arduino Uno Board (ca. 25 Euro) habe ich mittlerweile ein Steckbrett (ca. 15 Euro) und dazu passende Kabel (ca. 7 Euro) sowie einen Arduino Aufsatz zum Experimentieren (inkl. Mini Steckbrett, ca. 9 Euro) gekauft. Dazu noch ein weiteres Board, zwei Temperatur Sensoren, ein Servo und diverse Halbleiter. Kurz gesagt, es kommt doch einiges zusammen.

Und damit es hierher passt: Das Buch geht auch auf die Ansteuerung von Servos und Motoren ein. :-)
Tschö, Tore

halfdone
23.02.2012, 12:46
Neben dem Buch (ca. 35 Euro) und dem Arduino Uno Board (ca. 25 Euro) habe ich mittlerweile ein Steckbrett (ca. 15 Euro) und dazu passende Kabel (ca. 7 Euro) sowie einen Arduino Aufsatz zum Experimentieren (inkl. Mini Steckbrett, ca. 9 Euro) gekauft. Dazu noch ein weiteres Board, zwei Temperatur Sensoren, ein Servo und diverse Halbleiter. Kurz gesagt, es kommt doch einiges zusammen.

Stimmt es kommt einiges zusammen, aber man kann sich ja auch diese Kits kaufen z. B. das Fritzing Starter Kit. Da hat man erst mal fast alles was man so braucht. Die Komponenten werden meistens auch in anderen Arduino Büchern verwendet und das es nicht ganz ohne Hardware geht sollte eh klar sein. Glücklicherweise kann man die Komponenten auch für seine eigenen Versuche benutzen ;) ...

crissa
23.02.2012, 17:09
Stimmt es kommt einiges zusammen, aber man kann sich ja auch diese Kits kaufen z. B. das Fritzing Starter Kit. Da hat man erst mal fast alles was man so braucht. Die Komponenten werden meistens auch in anderen Arduino Büchern verwendet und das es nicht ganz ohne Hardware geht sollte eh klar sein. Glücklicherweise kann man die Komponenten auch für seine eigenen Versuche benutzen ;) ...

Hoi,
als ich das <Fritzing Starter Kit (http://fritzing.org/shop/starter-kit/)> gesehen habe hatte ich schon einen Arduino Uno und mein Steckbrett samt Kabelset war schon unterwegs. Ich hoffe in der Tat das eine oder andere weiter verwenden zu können.
Tschö, Tore