Forum: Compiler & IDEs Probleme mit WINAVR


von Franki (Gast)


Lesenswert?

Hallo!

Ich habe die ganze Zeit die CodeVisionAVR Software benutzt. Jetzt
möchte ich meinen ATMEGA8535 mit WINAVR programmieren. Das Toll habe
ich heruntergeladen und installiert. Ich komme mit der Software nicht
klar.
Was muss ich einstellen damit ich mit WINAVR ein HEX-File für den
ATMEGA8535 erzeugen kann?

von OldBug (Gast)


Lesenswert?

Sorry, aber RTFM!

von Andreas Hesse (Gast)


Lesenswert?

Hallo,

makefile oder Batch

siehe:

http://www.mikrocontroller.net/forum/read-4-84831.html

Ich verwende Batchdateien.

Gruss
Andreas

von Franki (Gast)


Lesenswert?

Das ist mir egal, ob makefile oder Batch.
Ich möchte nur ein HEX-File für den ATMEGA8535 erzeugen.

von Franki (Gast)


Lesenswert?

Wie muss ich die Batch Datei im WINAVR einbinden?

Batchdatei von Andreas Hesse:
Ich compiliere immer in der DOS-Box mit einer Batch:

@echo off

:set mcu=90s2313
:set mcu=tiny26

set mcu=mega8

set main=test

set ac=c:\avr\winavr

path %ac%\bin;%path%
avr-gcc.exe -Os -mmcu=at%mcu% -Wall -g -o main.out *.c
if not exist main.out goto end
cmd /c avr-objdump.exe -t -h -S main.out >%main%.lst
cmd /c avr-objcopy.exe -O ihex main.out %main%.hex
avr-size.exe -B main.out
del main.out

:end

von Andreas Hesse (Gast)


Lesenswert?

Hallo,

die Batchdatei ist nicht von mir... hab diese auch nur abgeschrieben.
Ich verstehe aber Dein Frage nicht so richtig. Die Batchdatei kann von
der DOS-Box aufgerufen werden, oder Du bindest diese in Deinen Editor
mit ein (sofern Dein Editor das zulässt).

Gruss
Andreas

von Franki (Gast)


Lesenswert?

Ja verwendest du den WINAVR und speicherst die Datei in eine C Datei ab?

von Franki (Gast)


Angehängte Dateien:

Lesenswert?

Hier habe ich mal einen Screenshot vom WINAVR gemacht.
Ich komme nicht klar wie was und wo ich da einstellen muss, damit ich
ein HEX-File herausbekomme.

von mthomas (Gast)


Lesenswert?

was bleibt nach Lesen von
http://www.mikrocontroller.net/wiki/AVR-GCC-Tutorial
(insbes. d. Abschnitt "Exkurs Makefiles")
und
http://winavr.sourceforge.net/download/install_config_WinAVR.pdf
unklar?

von Andreas Hesse (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich mach das wie folgt:

Zu jedem Projekt wird eine Batch-Datei angelegt (die auch im
Projektverzeichnis liegt) (siehe Anhang).

Im Editor rufe ich dann nur noch diese Batch auf.

Der Hex-File wird durch das Commando "cmd /c avr-objcopy.exe -O ihex
main.out %ProgName%.hex" erzeugt.

Gruss
Andreas

von Franki (Gast)


Angehängte Dateien:

Lesenswert?

So das compilieren funktioniert mit der WINAVR Software.
Was ich jetzt nur noch nicht verstehe ist, warum dieser Code in diesem
C Programm? Was muss ich da tun wenn ich den ATMEGA8535 betreiben
will?

---------------------
#if defined(_AVR_AT90S2313_)
#  define OC1 PB3
#  define OCR OCR1
#  define DDROC DDRB
#elif defined(_AVR_AT90S2333_) || defined(_AVR_AT90S4433_)
#  define OC1 PB1
#  define DDROC DDRB
#  define OCR OCR1
#elif defined(_AVR_AT90S4414_) || defined(_AVR_AT90S8515_) || \
      defined(_AVR_AT90S4434_) || defined(_AVR_AT90S8535_) || \
      defined(_AVR_ATmega163_)
#  define OC1 PD5
#  define DDROC DDRD
#  define OCR OCR1A
#elif defined(_AVR_ATmega8_)
#  define OC1 PB1
#  define DDROC DDRB
#  define OCR OCR1A
#  define PWM10 WGM10
#  define PWM11 WGM11
#elif defined(_AVR_ATmega64_) || defined(_AVR_ATmega128_)
#  define OC1 PB5
#  define DDROC DDRB
#  define OCR OCR1A
#  define PWM10 WGM10
#  define PWM11 WGM11
#else
#  error "Don't know what kind of MCU you are compiling for"
#endif

#if defined(COM11)
#  define XCOM11 COM11
#elif defined(COM1A1)
#  define XCOM11 COM1A1
#else
#  error "need either COM1A1 or COM11"
#endif
-----------------------------

von Andreas Hesse (Gast)


Lesenswert?

Hallo,

normalerweise schreibe ich nur in der Batchdatei den betreffenden Wert
in mcutype herein. Das sollte ausreichen.
Mit den #ifdef... Anweisungen kannst Du das gleiche Programm ohne
Änderung auf verschiedene Controller übertragen. Ansonsten kann es
sein, das Du bei einem anderen Controller Register und Pin-Definitionen
anpassen musst.

Gruss
Andreas

von Jörg Wunsch (Gast)


Lesenswert?

Du musst mein demo.c, das jeder avr-libc und damit auch jedem WinAVR
beiliegt, hier nicht unbedingt re-posten. ;-)

Sorry, aber wenn man nicht weiß, wie man ein Auto fährt, muss man das
eben lernen.  Wenn man mit einer Programmiersprache nicht umgehen
kann, muss man das auch lernen.  Der C-Präprozessor und seine
Benutzung gehören einfach zu so grundlegenden Methoden bei der
Programmierung in C, dass Dir Andreas hier zwar eine völlig
zutreffende Antwort gegeben hat (demo.c soll auf möglichst vielen
verschiedenen Controllern lauffähig sein, da es so eine Art ,,Hello
world!''-Programm ist), aber ich habe meine Zweifel, ob Du damit
wirklich nennenswert weiter kommst.

1.) Bitte lerne wenigstens die Grundlagen von C, bevor Du es benutzt.
Das geht übrigens auf einem Universalcomputer deutlich einfacher als
auf einem Controller.  Den GCC gibt's auch für Windows, und er
,,benimmt'' sich dort fast genauso (wird also auch von einer
Kommandozeile aufgerufen bzw. mam kann das über ein Makefile machen).

2.) Bitte beherzige den Rat, den Dir Patrick (OldBug) und Martin
(mthomas) gegeben haben, und arbeite erstmal die verfügbare Doku
durch, bevor Du einfach nur endlos Fragen stellst.  Das kostet sicher
ein paar Tage, aber wenn Du Dir dabei Mühe gibst, es auch zu
verstehen, ist das die Grundvoraussetzung dafür, dass Du später auch
selbstständig Deine eigenen Probleme lösen können wirst.  Fragen wird
Dir sicher hier jeder gern beantworten, aber es wird Dir niemand
freiwillig Deine kompletten Probleme als unbezahlten Job lösen wollen
und/oder die umfänglich und mit viel Aufwand geschriebenen
Dokumentationen und Tutorials nochmal Stück für Stück als Antwort auf
einen Thread zitieren wollen.

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.