PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kennt sich einer mit dem C-Compiler avr-gcc aus?



17.12.2003, 07:48
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?

Andreas
17.12.2003, 14:00
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

Kjion
17.12.2003, 15:52
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

tlassak
23.12.2003, 16:41
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

Kjion
23.12.2003, 18:13
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

Frank
23.12.2003, 22:45
Ist in dem WinAVR Packet auch eine ISP Übertragungsfunktion integriert? Oder wie bekommt man die Programme auf den Chip?

Kjion
24.12.2003, 00:28
Ich glaub es ist schon was mit drinnen. Ich benutze allerdings lieber PonyProg zum Flashen der AVRs .... das funktioniert super.

MfG Kjion

25.12.2003, 22:32
Das WinAVR Packet ist ja 18 MB groß! Um himmels Willen was ist denn da alles drin?

Frank
26.12.2003, 00:16
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

Kjion
26.12.2003, 00:16
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

Frank
26.12.2003, 00:26
Ja hab ich auch schon gesehen, nur so recht find ich noch nicht den Einstieg, was man wie machen muß (siehe Beitrag oben)!

Frank
26.12.2003, 12:48
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

Kjion
26.12.2003, 13:04
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

Frank
26.12.2003, 21:44
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

28.12.2003, 02:01
Hier noch ein interessanter Link für den Einstieg
http://www.avrfreaks.com/Tools/ToolFiles/376/install_config_WinAVR.pdf

davil
28.12.2003, 13:39
Ein paar Beispiele findet man auch hier: http://homepage.sunrise.ch/mysunrise/pfleury/avr-software.html

davil
28.12.2003, 13:41
Schade das es aber immer noch kein gutes aktuelles Tutorial gibt.

<kyion> Wolltest Du nicht was schreiben?

Kjion
28.12.2003, 15:37
Kommt noch .... hab leider im Moment wenig Zeit dafür, ist aber schon in Arbeit ...

Phunky
28.01.2004, 20:05
: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

28.01.2004, 20:21
Schau mal hier rein:
http://www.kreatives-chaos.com/index.php?seite=avrgcc

Kjion
28.01.2004, 20:54
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

Phunky
29.01.2004, 03:45
: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!

Kjion
29.01.2004, 08:46
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

Phunky
29.01.2004, 13:21
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!

Kjion
30.01.2004, 14:55
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

Phunky
22.02.2004, 14:28
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?

Phunky
22.02.2004, 23:54
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

02.07.2004, 12:26
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 ??????