Forum: Mikrocontroller und Digitale Elektronik ATmega644 programmieren


von Ron (Gast)


Lesenswert?

Hallo

Ich wollte gerade "mal eben" meinen ATmega32 durch einen ATmega644 
ersetzen. Und mal abgesehen davon, dass der Code natürlich angepasst 
werden muss, suche ich jetzt ein passendes ISP Programm, denn yaap und 
PonyProg erkennen den µC anscheinend nicht :-(
Was benutzt ihr?

von Gast (Gast)


Lesenswert?

> Was benutzt ihr?

Das was der Hersteller der Controller anbietet: AVR-Studio

von Michael U. (Gast)


Lesenswert?

Hallo,

Pony in der Version 2.07a kennt den Mega664.

Gruß aus Berlin
Michael

von gast (Gast)


Lesenswert?

es sollte mittlerweile auch genug DIY programmer geben die STK500 
kompatibel sind
damit lässt es sich sehr bequem aus dem AVR studio flashen


zB : http://www.ullihome.de/index.php/Hauptseite#USB_AVR-ISP
diesen verwende ich auch

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Außerdem noch der obligatorische Hinweis auf avrdude.

von Ron (Gast)


Lesenswert?

>Das was der Hersteller der Controller anbietet: AVR-Studio

Leider habe ich nur ganz einfache ISP Adapter 
(http://rumil.de/hardware/avrisp.html) Parallel und Seriell. Die gehen 
AFAIK doch nicht mir AVR Studio oder?

>Pony in der Version 2.07a kennt den Mega664.

Leider klappt's nicht. Den 32er erkennt Pony, den 644er nicht.

von core (Gast)


Lesenswert?

zieh dir die bascom-demo runter, damit kannste dann deine bin, hex usw 
laden, ohne auch bascom benutzen zu müssen.

von Matthias T. (emtopel)


Lesenswert?

Hi,

Ron wrote:
>>Pony in der Version 2.07a kennt den Mega664.
>
> Leider klappt's nicht. Den 32er erkennt Pony, den 644er nicht.

Also zu Ponyprog:
Version 2.07a kennt den Mega664 laut Deviceliste, meldet jedoch Fehler 
bei Programmierversuch des Mega664.  (Bug in der Mega664-Erkennung)

Möglichkeit 1: Versuche bei Auftreten der Fehlermeldung über den Button 
"Ignorieren" trotzdem den Atmega664 zu beschreiben.

Möglichkeit 2: Es giebt für Ponyprog V2.07a ein Patch im Ponyprog-Forum 
des Anbieters der den Mega664-Fehler überschreibt.   (Neue EXE-Datei)
Suche hierzu im dortigen Forum nach dem Mega664, da solltest Du fündig 
werden.

MfG
Metty

von Ron (Gast)


Lesenswert?

Danke schon mal. Habe jetzt mit Bascom probiert und das scheint schon 
mal so halbwegs zu klappen. Er erkennt immerhin den Chip und kann die 
Fusebits setzen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nochmal der Hinweis auf avrdude. ;-)

von Ron (Gast)


Lesenswert?

>Nochmal der Hinweis auf avrdude. ;-)

Danke, aber ich finde das Ding sehr schelcht dokumentiert. Ich habe 
einfach keine Lust, mich durch das gewurschtel von fehlenden ANleitungen 
durchzuwühlen, weil es zwar toller Programmierer gibt, aber weniger, die 
Ihr Ding auch anderen erklären können. Auf der Sourceforge Seite ist ja 
nicht mal klar zu erkennen, worum es geht und was das Teil unter welchem 
System wie macht. Ich installiere mir kein Unix nur dafür und wie ich 
das dann in WinAVR einbinde, erschließt sich mir nicht. Aber vielleicht 
hast Du eine tolle Seite, wo das verständlich steht?

Bis dahin: Bascom ist keine Lösung, sondern wirklich erst PonyProg mit 
Patch (http://ponyprog.sourceforge.net/phorum/read.php?2,380). Siehe 
auch mein Problem hier: Beitrag "ATmega32 -> 644". Kann 
einen zur Verzweifelung bringen so was. Und ich hasse wirklich PonyProg. 
Das braucht ewig und nervt mit Fragen. Aber ich hasse noch mehr 
schlechte Dokus (also kein AVRDude ohne brauchbare Instruction)...

von ö (Gast)


Lesenswert?

ich habe den 644 immer mit avrdude programmiert... u. so schlecht ist 
das ganicht dokumentiert. man muss lediglich den programmieradaptertyp 
u. den controllertyp angeben u. sagen dass man programmieren (schreiben) 
will, die datei angeben u. sagen dass es intelhex format ist. u. schon 
wird der 644 problemlos programmiert

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ron wrote:

>Nochmal der Hinweis auf avrdude. ;-)

> Danke, aber ich finde das Ding sehr schelcht dokumentiert.

Ach, hast du die Doku denn gelesen?

> Auf der Sourceforge Seite ist ja
> nicht mal klar zu erkennen, worum es geht und was das Teil unter welchem
> System wie macht.

Sourceforge?  Dass du dort keine Doku zu avrdude findest, wundert mich
nicht.

Avrdude ist hier zu Hause:

https://savannah.nongnu.org/projects/avrdude/

OK, die Doku könnte man mal separat bauen und ins Download legen.
...
Habe ich gleich mal mit gemacht. ;-)  Die wäre aber auch bei
WinAVR mit dabei, und irgendwoher musst du ja dein Binary ohnehin
bekommen.

> Ich installiere mir kein Unix nur dafür und wie ich
> das dann in WinAVR einbinde, erschließt sich mir nicht.

Das WinAVR-Makefile-Template hat sogar schon Beispiele, da musst
du nur noch in zwei Make-Variablen den Namen und Port deines
Programmers hinterlassen...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

p.s.: Ich habe die Doku auch noch in der Webseite verlinkt:

http://www.nongnu.org/avrdude/

von Ron (Gast)


Lesenswert?

Freut mich, daß ihr mich gleich so ernst nehmt und Euch Gedanken macht.
Ist Recht: nicht Sourceforge. Hatte ich verwechselt, da ich es schon 
einige Zeit nicht mehr betrachtet hatte und die Seite 
http://savannah.nongnu.org/projects/avrdude mich ein wenig daran wohl 
erinnerte - zumindest, was das Chaos angeht. Sorry, aber ich find's 
blöd. Mag ja ganz toll Projektbezogen sein, aber mich als (durchaus 
fähiger) Anwender überzeugt's nicht. Vielleicht gehe ich bei der Suche 
nach Infos aber auch anders vor als andere?

Ich habe es jetzt noch mal versucht, und siehe, es läuft aber dabei hat 
mir die Homepage vom Projekt gar nicht helfen können, sondern ich habe 
alles einzeln zusammensuchen müssen. Zum Beispiel was soll man mit einem 
tar.gz machen? Klar, ich kann auch Unix und bei meinem Web Server weiß 
ich, was das ist aber der durchschnittliche Windows Nutzer? Und waozu 
auch? Wie sich dann zeigte, ist avrdude bei WinAVR dabei, aber das 
erfährt man auch nur nebenbei beim Suchen nach Infos. Und dann fehlte da 
die Datei libusb0.dll (warum auch immer), also die auftreiben. Und dann 
muß man install_giveio.bat ausführen und so weiter und so fort. Das ist 
nicht Windows-Consumer-Freundlich. Bis man das alles zusammen hat. Und 
dann will ich einfach keine Fuse-Bits auf Kommandoebene setzen. Die 
Zeiten sind vorbei! Ich will ein GUI also auch da wieder das Spiel der 
Doku... Aber ich kapier ja auch nicht, warum es noch Leute gibt, die 
meinen, man muß Bits per Assembler schubsen...
Nun, es scheint erst mal zu laufen.

Und die wichtigste Erkenntnis dabei war, daß es ja gar nicht an meinem 
Code lag, sondern daran, daß die andere Programmersoftware Mist baute. 
Vielleicht lernt ja jemand mal aus meinem Rätselraten...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ron wrote:

> http://savannah.nongnu.org/projects/avrdude mich ein wenig daran wohl
> erinnerte - zumindest, was das Chaos angeht. Sorry, aber ich find's
> blöd. Mag ja ganz toll Projektbezogen sein, aber mich als (durchaus
> fähiger) Anwender überzeugt's nicht.

Naja, es ist halt eine Projektseite, die hat ein vorgefertigtes
Layout, dass man nicht für jedes Projekt ändern kann.  Aber von dort
zur "Homepage" zu finden, sollte doch nicht wirklich schwer sein,
oder?

> Zum Beispiel was soll man mit einem
> tar.gz machen?

Wenn man nicht auf Unix ist und einen tar besitzt, vielleicht einfach
mal durch Winzip schicken?

> Wie sich dann zeigte, ist avrdude bei WinAVR dabei, aber das
> erfährt man auch nur nebenbei beim Suchen nach Infos.

Ach?  Das steht doch aber bei WinAVR ziemlich in jedem Announcement.
Wo willst du es denn sonst gern noch haben?

> Und dann fehlte da
> die Datei libusb0.dll (warum auch immer), also die auftreiben.

Warum fehlt die?  Das wäre ein WinAVR-Bug.

> Und dann
> muß man install_giveio.bat ausführen und so weiter und so fort.

Auch hier hätte ich erwartet, dass WinAVR das von allein tut.  Aber
ich hab' kein Windows.  giveio braucht aber andererseits auch nicht
jeder, sondern nur die, die einen billigen Parallelport-Bitbang-
Dongle benutzen.  (Das werden wahrscheinlich im Zeitalter von
USB-only-Computern mit der Zeit immer weniger.)

> Und
> dann will ich einfach keine Fuse-Bits auf Kommandoebene setzen. Die
> Zeiten sind vorbei!

So?

Die Zeiten von bunten Bildchen sind bei mir seit dem Kindergarten
vorbei...  Mittlerweile kann ich nämlich lesen und schreiben. ;-)

Es gab mal einen Versuch für ein GUI, aber dafür haben sich nicht
wirklich nennenswert Entwickler interessiert.  Der Original-Entwickler
hat neben Familie und Beruf keine Zeit mehr dafür, schade.
Mittlerweile gäbe die interne avrdude-Struktur relativ einfache
Möglichkeiten, ein GUI an Stelle der Kommandozeile drüberzulegen.  Es
muss aber halt jemand machen.  Ist leider ein wenig aufwändiger, als
sich über das fehlende GUI zu beklagen...

von Ron (Gast)


Lesenswert?

libusb0.dll fehlte. Ich hatte gerade erst eine frische WinAVR Install 
gezogen. Aber wer weiß, vielleicht muß man da wieder was für lesen - 
irgendwo? Na ich hab's ja rausgekriegt.

Bunte Bilder sind schick, ich tippe schon beruflich genug.
Parallelports sind nur bei Laptops out, aber sonst zum Glück noch nicht.

Aber ein nettes GUI ist auf den ersten Blick 
http://avr8-burn-o-mat.aaabbb.de/

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> libusb0.dll fehlte.

Das wäre ernsthaft ein WinAVR-Bug.  Die sollte dabei sein (wenngleich
sie auch wohl nicht richtig funktionert, weil Eric da was anderes
vergurkt hat).

> Bunte Bilder sind schick

Naja, Ansichtssache. ;-)  Gerade bei Ponyprog sind sie ja ziemlich
berüchtigt dafür, dass die Leute sich ihre AVRs zerfuset haben.
Da denke ich lieber einmal mehr über die Hexwerte meiner Fuses nach.

von gerhard99 (Gast)


Lesenswert?

Hallo,

mein WINAVR (Version 20070525) bringt wenn ich den Atmel programmieren 
will auch die Fehlermeldung "libusb0.dll nicht gefunden". Sie ist aber 
im Verzeichnis winavr\utils\libusb\bin. Beim suchen im Internet habe ich 
diese Seite gefunden. Leider steht hier aber nicht die Lösung! Kann mir 
bitte einer helfen.

Gruß

Gerhard

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

gerhard99 wrote:

> diese Seite gefunden. Leider steht hier aber nicht die Lösung!

Gehe zu:

http://sourceforge.net/projects/libusb-win32/

und installiere dir libusb-win32 über den Installer.

von gerhard99 (Gast)


Lesenswert?

Vielen Dank für die schnelle Hilfe! Jetzt klappt es.

von Christian U. (z0m3ie)


Lesenswert?

@Ron

Ich verstehe dein problem wirklich nicht so ganz wenn man eine 
Suchmaschiene benutzen kann findet man auch recht schnell die gesuchten 
infos, + eine java oberfläche für avrdude in der man die fuses schön per 
häkchen zusammenklicken kann.

Weiterhin würde ich dir mal ans herz legen dir nen etwas besseren 
Programmer zu baun, wie schon gesagt gibts einiges was STK500v2 
kompatibel ist damit hast du nie wieder das problem nen neuen Controller 
nicht flashen zu können und weiterhin ist das um einiges schneller als 
Bitbaning wenn du ewig nur n paar LED´s ansteuern willst und deine 
Programme nicht über 2K hinauskommen ist das sicherlich egal aber wenn 
man beim debuggen alle 2 min n Programm in den Controller schiesst udn 
das dann 3 min dauert ist das schon nervig...

>Die Zeiten von bunten Bildchen sind bei mir seit dem Kindergarten
>vorbei...  Mittlerweile kann ich nämlich lesen und schreiben. ;-)

Naja Jörg, ich bin auch Kommandozeilenfan aber deswegen gibt es doch 
einige klickie buntie Sachen die das Leben erheblich einfacher machen. 
Und du willst mir doch nicht erzählen das du kein X hast oder ? Nacher 
hast noch n KDE was ;)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Christian Ulrich wrote:

>>Die Zeiten von bunten Bildchen sind bei mir seit dem Kindergarten
>>vorbei...  Mittlerweile kann ich nämlich lesen und schreiben. ;-)
>
> Naja Jörg, ich bin auch Kommandozeilenfan aber deswegen gibt es doch
> einige klickie buntie Sachen die das Leben erheblich einfacher machen.

Das habe ich ja nicht abgestritten.

> Und du willst mir doch nicht erzählen das du kein X hast oder?

Ich habe nirgends behauptet, noch wie vor 17 Jahren an einem VT320 zu
sitzen. ;-)

Was ich aber bei den X11-Applikationen sofort und als erstes abschalte
sind all diese Leisten mit den bunten Kindergartenbildchen.  Die
nehmen bloß Platz weg, und ab 100 Bildern in den Leisten kann man sich
sowieso nicht mehr merken, welches Bild wofür da sein soll.  Da kann
ich mir gleich lieber die Tastenkürzel merken, und wenn ich die
vergessen habe, gibt's noch Menüs.

> Nacher
> hast noch n KDE was ;)

Kommt mir nicht ins Haus.  Zu groß, zu langsam, zu viel Platz auf dem
Bildschirm.  Kein virtueller Desktop, sondern nur unabhängige
workspaces.  Das heißt nicht, dass ich nicht auch 'ne KDE-Applikation
benutzen würde, wenn sie das tut, was ich gerade brauche, aber für
eine Flasche Milch muss man sich ja nicht gleich eine Kuh kaufen. ;-)

von Joachim B. (joachimb)


Lesenswert?

Da Ponyprog den 644 nur nach einem Patch programmieren kann, habe ich 
auf AVRDUDE umgestellt.
Dazu habe ich das neueste WINAVR vom 25.05.2007 installiert und die 
Einstellungen für AVRDUDE vorgenommen. Mein Programmierer (serieller 
Ponyprogprogrammierer 'siprog') sollte nach Mitteilungen im Forum 
funktionieren, ist aber in der AVRDUDE-Anleitung (vom 21.12.06) nicht 
verzeichnet. Nach einigem Suchen habe ich in der Konfigurationsdatei den 
Eintrag siprog gefunden. Die Aufstellung der Programmierer in der 
AVRDUDE-Anleitung ist unvollständig.
Nach den Start meldete AVRDUDE die fehlende libusb0.dll. Das lies sich 
dank der Anleitung in diesem thread einfach beheben.
Zur Zeit verhält sich mein ATmega32 nach dem Programmieren merkwürdig.
Ich vermute ein Problem mit den Fuses.
Hier verhält sich AVRDUDE abweichend von der Anleitung.
Die Meldung:
avrdude: safemode: Fuses OK
erscheint nicht so wie in 2.2 der Anleitung gezeigt.
Den Parameter -u habe ich nicht gesetzt.

Hat schon einmal jemand dieses Problem gehabt?
Kann mir jemand schreiben, wie ich unter Windows evtl. mit dem 
Programmers Notepad? in den Terminalmode des AVRDUDE komme?

Gruß
Joachim

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Joachim Börke wrote:

> Die Aufstellung der Programmierer in der
> AVRDUDE-Anleitung ist unvollständig.

Bitte schreibe hier einen Bugreport:

https://savannah.nongnu.org/bugs/?group=avrdude

> Zur Zeit verhält sich mein ATmega32 nach dem Programmieren
> merkwürdig.  Ich vermute ein Problem mit den Fuses.

Kannst du das näher erläutern?  (Da das subject einen ATmega644 nennt,
vielleicht besser in einem neuen Thread.)

> Die Meldung:
> avrdude: safemode: Fuses OK
> erscheint nicht so wie in 2.2 der Anleitung gezeigt.

Wie sieht sie denn aus?

> Kann mir jemand schreiben, wie ich unter Windows evtl. mit dem
> Programmers Notepad? in den Terminalmode des AVRDUDE komme?

Naja, PN ist ja eher eine Art GUI, während der Terminalmode
Interaktion braucht.  Ich denke, den musst du wirklich direkt von der
Kommandozeile (also aus dem cmd.exe heraus) starten.

von Joachim B. (joachimb)


Lesenswert?

Hallo Jörg,

danke für die schnelle Antwort.

Bevor ich auf den 644 umsteige, wollte ich das neue WINAVR mit dem 
AVRDUDE erst einmal auf dem ATmega32 probieren. Damit habe ich nur zwei 
Unbekannte (WINAVR und AVRDUDE), andernfalls käme der 644 als dritte 
Unbekannte hinzu.
Die WINAVR-Neuerungen (_spawnv-Problem) habe ich bereits gelöst.

Der Controller arbeitet meine uip-Anwendung ungewöhnlich langsam ab. 
Deshalb wollte ich die Fuses zur Taktgenerierung prüfen.

Die Meldung:
avrdude: safemode: Fuses OK
ist in der Anleitung vermerkt, fehlt jedoch in meiner Ausgabe.

Ich habe inzwischen festgestellt, dass der Parameter -p partno
in meinem makefile mit "atmega32" besetzt wird. Die Anleitung fordert 
jedoch das Kürzel "m32". Das Makefile ist dagegen so ausgelegt, dass GCC 
und AVRDUDE mit dem gleichen Parameter arbeiten.
Als MCU-Typ wird im Handbuch "ATmega32" genannt. Im Konfigurationsfile 
steht dagegen "ATMEGA32". Ich werde mal probieren, ob das relevant ist.

Gruß
Joachim

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Joachim Börke wrote:

> Die Meldung:
> avrdude: safemode: Fuses OK
> ist in der Anleitung vermerkt, fehlt jedoch in meiner Ausgabe.

Hmm, kann sein, dass die mittlerweile entfernt worden ist.  Ich habe
gerade keinen AVR eingeschaltet und will dann auch ins Bett gehen...

> Ich habe inzwischen festgestellt, dass der Parameter -p partno in
> meinem makefile mit "atmega32" besetzt wird. Die Anleitung fordert
> jedoch das Kürzel "m32".

Das ist egal.  Der volle Name wird akzeptiert (ohne Rücksicht auf
Groß-/Kleinschreibung), damit ist avrdude immer kompatibel mit den
restlichen Tools (avr-gcc, avr-as).  Der Kurzname (m32) ist eher für
diejenigen gedacht, die das Kommando mit der Hand eintippen und daher
nicht immer den langen Namen schreiben wollen.

Wenn der mit -p genannte Prozessor nicht mit der Chip-ID
übereinstimmt, würde avrdude dir das schon sagen. ;-)

von gerhard99 (Gast)


Lesenswert?

Hallo,

ich wollte mal den Ponyprog mit dem o.a. Patch ausprobieren. Dabei ist 
mir folgendes aufgefallen, die Größe des Ursprungsprogramms liegt bei 
556kB und mit dem Patch bei 1204kB. Ist das richtig das nur für die 
fehlerfreie Unterstützung des AtMega664 mehr als das doppelte 
Programmcode notwendig ist?

Gruß

Gerhard

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bist du dir sicher, dass das Programmcode ist?  Oder rechnest du die
ganze Symboltabelle mit rein?

von gerhard99 (Gast)


Lesenswert?

Hallo Jörg,

in der Anleitung stand man sollte die Ponyprog2000.exe austauschen. Bei 
diesen beiden Dateien besteht der Unterschied. Dies erscheint mir etwas 
merkwürdig.

Gruß

Gerhard

von eProfi (Gast)


Lesenswert?

> Kann mir jemand schreiben, wie ich unter Windows evtl. mit dem
> Programmers Notepad? in den Terminalmode des AVRDUDE komme?

Du musst das makefile ändern, und zwar bei den Parametern des avrdude 
einfach ein -t dazuschreiben.

Wenn Du im Terminalmode bist, kannst Du ihn mit q beenden.

n.b.
Der Parameter -Enoreset bewirkt, dass nach dem Programmieren der 
Prozessor losläuft.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

gerhard99 wrote:

> in der Anleitung stand man sollte die Ponyprog2000.exe austauschen. Bei
> diesen beiden Dateien besteht der Unterschied.

Das heißt, du hast nur die Dateigröße angeguckt?  Das ist Schall und
Rauch.  Da steht u. U. alles mögliche mit drin, was später nicht
geladen wird (letzlich Debuginformationen).

Wenn das ponyprog2000.exe mit dem GCC compiliert worden ist, gibt's
beim entsprechenden GCC ein Kommando namens "size".  Wenn man das
auf das .exe anwendet, bekommt man gesagt, wie viele Bytes aus dieser
Datei tatsächlich im RAM landen.  (Falls DLLs geladen werden, sind
diese in der Angabe aber nicht enthalten.)

Wenn es mit einem anderen Compiler generiert worden ist, wird er
vermutlich eine ähnliche Möglichkeit haben, die wahre Codegröße
herauszufinden.

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
Noch kein Account? Hier anmelden.