Forum: Mikrocontroller und Digitale Elektronik Bootloader auf 32u4 mit AVRISP MKII


von Christian (Gast)


Lesenswert?

Moin Leute,

folgendes Problem:
Ich habe mir eine Leiterplatte entworfen, die einen 32u4 beherbergt. 
Ansonsten befinden sich lediglich ein paar Schalter und LEDs auf der 
Leiterplatte. Also absolut trivial.
Ich habe diese Leiterplatte nun (ohne Schalter und LEDs) bestückt und 
per USB an einen Rechner angeschlossen. Der 32u4 wird als "A32U4DFU" und 
als HID Device erkannt. Daraus schließe ich, dass sowohl der Oszillator 
läuft (habe ich auch mit einem Oszi gegen gecheckt) als dass auch mein 
Design richtig ist.

Da ich keinen Erfolg mit "Arduino as ISP" hatte, habe ich meinen AVRISP 
MKII rausgekramt, Atmel Studio 7 installiert und die Leiterplatte über 
ISP (ich habe eine entsprechende Schnittstelle auf der Leiterplatte 
vorgesehen) mit dem AVRISP verbunden. Beide LEDs im AVRISP leuchten grün 
=> gutes Zeichen.
Ich öffne ATMEL Studio, gehe auf Device Programming, wähle dort den 
AVRISP und danach den 32U4 aus. Funktioniert wunderbar.

Als nächstes wähle ich unter "Memories" einen Bootloader aus. Ich habe 
diverse probiert. Unter anderem auch den ProMicro von Sparkfun als auch 
die originalen Leonardo aus dem Arduino-Paket. Beide lassen sich ohne 
Fehlermeldung auf den 32U4 aufspielen. Auch beim Verify gibt es keine 
Probleme.

Aber: Wenn ich jetzt alles bestöpsel und die Leiterplatte wieder per USB 
an den Rechner schließe passiert genau gar nichts. Es wird kein neues 
Gerät erkannt. Weder auf Windows, noch auf MAC. Mir gehen langsam die 
Ideen aus, woran das liegen kann. Ich habe auch den Oscillator (16MHz) 
überprüft: Der läuft wunderbar an.

Hat jemand damit Erfahrung und kann mir einen Tipp geben?

Danke euch!

Lg,
Christian

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Christian schrieb:
> Hat jemand damit Erfahrung und kann mir einen Tipp geben?

 Lange her, aber ich glaube mich zu erinnern, das nach Reset oder
 ausschalten USB aus war.

 Kann gerade nicht nachgucken aber irgendeinen bit in USBCON muss man
 setzen damit USB anläuft.

von Christian (Gast)


Lesenswert?

Hm... das was ich im Netz so lese lässt mich darauf schließen, dass man 
"einfach" den Leonardo Bootloader nimmt und somit alle nötigen Bits 
gesetzt werden...

https://www.eevblog.com/forum/microcontrollers/uploading-leonardo-(micro)-bootloader-to-atmega32u4rc-with-ice/

Bzw. hab ich die Fuses auch nach dieser dort verlinkten Anleitung 
gesetzt... ohne Erfolg.

von Karl M. (Gast)


Lesenswert?

Hallo,
Der PIN HWB muss, dann Reset toggeln, auf low liegen. Dann startet der 
USB Bootloader!

von Christian (Gast)


Lesenswert?

Der HWB Pin liegt in meinem Design grundsätzlich auf GND. Ist das ein 
Problem?

von Karl M. (Gast)


Lesenswert?

Christian schrieb:
> Der HWB Pin liegt in meinem Design grundsätzlich auf GND. Ist das
> ein Problem?

Was steht im Datenblatt? Dort würde ich als erstes nachsehen.

Ich habe rund ein Paar atmega32u4 mit Taster im Einsatz.

von Axel S. (a-za-z0-9)


Lesenswert?

Christian schrieb:
> Ich habe mir eine Leiterplatte entworfen, die einen 32u4 beherbergt.
> Ich habe diese Leiterplatte nun (ohne Schalter und LEDs) bestückt und
> per USB an einen Rechner angeschlossen. Der 32u4 wird als "A32U4DFU" und
> als HID Device erkannt.

OK. Die Hardware und der ab Werk aufgespielte Bootloader funktionieren 
also.

> Da ich keinen Erfolg mit "Arduino as ISP" hatte

Diesen Satz verstehe ich nicht.

> Als nächstes wähle ich unter "Memories" einen Bootloader aus. Ich habe
> diverse probiert. Unter anderem auch den ProMicro von Sparkfun als auch
> die originalen Leonardo aus dem Arduino-Paket.

Und warum das? Dein µC hat (bzw. hatte) bereits einen funktionsfähigen 
Bootloader (DFU per USB) drauf. Warum wolltest du den ersetzen?

> Wenn ich jetzt alles bestöpsel und die Leiterplatte wieder per USB
> an den Rechner schließe passiert genau gar nichts. Es wird kein neues
> Gerät erkannt.

Dann paßt entweder der Bootloader nicht zur Hardware oder du hast eine 
der Nebenbedingungen nicht beachtet. Wie Vorposter schon sagten, testen 
manche Bootloader als erstes einen bestimmten Pin und gehen nur bei 
passendem Pegel in den Download-Modus.

Noch was: Bootloader kommen in verschiedenen Größen und liegen typisch 
am Ende des Flash. Die Fuses müssen natürlich passend zum Bootloader 
gesetzt sein, normalerweise auf das erste Byte des Bootloaders.

: Bearbeitet durch User
von Christian (Gast)


Lesenswert?

Danke für eure Hilfe.

Ich habe mir heute einen Arduino Uno geholt und diesen mit dem 
ISP-Sketch bespielt. Dann habe ich meine Leiterplatte über ISP an den 
UNO angeschlossen und über das IDE den Bootloader auf den 32u4 gebrannt.

Was soll ich sagen: Das funktioniert 1A! Nun wird der 32u4 wunderbar 
erkannt und ich kann ihn in Verbindung mit dem IDE nutzen! Super!

Danke euch!

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.