Problem ATmega32U2 bei AVR328

Gast #2056053
Lesenswert?

Hallo,

ich suche mir seit Stunden die Finger wund. Ich habe vor kurzem einen 
ATmeg32U2 erworben, um ein wenig in das Thema "integrierter 
USB-Controller" rein zu kommen. Dazu versuche ich das AVR328 (Generic 
HID Device) zu kompilieren. Ich benutze WinAVR-20100110 mit AVR-Studio 
4.

Die AVR328 ist eigentlich für den AT90USB162 geschrieben. Sollte aber 
auch mit anderen Series-2-Typen funktionieren. Es gibt jedoch zwei 
Funktionen/Makros, die nicht klappen. Die eine ist 
"Usb_enable_regulator()" und stellt etwas an der 3.3V-Stromversorgung 
ein. Die kann man weglassen, vermute ich. Der ATmega32U2 hat so etwas 
nicht.

Dann gibt es noch "Clear_prescaler()", die bei dem AT90USB162 auf 
clock_prescale_set() umgeleitet wird, die wiederum in avr/power.h 
definiert ist. Dort zwar für AT90 (und andere) aber nicht für den 
ATMega32U2. Es geht es um eine definierte Umschaltung des Prescalers.

Ich habe mir beide Datenblätter mehrfach angeschaut (Kapitel "System 
Clock Prescaler")und kann keinen Unterschied feststellen.

Ich würde jetzt einfach die Definition aus "power.h" ins Hauptprogramm 
übernehmen. Das könnte mir zumindest kurzfristig weiterhelfen.

Meine Fragen:
a) Ist meine Annahme richtig, dass es sich um einen Bug in power.h 
handelt, also das der ATmega aus irgendwelchen Gründen versehentlich 
nicht aufgeführt ist? Oder ist das Absicht und es gibt doch 
Unterschiede?
b) Wenn es ein Bug ist, wo/wie kann man ihn melden.

Vielen Dank für eure Unterstützung.
Gast #2179631
Lesenswert?

a) der u2 hat sehr wohl einen internen regulator siehe register REGCR 
(bit REGDIS) und den abschnitt 20.3 USB Module Powering Options.

ich versuche auch gerade einen u2 zur mitarbeit zu bewegen.
mit 5V vcc funktioniert alles wunderbar, mit 3.3V generiert von einem 
ldo geht garnichts. nicht nur usb funktioniert dann nicht sondern auch 
normale i/o pins funktionieren nicht.
programmieren per spi (am avr dragon) funktioniert.

es gibt mehrere möglichkeiten den u2 mit vcc <4V zu betreiben.
ich wollte die im datenblatt als Figure 20-4 bezeichnete variante 
verwenden.
ergebnis siehe oben (auch wenn ich den regulator disable... was wohl 
garnicht ausgeführt wird warum auch immer).

eine andere möglichkeit ist den regulator nur für den usbteil des u2 zu 
verwenden und für vcc einen externen. lt jemanden in #avr auf freenode 
funktionierte das bei ihm.

bei 5V (von usb) sollte der regulator eingeschaltet bleiben und alles 
wie auf Figure 20-3 gezeichnet verbunden werden.

b) der bug ist bereits bekannt: https://savannah.nongnu.org/bugs/?28627
einfach in power.h patchen behebt das problem.
#2179775
Lesenswert?

Alles klar. Das mit der power.h hab ich inzwischen auch selbst so 
gemacht, wollte nur nochma wissen ob das auch so i.O. ist ;)
Zu deinem Problem: Hast du vielleicht Brown-Out an und der läuft einfach 
nicht, wenn du drunter gehst? :D
Könnten wir wohl mal per mail/icq/msn/skype schnacken, wenn du bereits 
wärst mal 1 oder 2 Messungen durchzuführen wäre ich sehr erfreut.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren