Forum: Compiler & IDEs Problem ATmega32U2 bei AVR328


von Red Baron (Gast)


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.

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


Lesenswert?

Red Baron schrieb:

> 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?

Ja, davon würde ich ausgehen.

> b) Wenn es ein Bug ist, wo/wie kann man ihn melden.

https://savannah.nongnu.org/bugs/?group=avr-libc

von Fabian S. (jacky2k)


Lesenswert?

Moin,
hast du das Problem lösen können? Stehe gerade vor genau dem gleichen ;)

von armen0r (Gast)


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.

von Fabian S. (jacky2k)


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.

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.