Forum: Mikrocontroller und Digitale Elektronik Arduino IDE hex file mit AVR Studio brennen


von Roman (Gast)


Lesenswert?

Hallo zusammen

Seit einiger Zeit nutze ich das Stk500 board um einen Atmega8 via AVR 
Studio oder Programmer's Note Pad zu programmieren(ISP).
Da die Arduino IDE sehr viele vorprogrammierte Funktionen liefert und 
sich deshalb kleine Projekte schneller realisieren lassen, wollte ich 
diese in Verbindung mit dem Stk500 nutzen.
Im Internet habe ich mitbekommen, dass es möglich sein sollte eine hex 
Datei mit der Arduino IDE zu erstellen und diese via AVR Studio wie 
gewohnt auf den Chip zu brennen (dann bräuchte ich auch keinen 
Bootloader?).
Hier der Link:
http://forum.arduino.cc/index.php/topic,30200.0.html

Meine Frage ist nun ob dies so einfach geht und was man sonst noch alles 
berücksichtigen muss? Normalerweise nutze ich ein Makefile, womit ich 
dem Compiler mitteile um welchen Chip es sich handelt und mit welcher 
Frequenz er betrieben wird, wie mach ich das mit der Arduino IDE?
Muss ich sonst noch Einstellungen vornehmen?

Wäre sehr dankbar um eure Hilfe!

lG
Roman

von Kaj (Gast)


Lesenswert?

Roman schrieb:
> Meine Frage ist nun ob dies so einfach geht
Ja

Roman schrieb:
> Normalerweise nutze ich ein Makefile, womit ich
> dem Compiler mitteile um welchen Chip es sich handelt und mit welcher
> Frequenz er betrieben wird, wie mach ich das mit der Arduino IDE?
Arduino IDE aufmachen und dann:
Tools --> Board und dann das board aussuchen, auf dem dein Controller 
verbaut ist.
Die Arduino-Boards laufen (meines wissens nach) alle mit der max. 
Frequenz, in der regel also 16MHz, das kann man (wieder meines wissens 
nach) in der Arduino IDE auch nicht einstellen, weil es ja auch nicht 
nötig ist bei den Boards. Ich denke das mit den Frequenzen wird in der 
IDE hardgecoded sein.
Ich glaube aber auch, das es dem Compiler herzlich egal ist, wie schnell 
der Controller arbeitet ;)

Roman schrieb:
> Muss ich sonst noch Einstellungen vornehmen?
Da du nicht mit der ArduinoIDE flashen willst, brauchst du nur das Board 
einstellen.

Grüße

von Roman (Gast)


Lesenswert?

Hallo Kaj

Mein Problem ist aber, dass ich ein Stk500 board besitze und keins von 
Arduino. Bei den boards in der IDE kann man das Stk500 gar nicht 
auswählen.

Ich möchte die Arduino IDE nur dazu benutzen eine Hex Datei zu 
erstellen, welche ich dann mit AVR Studio 5 via meinem Stk500 auf den 
Atmega8 brennen kann. Ist das möglich?

von Karl H. (kbuchegg)


Lesenswert?

Roman schrieb:
> Hallo Kaj
>
> Mein Problem ist aber, dass ich ein Stk500 board besitze und keins von
> Arduino.

Dann such dir irgendeines aus, auf dem genau der AVR-Typ verbaut ist, 
den du in deinem STK stecken hast.

> erstellen, welche ich dann mit AVR Studio 5 via meinem Stk500 auf den
> Atmega8 brennen kann.

Also wählst du ein Arduino Board aus, auf dem ein Mega8 verbaut ist.

Es geht doch nur darum, dass der Compiler den Code für den richtigen 
Prozessor erzeugt. Mehr nicht. In der Arduino IDE ist das dann eben mit 
dem Board verknüpft, weil die Arduino Leute wissen, dass ein xyz Chip 
darauf verbaut ist.

: Bearbeitet durch User
von Marcel (Gast)


Lesenswert?

Ja, indem du in der Arduino IDE ein x-beliebiges Board mit einem Atmega8 
auswählst.
Oder du kopierst einfach die entpsrechenden Quelldateien von der 
Arduino-Library in dein Projekt und nutzt das AVR Studio wie sonst auch.

von Roman (Gast)


Lesenswert?

Ok jetzt ist alles klar, vielen Dank!

von Karl H. (kbuchegg)


Lesenswert?

Interessant wird dann allerdings die Fragestellung, auf welchem Portpin 
dann eigentlich ein digitalWrite operiert. Denn der Zusammenhang von 
Port und Portbit wurde ja in der Arduino Welt zugunsten einer 
Durchnummerierung aufgegeben - was dann auch von so manch anderen 
nützlichen Klassen benutzt wird. Da heißt es dann eben: die R/W Leitung 
eines LCD ist am digitalen Ausgang 5 anzuschliessen (bzw. im Programm 
wird diese Zuordnung mit dem digitalen Ausgang 5 der LCD Klasse 
mitgeteilt). D.h. da ist für dich dann der prinzipielle Aufbau des von 
dir eingestellten Boards schon auch wieder interessant, weil du über 
diese Board-Bezeichnung den Zusammenhang von Arduino Anschlussnummer und 
Port/Pin herstellen musst.

von Ein Gast (Gast)


Lesenswert?

Du kompilierst Dein Programm in der Arduino-IDE.


In Windows findest Du einen temp Ordner unter:
C:\Dokumente und Einstellungen\..Benutzername..\Lokale 
Einstellungen\Temp\

Dann ist dort der letzte Ordner build ..(viele Ziffern).. .tmp

In diesem Ordner liegt dann das HEX-File, welches Du mit einem 
Programmer Deiner Wahl auf den Zielprozessor übertragen kannst.


Vorbedingung, dass Du dieses File verwenden kannst, ist wie K.-Heinz 
schon geschrieben hat, dass Du die Vorgaben der Portbelegung und die 
Taktfrequenz von 16MHz auf Deinem Zielsystem einhälst. Auch solltest Du 
beim kompilieren des Programm das passende Arduino-Board ausgesucht 
haben (gleicher Prozessor).

Gruß
Ein Gast

von Ein Gast (Gast)


Lesenswert?

Nachsatz:

Sollten doch abweichende Taktfrequenzen des Ziielsystems vorkommen,
so ist dies auch kein Beinbruch: solange Du im Hinterkopf behälst, dass 
alle Zeiten bei einem 8MHz Atmega8 (im Auslieferzustand) doppelt solange 
dauern.

Beispiel:  Delay(1000)  auf einem 16MHz-System  = 1000ms
                        auf einem 8MHz-System   = 2000ms

also folgt daraus Delay(1000/2) = 1000ms   bei 8Mhz Takt.
(diese aber gleich im Kopf ausrechnen und nicht dem Prozessor machen 
lassen.)


Ein Gast

von Helmut H. (helmuth)


Lesenswert?

Karl Heinz schrieb:
> Interessant wird dann allerdings die Fragestellung, auf welchem Portpin
> dann eigentlich ein digitalWrite operiert.

"The pin mapping for the (Atmega8,) Atmega168 and the 328 is roughly the 
same."
http://arduino.cc/en/Hacking/PinMapping

Ansonsten die Boards.txt erweitern wie z.B. beschrieben in
http://achuwilson.wordpress.com/2011/12/15/arduino-ide-for-programming-atmega-microcontrollers/
1
atmega8.name=ATmega8 @8MHz
2
3
atmega8.upload.using=usbasp
4
atmega8.upload.protocol=usb
5
atmega8.upload.maximum_size=8192
6
atmega8.upload.speed=38400
7
8
atmega8.bootloader.low_fuses=0xef
9
atmega8.bootloader.high_fuses=0xc4
10
atmega8.bootloader.path=atmega8_
11
atmega8.bootloader.file=ATmegaBOOT.hex
12
atmega8.bootloader.unlock_bits=0x3F
13
atmega8.bootloader.lock_bits=0x0F
14
15
atmega8.build.mcu=atmega8
16
atmega8.build.f_cpu=8000000L
17
atmega8.build.core=arduino

: Bearbeitet durch User
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.