PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMega2560 Programmierung



robo junior
28.12.2006, 19:15
Hallo

Ich hab ein Problem bei der Compilierung eines Programms für den ATMega2560.
Ich hab die neueste WinAVR Version. (20060421)
In MFile konnte ich aber den ATMega2560 gar nicht auswählen. Ich habe dann direkt in das Makefile geschrieben "MCU = atmega2560".
Beim Compilieren kommt allerdings die Fehlermeldung "error: MCU `atmega2560' supported for assembler only"
Heißt das, dass man den ATMega2560 nur in Assembler programmieren kann? Oder habe ich einfach sonst irgendwas falsch gemacht/ falsch eingestellt? In der Anleitung zum RN-Mega2560 Modul steht ja auch, dass man auch in c programmieren kann.
Vielleicht könnt ihr mir ja weiterhelfen

Hubert.G
28.12.2006, 20:36
Ich habe mal probiert in AVR-GCC den ATmega2560 einzugeben, da hat nichts gemeckert, testen kann ich es mangels µC nicht. Version ist 3.4.3 vieleicht ist bei deinem WinAVR noch eine ältere Version dabei.

Hubert

robo junior
28.12.2006, 23:02
Hallo Hubert, zuerst mal Danke für deine Antwort.

Ich hab das jetzt mal über die Eingabeaufforderung ausprobiert. Ich hab eingegeben:

> avr-gcc -mmcu=atmega2560 main.c -o main.elf
Fehlermeldung ist wieder die gleiche:

unknown MCU 'atmega2560' specified
Known MCU names:
Liste (der atmega2560 steht da auch nicht dabei)
error: MCU 'atmega2560' supported for assembler only


Ich hab angeblich die Version 3.4.6 (avr-gcc -v : gcc version: 3.4.6)
außerdem hab ich mir mal mit avr-gcc --target-help die unterstützten Controller anzeigen lassen. Da ist der atmega2560 aber auch nicht dabei.
Was hast du denn angegeben, dass er den Controller akzeptiert hat? Hat sonst noch jemand eine Idee was ich falsch mache bzw. ob das überhaupt geht?

Hubert.G
29.12.2006, 10:44
Ich starte vom Programmers-Notepad aus und habe nur im Makefile den 2560 als MCU eingegeben. Problemlos ohne meckern compiliert, obs richtig ist kann ich natürlich nicht sagen da ich nicht testen kann. In der Liste steht er allerdings auch bei mit nicht drinnen.
Hubert

robo junior
29.12.2006, 11:14
Hallo

So hab ich es auch schon ausprobiert. Hat bei mir aber auch nicht funktioniert. Hast du einfach von Hand in das Makefile reingeschrieben "MCU=atmega2560"? So hatte ich es nämlich gemacht.

Ich hab jetzt mal noch im Forum von AVR-Freaks gesucht und auch ein Thema gefunden (Link (http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=42536&highlight=2560))
Dort steht allerdings, dass man mit gcc gar keine Programm für den ATMega2560 machen könnte bzw. nur indem man das Programm für den ATMega1280 kompiliert und auf dem 2560 laufen lässt, wobei dann bestimmt einschränkungen vorhanden sind und das wohl auch nicht so ganz einfach ist.

Ich hab einfach mal mein Makefile und ein Testprogramm als Anhang eingefügt. Vielleicht ist ja sonst irgendwas falsch.

Hubert.G
29.12.2006, 22:07
Also jetzt muss ich alles zurücknehmen, habe das ganze nochmal probiert mit deinem makefile und dann nochmal mit dem meinen, jetzt kommt auch bei meinem der selbe Fehlertext wie bei dir. Ich weiss nicht ob ich schlecht geschaut habe oder ob da bei mir was falsch gelaufen ist. Aber es sieht so aus als ob der 2560 im gcc einfach noch nicht supported wird.

Hubert

robo junior
29.12.2006, 23:57
naja, trotzdem Danke für deine Hilfe.
Vielleicht gibts ja doch noch irgend eine andere Möglichkeit, denn es steht ja bei dem Board (RN-Mega2560 Modul) dabei, dass es mit C (gcc) programmiert werden könnte. Also wenn jemand eine Idee hat, immer her damit.

linux_80
30.12.2006, 00:02
Hallo,
in der neusten Avr-libc sind die 256er dabei,
wer Cygwin o.ä. drauf hat, oder drauf tun will, kann sich ja mal versuchen,
die avr-libc, binutils und dann gcc selber bauen.

Eine Uraltbeschreibung hab ich hier gefunden:
http://electrons.psychogenic.com/modules/arms/art/16/Letsbuildatoolchain.php

robo junior
30.12.2006, 00:26
Hallo linux_80!

Kannst du mir etwas genauer erklären, was ich, vor allem auch wie, neu installieren muss?
Ich hab allerdings Windows (deswegen bringt mir der Link zu der Beschreibung nicht so viel). Ich hab WinAVR installiert und weiß nicht, wie ich mit den Source-Files selbst gcc bauen kann.
Kann ich diese neue Version der AVR-libc getrennt installieren oder muss ich da ganz was neues installiere?

linux_80
30.12.2006, 01:59
Mit einfach installieren ist es nicht getan,
solange es kein neues WinAVR gibt, kann man es, wie schon gesagt, nur selber bauen,

Du holst Dir Cygwin ( http://www.cygwin.com ) und probierst ob es geht,
hab eine neuere Beschreibung gefunden:
http://www.nongnu.org/avr-libc/user-manual/install_tools.html

Ist aber ein haufen Arbeit, in der Zeit kommt, glaub ich, auch ein neues WinAVR raus ;-)

robo junior
30.12.2006, 11:27
okay, probier ich dann mal aus, vielleicht bekomm ichs ja hin.

robo junior
02.01.2007, 11:51
Hallo

ich hab jetzt eine Lösung gefunden. (für alle Windowsnutzer). Es gibt von Atman ein Update für WinAVR mit der neuen gcc-4.1.1 und der libc die dann auch den AtMega2560 unterstützt. Zip-File muss nur im WinAVR Verzeichnis entpackt werden (überschreibt die alten gcc Dateien).

Das bauen eines eigenen Toolchain unter Linux (Suse 10.1) bzw Cygwin hab ich irgendwann aufgegeben, hat leider nicht so funktioniert wie ich das wollte (kenn mich einfach viel zu wenig mit der Kommandozeile aus) aber es läuft ja jetzt auch so in Windows.

ulis
04.01.2007, 08:38
seit 1. Jan gibt es einen neuen winavr-gcc Compiler. Dieser unterstützt den Mega 2560(beta status) auch unter win.

Für Linux gibts auch ein schönes Script unter avrfreaks.net zum installieren von gcc +avr(inkl. patches für den mega2560).

Leider ist die Welt nicht so einfach das man Code der für den Mega1280 auch für den 2560 nehmen kann. Mag viell in Einzefällen funktionieren. Kann aber auch zu einem bösen Erwachen führen.

Atman ist auch schön, aber leider kostenpflichtig....
Meien Empfehlung. Kauf dir bei reichelt den 1280. Sobald der 2560 etwas besser unterstützt wird kannst du ja immer noch(da pinkompatibel) auf den 2560 wechseln.