Forum: Mikrocontroller und Digitale Elektronik Arduino uno mit c programmieren (Beispiel "BLINK")


von Student1 (Gast)


Lesenswert?

Hi Leute,

habe seit kurzem meine Leidenschaft für Microcontroller entdeckt.
Zum Einstieg beschäftige ich mich mit dem Arduino Uno. Jetzt will ich 
das Beispiel "BLINK" mit der Programmiersprache C programmieren. Ich 
habe mir den WinAvr als Compiler(avr-gcc) runtergeladen. Wie muss ich 
vorgehen damit das funktioniert?
P.S: Die Tutorials helfen mir in keinster Weise.

Vielen Dank

von Peter II (Gast)


Lesenswert?

Student1 schrieb:
> P.S: Die Tutorials helfen mir in keinster Weise.

und ohne konkrete fragen kann hier auch keiner weiterhelfen.

von STK500-Besitzer (Gast)


Lesenswert?

Student1 schrieb:
> Wie muss ich
> vorgehen damit das funktioniert?

Du wirst herausfinden müssen, wie der Arduino-Bootloader funktioniert.
Das sollte sich aber herausfinden lassen.
Dann musst du nur dein Programm compilieren lassen und auf den 
Controller übertragen.
Man kann auch ein (vernünftiges) ISP-Adapter verwenden. Dann ist aber 
der Bootloader futsch.

von Philipp K. (philipp_k59)


Lesenswert?

STK500-Besitzer schrieb:
> Man kann auch ein (vernünftiges) ISP-Adapter verwenden. Dann ist aber
> der Bootloader futsch.

wie meinst du das? Man kann doch isp und Bootloader benutzen.. das geht 
wie man will nur nicht gleichzeitig.

Du brauchst eine IDE wie zB Eclipse oder AVRStudio, wenn du dann ein HEX 
File generiert bekommen hast kannst Du das mit avrdude und den richtigem 
AvrDude Tutorial hochladen.

von STK500-Besitzer (Gast)


Lesenswert?

Philipp K. schrieb:
> wie meinst du das? Man kann doch isp und Bootloader benutzen.. das geht
> wie man will nur nicht gleichzeitig.

Dein Programm liegt nach einer ISP-Programmierung dort im Controller, wo 
vorhr der Bootloader lag.

von Peter II (Gast)


Lesenswert?

STK500-Besitzer schrieb:
>> wie meinst du das? Man kann doch isp und Bootloader benutzen.. das geht
>> wie man will nur nicht gleichzeitig.
>
> Dein Programm liegt nach einer ISP-Programmierung dort im Controller, wo
> vorhr der Bootloader lag.

das muss aber so nicht sein. Man kann das Programm an andere Adressen 
laden.

von STK500-Besitzer (Gast)


Lesenswert?

Peter II schrieb:
> das muss aber so nicht sein. Man kann das Programm an andere Adressen
> laden.

Das kannst du vielleicht so organiseren, ich vielleicht auch, aber der 
Threadstarter?

von google (Gast)


Lesenswert?

... oder Du nimmst die Arduino-IDE, was nichts anderes als C bedeutet, 
und programmierst Deinen Arduino damit.

von m.n. (Gast)


Lesenswert?

Student1 schrieb:
> Wie muss ich
> vorgehen damit das funktioniert?

Du nimmst zunächst die (wohl) vorhandene Arduino IDE, schreibst ein 
C-Programm oder kopierts es in die .ino-Datei, läßt es compilieren und 
lädst es in der µC. Fertig!
Keiner zwingt Dich loop() und setup() aufzurufen.

von Falk B. (falk)


Lesenswert?

@ google (Gast)

>... oder Du nimmst die Arduino-IDE, was nichts anderes als C bedeutet,
>und programmierst Deinen Arduino damit.

Warum einfach, wenn es auch umständlich geht?

Arduino ist normales C mit einem Hauch C++. Die Benutzeroberfläche ist 
ein stark abgesprecktes Atmelstudion. Für Anfänger vollkommen 
ausreichend.

von Student1 (Gast)


Lesenswert?

Hi m.n.,

das habe ich schon gemacht und hat auch wunderbar geklappt. Die Arduino- 
Welt ist wirklich benutzerfreundlich. Ich möchte mich aber in dem Fall 
gerne mit dem gcc-compiler auseinandersetzen. Daher wende ich mich auch 
an euch.

DAnke

von Philipp K. (philipp_k59)


Lesenswert?

Ein Arduino hat durch eine Fuse einen anderen Bootloaderbereich, das ist 
richtig.. Aber solange man die Fuse nicht ändert kann man ISP oder den 
Serial Bootloader zum hochladen nutzen.

von F. F. (foldi)


Lesenswert?

Student1 schrieb:
> P.S: Die Tutorials helfen mir in keinster Weise.

Kannst du schon C?

von google (Gast)


Lesenswert?

Student1 schrieb:
> Ich möchte mich aber in dem Fall
> gerne mit dem gcc-compiler auseinandersetzen.

Was denkst Du, was unter der Arduino-Oberfläche steckt?

von Student1 (Gast)


Lesenswert?

Hi,

wie bekomme ich den eine Hex Datei generiert?
Einfach auf einen Button drücken :0?

Danke

von Philipp K. (philipp_k59)


Lesenswert?

Du brauchst dann eine andere IDE wie zum Beispiel Eclipse mit AVR-Plugin 
um mit avr-gcc zu programmieren. Ein Arduino bleibt ein Atmel..

Ich werde immer total dumm angeschaut wenn ich nen rohen Chip mit Serial 
Bootloader einfach Arduino nenne.. dabei ist das nur ein Praktischer 
Upload.

von Falk B. (falk)


Lesenswert?

@ Student1 (Gast)

>das habe ich schon gemacht und hat auch wunderbar geklappt. Die Arduino-
>Welt ist wirklich benutzerfreundlich.

Dann mach erstmal ein paar Gehversuche und sei glücklich!

> Ich möchte mich aber in dem Fall
>gerne mit dem gcc-compiler auseinandersetzen. Daher wende ich mich auch
>an euch.

Arduino nutzt den avr gcc, das ist praktisch der gleiche, welcher im win 
avr drinsteckt (naja, vielleicht etwas neuer)

Die Hexdatei wird im Projektverzeichnis abgelegt, wenn man STRG-R drückt 
(Prüfen/Kompilieren)

von Max D. (max_d)


Lesenswert?

1
#include <avr/io.h>
2
#include <util/delay.h>
3
4
int main(void){
5
6
 DDRB |= (1<<PB5);
7
8
 while(1){
9
  PORTB |= (1<<PB5);
10
  _delay_ms(500);
11
  PORTB &= ~(1<<PB5);
12
  _delay_ms(500);
13
 }
14
15
}

Hiermit blinkt die User-LED am arduino (nano) mit 1 Hz.

von F. F. (foldi)


Lesenswert?

Student1 schrieb:
> Hi,
>
> wie bekomme ich den eine Hex Datei generiert?
> Einfach auf einen Button drücken :0?
>
> Danke

Auf meine Frage hast du nicht geantwortet, aber sei's drum. Lade dir das 
Atmel Studio, damit hast du eine IDE die heute auch Arduino unterstützt.
Wie das allerdings über USB klappt, kann ich nicht sagen, da ich das mit 
einen AVRMKII, über die ISP Schnittstelle mache.

von Student1 (Gast)


Lesenswert?

Hi,

ja also C kann ich die Basics.

von F. F. (foldi)


Lesenswert?

Dann kann ich dir dieses Buch empfehlen:
http://www.franzis.de/elektronik/simulation-computer/avr-mikrocontroller-kochbuch

Da gehen sie auch auf neue Mikrocontroller (ATmega328) ein und ebenfalls 
auf das Atmel Studio.

von max2 (Gast)


Lesenswert?

Powerprojekte mit Arduino und C
ISBN-10: 3645651314

Dieses Buch enhält exakt das Blinkprogramm und ist auch sonst sehr zu 
empfehlen.

von Joachim B. (jar)


Lesenswert?

Student1 schrieb:
> Ich möchte mich aber in dem Fall
> gerne mit dem gcc-compiler auseinandersetzen. Daher wende ich mich auch
> an euch.

wo ist das Problem?

so habe ich auch angefangen, empfehle dir
Atmel AVR Studio in der Version 4.18 SR3
http://www.atmel.com/System/BaseForm.aspx?target=tcm:26-41052

und winavr WinAVR-20100110
http://sourceforge.net/projects/winavr/files/WinAVR/20100110/

da kannst du gleich loslegen (ISP Prommer Mk2 (clone) vorausgesetzt.

von thomas (Gast)


Lesenswert?

Falk Brunner schrieb:
> Die Hexdatei wird im Projektverzeichnis abgelegt, wenn man STRG-R drückt
> (Prüfen/Kompilieren)

Moin,

kann ich nicht bestätigen; Die Arduino-IDE kompiliert den C-Text von Max 
ohne Fehlermeldung, ein hex-File konnte ich jedoch nicht finden.

Lohnt sich das überhaupt, den Bootloader zu bewahren? Man könnte den ja 
ganz einfach überbügeln.
Wenn ja, mit welchen Argumenten bringt man avrdude dazu, das Programm 
dahin zu legen, wo der Bootloader es findet?

von Joachim B. (jar)


Lesenswert?

thomas schrieb:
> Moin,
>
> kann ich nicht bestätigen; Die Arduino-IDE kompiliert den C-Text von Max
> ohne Fehlermeldung, ein hex-File konnte ich jedoch nicht finden.

also ich finde meine Arduino HEX von gestern im Arduino TMP Ordner

C:\Dokumente und Einstellungen\jb\Lokale 
Einstellungen\Temp\build1036303377199115274.tmp\digi_filter.cpp.hex

einfach mal die Suche bemühen nach *.hex

von thomas (Gast)


Lesenswert?

Hallo jar,

hast recht:

user@schreibtisch:/tmp$ find -name *hex
./build6527190782700826868.tmp/blink_c.cpp.hex
./build6527190782700826868.tmp/sketch_mar31a.cpp.hex

muss zugeben, so intensiv hab ich nicht gesucht, das
ist allerdings nicht gerade das Projektverzeichnis:-)

Beitrag #6405256 wurde von einem Moderator gelöscht.
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.