Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Kennt sich einer mit dem C-Compiler avr-gcc aus?
Hallo
Ich will mit avr-gcc angangen zu programmieren. Mit C kenne ich mich gut aus, aber mit der ganzen Handhabung von diesem AVR-Studio über AVR-GCC bis zum Programm übertragen in den AVR, da habe ich einfach nicht so den Durchblick. Auch mit der Beschreibung im Mikrokontrollernet steig ich nicht so durch, die scheint wohl auch veraltet zu sein wie es dort steht.
Kann denn hier jemand mal Schritt für Schritt erläutern wie das abläuft? Installion der Entwicklungsumgebung, Compiler bis zum ersten Programm?
Hallo,
eine besonders gute Schritt für Schritt Dokumentation habe ich auch noch nie gesehen, zumindest nicht für Windows. Vielleicht ist das ja mal Ansporn für jemanden so etwas anzugehen.
Gefunden hab ich folgendes:
Beschreibung für Linux-User:
http://www.linuxfocus.org/Deutsch/March2002/article231.shtml
Download und Beschreibung in Englisch:
http://www.avrfreaks.net/AVRGCC/download.php
HTML-Tutorial für die C-Programmierung des Atmels:
http://www.telematik.informatik.uni-karlsruhe.de/~hof/hiwi/avr/Atmel.zip
Viele Grüße Andi
Am einfachsten ist es wenn du dir das WinAVR Packet runterlädst. Da ist dann alles dabei und das funktioniert ohne das man groß Umgebungsvariablen oder so was einstellen muss.
Siehe hier :
http://sourceforge.net/project/showfiles.php?group_id=68108&release_id=183927
Dabei ist dann auch das Programmes Notepad bei dem man den Compiler als Tool einbinden kann, ansonsten kann man auch jeden Texteditor nehmen und den Compiler über die Kommandozeile starten...
Funktioniert wunderbar und ist net so sehr kompliziert
MfG Kjion
am besten ghet's mit den beispiel files (gcctest1 .. gcctest9)
sobald die environment vars richtig gesetzt sind, einfach "make" tippen und los geht's
in dem makefile ist noch der µc type anzupassen
sobald die environment vars richtig gesetzt sind
selbst darum braucht man sich mit dem WinAVR Packet nicht mehr zu kümmern. Also nur noch installieren, neustarten und viel Spass haben ;)
MfG Kjion
Ist in dem WinAVR Packet auch eine ISP Übertragungsfunktion integriert? Oder wie bekommt man die Programme auf den Chip?
Ich glaub es ist schon was mit drinnen. Ich benutze allerdings lieber PonyProg zum Flashen der AVRs .... das funktioniert super.
MfG Kjion
Das WinAVR Packet ist ja 18 MB groß! Um himmels Willen was ist denn da alles drin?
Hi Kjion ,
ich hab nun das WinAVR Packet auch mal geladen und installiert. Eine IDE oder sowas scheint es hier ja leider nicht zu geben.
Kannst Du mir mal sagen wie man am besten die ersten Schritte macht, wenn man einen AVR Mega 16 dazu bringen will das er z.B. eine LED an Port PB0 zum blinken bringt.
So ganz steig ich da noch nicht durch? Muß man eine MAKE-Datei dafür erstellen? Wie würde die aussehen?
Vielleicht hat jemand ja mal ein Beispiel und ein paar Tips für AVR Einsteiger parat!
Gruß Frank
Sind über 1000 Dateien ;)
Ist halt alles dabei. Compiler, Libarys usw. .... bei der neuesten Version sogar ein Simulator glaub ich ....
Loht sich aber, auch wenns 18 MB sind ;)
MfG Kjion
Ja hab ich auch schon gesehen, nur so recht find ich noch nicht den Einstieg, was man wie machen muß (siehe Beitrag oben)!
Ich hab noch eine gute Seite für AVRGCC-Einsteiger gefunden. STammt von Dirk Baumann. Schaut mal unter guter AVR-Seiten hier (https://www.roboternetz.de/phpBB2/links.php?action=go&link_id=163)
Da findet ihr eine gute Beschreibung wie ihr das oben genannte WinAvr Paket nutzt um ein Programm zu installieren. Es sind auch zahlreiche Bilder vorhanden, so das ihr das Notpad2 schnell entsprechend konfigurieren könnt. Im Grunde ist es dann fast so komfortabel wie in einer echten IDE.
Das kurze Beispiel kann 1:1 auch auf einem Mega16 kompiliert werden. Ihr müsst nur statt dem dort angegebenen Controllertyp "atmega16" eingeben.
Das Programm sah so aus:
#include <avr/io.h>
//************************************************** *********
char i=0; //Globale 8-Bit Variable
//************************************************** *********void warten(int t) //ermöglicht Pausen
{
int h;
for (;t>0;t--)
{
for (h=1600;h>0;h--) {}
}
return;
}
//************************************************** *********
int main(void)
{
char i=0; //Lokale 8-Bit Variable
//Setzen der Ein + Ausgänge
outp(0xFF,DDRB); //PortB: alles als Ausgäng
outp(0xFF,DDRD); //PortD: alles als Ausgang
//Ports digital ansteuern
outp(0x0,PORTB); //Alle Ausgänge werden auf low gesetzt
outp(0x0,PORTD); //Alle Ausgänge werden auf low gesetzt
while (1)
{
i++;
outp(i,PORTB);
warten (200);
}
}
Es ist ein 8-Bit Zähler. Dieser hat zur Folge das zum Beispiel eine LED an Port PB0 blinken würde. Ist also ein erstes gutes Testprogramm für absolute AVR-Laien.
Gruß Frank
Das Programm ist aber leider veraltet. Die neueren Version des Compilers erlauben auch direkte zuweisungen:
PORTB = 0xff;
bzw.
i = PORTB;
Man kann die Ports also wie Variablen benutzen und muss nicht den Umweg über outp() gehen. Deswegen wird diese Funktion auch irgendwann aus dem Compiler verschwinden...
Außerdem kann man die integration in das Programmers Notepad noch einfacher machen wenn man ein makefile benutzt...
Ich schreib gleich mal eine Anleitung dazu...
MfG Kjion
Aha, danke für Hinweis! Das klingt ja noch besser. Das mit der integration ins Notepad ist aber garnicht so schlecht, damit kommt man schon ganz gut klar.
Gib mal Nachricht wenn Du ne Anleitung oder noch weitere Tips hast. Auch ein paar modernere Beispielprogramme wären in diesem Fall nicht schlecht. Ich finde der Lerneffekt ist da immer am größten.
Gruß Frank
Hier noch ein interessanter Link für den Einstieg
http://www.avrfreaks.com/Tools/ToolFiles/376/install_config_WinAVR.pdf
Ein paar Beispiele findet man auch hier: http://homepage.sunrise.ch/mysunrise/pfleury/avr-software.html
Schade das es aber immer noch kein gutes aktuelles Tutorial gibt.
<kyion> Wolltest Du nicht was schreiben?
Kommt noch .... hab leider im Moment wenig Zeit dafür, ist aber schon in Arbeit ...
:x
Hallo AVR Coder!
Also ich hab mir mal das WinAVR Packet runtergeladen, und im "Programmers Notepad" die Tools (make) eingetragen, wenn ich nun bei dem Makefile den Make aufrufe kommt im Ausgabefenster:
makefile:1: /include/make1: No such file or directory
Das hier ist das Makefile von dem gcctest1:
include $(AVR)/include/make1
MCU = at90s8515
TRG = gcctest1
SRC = $(TRG).c
ASRC =
LIB =
INC =
CPFLAGS = -g -O3 -Wall -Wstrict-prototypes -Wa,-ahlms=$(<:.c=.lst)
LDFLAGS = -Wl,-Map=$(TRG).map,--cref
include $(AVR)/include/make2
$(TRG).o : $(TRG).c
Dann hab ich mal die include Zeilen raus (/make1 gibts ja auch überhaupt nicht!) und dann kommt folgende Ausgabe:
cc -c -o gcctest1.o gcctest1.c
process_begin: CreateProcess((null), cc -c -o gcctest1.o gcctest1.c, ...) failed.
make (e=2): Das System kann die angegebene Datei nicht finden.
woher stammt die erste Zeile ?!?! (cc.....)
Wäre Nett wenn mir da einer helfen könnte, hab jetzt den halben Nachmittag mit dem Zeugs verbracht und im Netz rumgegoogelt, zum eigentlichen programmieren bin ich aber immer noch nicht gekommen :-(
MfG
Stefan
Schau mal hier rein:
http://www.kreatives-chaos.com/index.php?seite=avrgcc
erstellt dir mal mit MFile ein neues Makefile.
Ich vermutet, dass das was du da hast veraltet ist. Lad dir am besten die aktuellste Version runter...
Mich würde mal interessieren was du zu dem Tutorial meinst. Ist es verständlich, wo sollte was geändert/ergänzt werden ??
MfG Kjion
:wink:
Hi! Danke erstmal für die Hilfe. Der Link hat mich schon mal ein gutes Stück weitergebracht (die Sache mit dem mfile). Hab alles mal upgedated und alles brav wie beschrieben gemacht... Jetzt kann ich schon mal meine Progrämmchen compilieren!
Hab im Moment nur einen kleinen Bug: Habe den Beispiel Code gcctest7 mal kompilieren wollen (benutzt uart.h), da gibts ne warning "assignment discards qualifiers from pointer target type". Hab noch nicht rausgefunden was das bedeutet, naja, wird schon noch kommen...
Dann hat sich noch eine Frage aufgeworfen Zwecks Programmierung: Hab ich das richtig verstanden dass ich mit z.B. mit dem AVR-Prog AN910 dann gleich via dem make commando meinen mC beschreiben kann ? Und kann ich diesen Programmer gleichzeitig mit dem AVR Studio benutzen ?
Viele Grüße
Stefan
P.S. Die Doku werd ich mir nochmal genauer ansehen, wäre schon wenn die anderen auch noch helfen kann!
Dann hat sich noch eine Frage aufgeworfen Zwecks Programmierung: Hab ich das richtig verstanden dass ich mit z.B. mit dem AVR-Prog AN910 dann gleich via dem make commando meinen mC beschreiben kann ?
Das Programmieren über make sollte auf jeden Fall funktionieren ( Ist mit meinem Programmer für den Parallelport übrigens schnell als PonyProg ;) ). Man muss das dann nur im Makefile einstellen...
Und kann ich diesen Programmer gleichzeitig mit dem AVR Studio benutzen ?
Ich weiß leider nicht was du jetzt genau meinst. Willst du den Chip vom AVR Studio aus programmieren ??
Wegen dem Fehler beim Compiliern: Stell doch einfach mal den Code hier rein. Ansonsten ist es schwierig dir da zu helfen.
MfG Kjion
8)
Hi Kjion!
Hab mal den Code mit angeheftet wie "befohlen" :-) ...ist aus den gccavr beispielen, Nr.7
Hab mich mit dem Programmer etwas unklar ausgedrückt: Ich meinte den Programmer, auf den du einen Link in Deiner Doku hast. Ist der für den Parallelport mit dem TTL IC drauf. Mit diesem Programmer kann ich also direkt über make (auch unter win 2000/xp ??? ...ist ja immer so ne Sache mit IO/Zugriff) den AVR programmieren? Und wird dieser Programmer auch vom AVR-Studio unterstützt ?
Viele Grüße, Stefan!
Hi,
ich hab mir das Beispiel mal angesehen und festgestellt, dass es etwas veraltet ist. Zum Beispiel muss man die Register nicht mehr über outp() beschreiben, sondern kann das direkt machen...
PORTD = 0x44;
Ich hab mal ne veränderte Version angehängt, ich weiß allerdings nicht ob alles so stimmt ;), zumindest lässt die Datei sich so compilieren...
Ich werd in den nächsten Tagen mal ein paar Beispielprogramme für den Compiler schreiben und sie dann zu Tutorial dazustellen...
Ob der Programmer vom AVRStudio unterstützt wird weiß ich nicht. Wegen Windos XP/2000 musst du das mal ausprobieren. Ich hab überall nur Win98Se laufen, daher hab ich damit nie Probleme ;)
MfG Kjion
Hi!
So, hab mir inzwischen mal den Programmieradapter von lancos (ponyprog-seite) nachgebaut, den für den parallel-port mit dem 74hc244 drauf. Dann hab ich mir zum basteln nen altes Laptop besorgt, ist nen P120 (Compaq) mit Win98SE drauf und hab mir da PonyProg installiert. Dann nach WinAVR drauf, das einrichten klappt dank Deiner Doku super! Danke! Dann noch auf nem Steckbrett schnell ne Schaltung mit nem AT90S2313 aufgebaut (Vbb, GND, Quarz und Cs, und die Programmierleitungen angeklemmt), aber ausser Spesen nix gewesen. Wenn man in PonyProg den Adaptertest macht sacht er "Test OK", aber wenn ich dann z.B. die Fuse-Bits auslesen will krieg ich nur ein "Device Missing Or Unknown Device (-24)". Hm, schade, also Oszi angeworfen und das Zeug mal untersucht. Hardwaremäßig scheint der Adapter zu funktionieren (z.B. wird die Resetleitung während dem Versuch die Fuses auszulesen 5x nach 0 gezogen, an den anderen Leitungen (MOSI, MISO, SCK) passiert auch was, kenn mich allerdings nicht weiter mit dem SPI Protokoll aus...), der Quarz schwingt auch fleißig mit 4 MHz vor sich hin.
Hätte da jemand vielleicht noch einen heißen Tip wie ich weiter verfahren soll ? Bitte bitte melden, kanns kaum erwarten bis mein erster AVR programmiert ist, die Dinger sind ja echt geil!
Viele Grüße, Stefan
hijacker
22.02.2004, 15:45
Wie sind die Kabel vom/zum Programmieradapter und hast Du mal den 74HCT244 ausprobiert?
Hast Du auch die Beschaltung des AVR nochmal überprüft?
Tach!
Danke für den Hinweis, ja, wenn man nen Oszi rumstehen hat sollte man mit dem dann auch mal alles verfolgen, da hat einfach ne Verbindung (MISO) auf dem Prog-Adapter gefehlt, danach ging alles auf Anhieb, mit PonyProg und mit dem Programmer im WinAVR, alles SUPER! AVR ist echt geil, die ersten Programme rennen schon!
P.S.
Falls es sowas nicht eh schon gibt:
Hab ne C-Bibliothek schrieben um den TRX433 (433MHz Datentransceiver von Conrad) anzusteuern, wer's haben will möge kurz bescheid sagen!
Vielel Grüße und allen viel Spaß mit unserem schönen AVR-Spielzeug
Stefan
Hallo Leute
bin neu im Umgang mit dem AVR Tools. Habe aber die gleichen Probleme
beim compilieren wie Eingangs beschrieben.
process_begin: CreateProcess((null), avr-gcc --version, ...) failed.
make (e=2): Das System kann die angegebene Datei nicht finden.
make: *** [gccversion] Error 2
Habe ein einfaches C file für den ATTiny 12 und bin die, im übrigen sehr gute, Anleitung unter kreatives-chaos.com durchgegangen. Nach dem download und ausführen von mfile erhalte ich dann obigen Fehlercode.
Habe dann auf der Konsole die Version geprüft und erhalte folgende Ausgabe:
GNU make version 3.78.1 by Richard Stallman and Roland McGarth ....
Liegt obige Fehlermeldung an der make Version ? Wenn ja gibt es bereits ein Update (bitte link mit angebe, Danke) ?
Benutze als OS Windows XP ??????
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.