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?
Hallo, makefile oder Batch siehe: http://www.mikrocontroller.net/forum/read-4-84831.html Ich verwende Batchdateien. Gruss Andreas
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
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
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.
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?
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
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 -----------------------------
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.