Forum: Mikrocontroller und Digitale Elektronik Mit Avrstudio 5 Hex Datei erzeugen


von Marcus (Gast)


Lesenswert?

Hallo!

Ich habe ein kleines Programm mit AvrStudio 5 geschrieben und möchte 
dieses kompillieren damit ich es auf meinen Controller flashen kann 
(direkt flashen geht nicht, da Avrstudio den Programmer nicht 
unterstützt).

Wenn ich auf den Button "Compile" klicke, dann sagt er folgendes:
1
AVRGCC1.elf section `.text' will not fit in region `text'

Mittlererweile weiß ich schon dass das daran liegt dass das EEPROM zu 
klein ist. Aber ich will das  Programm garnicht im EEPROM sondern im 
Flash drinnen haben. Wie sage ich das dem Avrstudio, dass ich eine 
Hex-Datei will?

Ich bin noch relativ neu im Bereich µC's und verwende den Atmega8. Ich 
hatte vorher schon mit Bascom zu tun, bin aber auf Avrstudio umgestiegen 
da ich mich in C wesentlich besser auskenne.

Mfg Marcus

von docean (Gast)


Lesenswert?

zeig mal deinen Code....

von Marcus (Gast)


Angehängte Dateien:

Lesenswert?

In AVRGCC2 ist der code drinnen, wo es nicht geht.
In AVRGCC3 ist eine abgespeckte Version drinnen, die geht. Wenn ich die 
auf den Controller flashe, dann braucht das 5 KB (kann das sein?)

Dieses Programm steuert einfach 8 Leds, die der Reihe nach von Rechts 
nach Links (und wieder zurück aufleuchten).

von docean (Gast)


Lesenswert?

1
#include "util/delay.h"

das geht? da gehören <> hin...

lager mal _delay_ms in eine Funktion aus...

von Marcus (Gast)


Angehängte Dateien:

Lesenswert?

Danke, jetzt gehts. Die Include-Datei war wohl zu groß.

Jetzt habe ich aber immer noch zwei Fragen (wobei die zweite eher nicht 
da rein passt ^^):

1. Avr-Studio produziert eine .elf Datei. Wie bringe ich Avr-Studio 
dazu, eine .hex oder .bin Datei zu produzieren?

2. Mein Atmega läuft mit einem externen oszillator auf 4,194304 Mhz 
(großes Uhrenquarz). In meinem Programm habe ich F_CPU aber auf 1 Mhz 
einstellen müssen, damit ich (geschätzt) eine halbe Sekunde 
zusammenbekomme. Wenn ich F_CPU aber auf die eigentliche Frequenz 
einstelle, dann dauert es Sekunden bis zum nächsten Schritt. Könnte 
jemand mal die Funktion "waitms" durchcheken?

Mfg Marcus

von spess53 (Gast)


Lesenswert?

Hi

>Mein Atmega läuft mit einem externen oszillator auf 4,194304 Mhz
>(großes Uhrenquarz).

Auch die Fuses passend programmiert? Sonst trödelt er immer noch mit 
1MHz.

MfG Spess

von Marcus (Gast)


Lesenswert?

Ja. Mit dem Programm was ich zum Brennen verwende habe ich folgendes 
Fusebit gesetzt:

"External Clock; Startup time 6 CK + 4ms"

Das Programm nennt sich "myAVR Prog Tool".

Der Ausgang des Oszillators hängt an Pin 9. Mit Bascom hat es auch 
wunderbar funktioniert. Der Multimeter zeigt auch die angegeben Frequenz 
an.

Beim Programm checke ich nur die Zeile
1
tmp = (F_CPU/17000) * ms
nicht. Wieso steht da "/17000" und nicht 10000 oder irgend etwas 
anderes? Oder ist das komplett falsch?


LG

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.