Pages: [1]   Go Down
Author Topic: Atmega 328P mit AVRISP mkII programmieren  (Read 3603 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Im Thread "Erstes µC Projekt fertiggestellt" hatte ich von meiner Sorge mit der Programmierung eines standalone 328er berichtet. Nachdem der vorgeschlagene Weg, den nackten Controller mit dem Arduino Uno Board zu bespielen über ISP nicht funktioniert hat, habe ich mir den AVRISP mkII gekauft. Diesen habe ich angeschlossen, nachdem ich die AVR Studio 5 auf meinem Rechner installiert hatte. Dieses Programm hat den Programmer sofort gefunden und ich konnte relativ schnell den bespielten 328er, der auf dem Uno Board steckte auslesen. Ich hatte tatsächlich den Eindruck, jetzt wirklich im Controller zu arbeiten. (ARDUINO macht das ja zum Glück unnötig!)

Jetzt war meine Idee, mit der Arduino Software 1.0 über den Programmer AVRISP mkII meinen standalone 328er zu programmieren. Doch leider funktionierte das nicht, die ARDUINO Software fand den Programmer nicht. Erkennbar war das daran, dass ich zwar den Programmer und das zu bespielende Board auswählen konnte, jedoch kein USB Port auswählbar war (normalerweise wird meine USB-Schnittstelle als COM3 angezeigt). Also wieder einen Schritt zurück.
Nachdem ich im Netz gelesen habe, das man den AVRISP entweder mit dem AVR Studio oder mit der ARDUINO Software verwenden kann, aber niemals gleichzeitig mit beiden, war ich verzweifelt. Aber nach nochmaliger Netzrecherche fan ich einen Weg. Wenn man in der ARDUINO Software das Programm mit "Verify" kompiliert, schreibt ARDUINO ein HEX-File in einen temporären Ordner. Dieses HEX-File habe ich mit dem AVR Studio auf den nackter 328er gebrannt, und es hat tatsächlich funktioniert.
Nun kämpfe ich mit dem Anschluß meines LCD an meinen 328er, aber ich denke das kriege ich auch noch hin!
Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Du musst einen alternativen Treiber für den MK2 benutzen, wenn du ihn aus der IDE heraus benutzen willst. Den Treiber findest du im Arduino-Verzeichnis unter hardware\tools\avr\utils\libusb.

Ach ja, nicht vergessen, den zu programmierenden µC mit Spannung versorgen, der 5V-Pin des MK2 liest nur die Spannung aus, liefert also keine Targetspannung.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nachdem was ich im Netz gelesen habe, ist die gleichzeitige Nutzung des AVRISP mkII unter AVR Studio und unter ARDUINO 1.0 nicht möglich, weil sich beide Treiber gegenseitig behindern. Ich möchte jetzt auch nicht wirklich den Treiber für die ARDUINO Software installieren um dann festzustellen, dass die Programmierung über das Studio nicht mehr funktioniert.
Ich werde künftig das Arduino Board mit ARDUINO direkt bespielen, und Atmega im jeweiligen Projekt über ISP, AVRISP und das AVR Studio bespielen. Ist zwar etwas aufwendiger, aber da ich ja das Board zum Probieren habe, sollte es halbwegs vernünftig funktionieren!

Mit besten Grüßen
ArduStemmi
Logged

D / Wuppertal
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe mir auch einen AVRISP MKII angeschafft.
Eventuell hilfts ja jemandem:

Leider funktioniert der arduinoeigene Treiber nicht unter Win7 64 Prof.
Hier: http://mightyohm.com/blog/2010/09/avrisp-mkii-libusb-drivers-for-windows-7-vista-x64/
habe ich einen funktionierenden Treiber gefunden.
Sketch oder Bootloader aufspielen klappt prima (direkt aus der Arduinosoftware heraus).

Soo viel schneller ist die Datenübertragung jetzt auch nicht - oder muß ich den MKII mit dem Originaltreiber dementsprechend umkonfigurieren?
Ein Vorteil ist, das ein Terminalprogramm (Putty / Hterm) nichtmehr geschlossen werden muß um einen Sketch übertragen zu können.
Ohne Bootloader ist so ein Arduino wirklich schnell gestartet, einfach nur den Sketch über den MKII übertragen - schon ist der Bootloader wech.
Jetzt würde ich gerne mal den Atmega ohne Quarz laufen lassen, schade, das sich die Fuses nicht gleich in der Arduinosoft ändern lassen.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Um die Fuses zu setzen gibt es doch etliche Möglichkeiten.
AVR-Studio z.B. oder eine der vielen GUI für avr-dude wie z.B. Burn-o-mat

LG Lena
Logged

„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“

Albert Einstein

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn man per Arduino IDE den Bootloader flasht werden automatisch die Fuses richtig gesetzt. D.h. solange Du nur Arduino machen willst brauchst Du selbst bei nackten Chips AVRStudio nicht.

Davon abgesehen kannst Du zur Not Arduino auch unter Linux laufen lassen. Dazu muss man nicht einmal neu booten, Linux kann auch in einer VM laufen und VMWare gibt den Player für private Nutzung für lau.
Logged

Check out my experiments http://blog.blinkenlight.net

D / Wuppertal
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sicherlich könnte ich das alles auch mit meinem alten Rechner und dem selbstgelöteten parallelen ISP machen.
Wäre zumindest ein Workaround.
Aber wo doch jetzt schon so ein schickes Atmel MKII Döschen meinen Scheibtisch ziert smiley-wink

Wenn man per Arduino IDE den Bootloader flasht werden automatisch die Fuses richtig gesetzt. D.h. solange Du nur Arduino machen willst brauchst Du selbst bei nackten Chips AVRStudio nicht.
Ja, das stimmt.
Aber ich will ja gerade die Fuses "falsch" stellen, damit der Atmega auch ohne Quarz läuft.
Oder brauchts dazu auch einen angepassten Bootloader?

Jetzt würde ich gerne mal den Atmega ohne Quarz laufen lassen, schade, das sich die Fuses nicht gleich in der Arduinosoft ändern lassen.

Um die Fuses zu setzen gibt es doch etliche Möglichkeiten.
AVR-Studio z.B. oder eine der vielen GUI für avr-dude wie z.B. Burn-o-mat
Ja, aber was davon verträgt sich mit dem Treiber?
Nachdem was ich im Netz gelesen habe, ist die gleichzeitige Nutzung des AVRISP mkII unter AVR Studio und unter ARDUINO 1.0 nicht möglich, weil sich beide Treiber gegenseitig behindern. Ich möchte jetzt auch nicht wirklich den Treiber für die ARDUINO Software installieren um dann festzustellen, dass die Programmierung über das Studio nicht mehr funktioniert.
Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Jetzt würde ich gerne mal den Atmega ohne Quarz laufen lassen, schade, das sich die Fuses nicht gleich in der Arduinosoft ändern lassen.
Doch, das geht eigentlich ganz einfach. Du kannst die Datei boards.txt editieren und dort die Fuses manuell eintragen. Am besten du kopierst dir einen Block (also den eines bestimmten Boards), änderst den Namen (z. B. auf "Atmega328 int.") und nimmst die Anpassungen der Fuses vor. Dann erscheint in der Boardauswahl auch dein nackter Mikrocontroller.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn Du eh einen ISP hast, dann brauchst Du keinen Bootloader mehr.
Logged

Check out my experiments http://blog.blinkenlight.net

D / Wuppertal
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke für die Unterstützung, ich stell mal meinen Versuch (modifizierter Auszug aus boards.txt) hier ein.
Zielsetzung ist ein Atmega, der ohne Quarz läuft.

Wenn keiner schreit, lass das blos - dann werde ich mal einen Versuch starten.

Code:
##############################################################
#ürsprünglich =>     Arduino Diecimila or Duemilanove w/ ATmega168    #

diecimila.name=ATmega168 OHNE Quarz standalone

diecimila.upload.protocol=arduino
diecimila.upload.maximum_size=14336
diecimila.upload.speed=19200

diecimila.bootloader.low_fuses=0xe2
diecimila.bootloader.high_fuses=0xdd
diecimila.bootloader.extended_fuses=0xf8
diecimila.bootloader.path=atmega
diecimila.bootloader.file=ATmegaBOOT_168_diecimila.hex
diecimila.bootloader.unlock_bits=0x3F
diecimila.bootloader.lock_bits=0x0F

diecimila.build.mcu=atmega168
diecimila.build.f_cpu=8000000L
diecimila.build.core=arduino
diecimila.build.variant=standard

##############################################################
Logged

Germany
Offline Offline
Edison Member
*
Karma: 46
Posts: 2310
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hast du die Fußes schon entsprechend angepasst? Ich würde, um Dopplungen zu vermeiden, auch auf die Bezeichnung Diecimila verzichten.
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wenn Du einen 328er verwenden willst, solltest Du keinen 168er definieren.

Die Fuses sollten dann so aussehen:

lfuse:  e2
hfuse: d9
efuse: ff

LG Lena
Logged

„Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“

Albert Einstein

D / Wuppertal
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke für Eure Hilfe.

Nee, einen 168er hab ich schon eigeplant - die gibts halt bei Reichelt.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo zusammen,
ich hab mittlerweile auch den AVRISP mkII und wollte den 328P-Pu auf dem Arduino Duemilanove mithilfe Arduino IDE programmieren.
Habe den auch die Treiber von SaschaW unter http://mightyohm.com/blog/2010/09/avrisp-mkii-libusb-drivers-for-windows-7-vista-x64/ installiert da ich Win 7 Professional 64bit habe. Die Version der Arduino IDE ist 1.0.3.
Nach Datei -> Upload mit Programmer bekomme ich immer diese Meldung:

Code:
Binäre Sketchgröße: 6.162 Bytes (von einem Maximum von 30.720 Bytes)
C:\Program Files\arduino-1.0.3\hardware/tools/avr/bin/avrdude -CC:\Program Files\arduino-1.0.3\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -patmega328p -cstk500v2 -Pusb -Uflash:w:C:\Users\maexel\AppData\Local\Temp\build7099265919451142835.tmp\lamp.cpp.hex:i

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files\arduino-1.0.3\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : usb
         Using Programmer              : stk500v2
avrdude: usbdev_open(): did not find any USB device "usb"

Das richtige Board und den richtigen Programmer auch.
Der Eintrag unter programmers.txt im Arduino-Verzeichnis sieht so aus:

Code:
avrispmkii.name=AVRISP mkII
avrispmkii.communication=usb
avrispmkii.protocol=stk500v2

Der Eintrag vom ausgewählten Board sieht so aus:

Code:
atmega328.name=Arduino Duemilanove w/ ATmega328
atmega328.upload.protocol=stk500v2
atmega328.upload.maximum_size=30720
atmega328.upload.speed=57600

atmega328.bootloader.low_fuses=0xFF
atmega328.bootloader.high_fuses=0xDA
atmega328.bootloader.extended_fuses=0x05
atmega328.bootloader.path=atmega
atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328.bootloader.unlock_bits=0x3F
atmega328.bootloader.lock_bits=0x0F

atmega328.build.mcu=atmega328p
atmega328.build.f_cpu=16000000L
atmega328.build.core=arduino
atmega328.build.variant=standard

Im preferences.txt unter C:\Users\<username>\AppData\Roaming\Arduino habe ich die Upload-Config angepasst:
(das hab ich so im Internet gefunden...)
Code:
upload.using=avrispmkii

Ich würds gern zum Laufen bekommen, da die lange Wartezeit beim Startup bei meiner Anwendung unerwünscht ist

Vielen Dank für Tipps.
Gruß Maexel



Logged

Pages: [1]   Go Up
Jump to: