www.mikrocontroller.net

Forum: Compiler & IDEs Probleme mit WINAVR


Autor: Franki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, aber RTFM!

Autor: Andreas Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

makefile oder Batch

siehe:

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

Ich verwende Batchdateien.

Gruss
Andreas

Autor: Franki (Gast)
Datum:

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

Autor: Franki (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Franki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja verwendest du den WINAVR und speicherst die Datei in eine C Datei ab?

Autor: Franki (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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_con...
unklar?

Autor: Andreas Hesse (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Franki (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
-----------------------------

Autor: Andreas Hesse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.