Hallo Leute,
für private LED-Projekte würde ich gerne den AT32UC3L0256 uC von Atmel
einsetzen. Interessant ist dieser dafür, dass er insgesamt 35
unabhängige PWM -Kanäle besitzt. Damit komplexere Berechnungen möglichst
schnell durchgeführt werden können, soll der uC mit der max. Frequenz
von 50 MHz getaktet werden
(http://www.atmel.com/devices/at32uc3l0256.aspx?tab=parameters).
Der AT32UC3L0256 enthält intern mehrere Oszillatoren sowie
Phasenregelschleifen(PLL) und Frquenzregelschleifen(DFLL), die es
erlauben den uC mit unterschiedlichen Systemtakten zu versorgen. Die
einzige Möglichkeit, die ich gesehen habe, die CPU des uCs mit 50 MHz zu
takten, ist die interne DFLL zu verwenden. Diese kann von abhängig von
internen Oszillatoren Frequenzen zwischen 20 MHz bis 150 MHz erzeugen -
laut dem Datasheet
(http://www.atmel.com/Images/Atmel-32145-32-bit-Flash-MCU-UCL0_datasheet.pdf,
Seite 190, Abschnitt 13.5.4).
Da liegt jetzt auch mein Problem, ich bekomme die DFLL nicht richtig in
gang bzw. nicht eingestellt.
- Hat jemand mit der DFLL bereits etwas Erfahrung sammeln können?
- Kennt jemand Beispielcode, der funktionsfähig ist?
Im Atmel Software Framework gibt es eine knappt Dokumentation zu einigen
Funktionen die zur Konfiguration der DFLL eingesetzt werden können
(http://asf.atmel.com/docs/latest/avr32.applications.uc3l-ek-touch-demo.example/html/group__dfll__group.html).
Ein Code-Beispiel sieht z.B. so aus:
1 | struct dfll_config dfllcfg;
|
2 | dfll_enable_source(CONFIG_DFLL0_SOURCE);
|
3 | dfll_config_defaults(&dfllcfg, 0);
|
4 | dfll_config_enable_dithering(&dfllcfg);
|
5 | dfll_enable(&dfllcfg, 0);
|
6 | dfll_wait_for_accurate_lock(0);
|
Leider gibt es die Funktion "dfll_enable(...)" nicht, womit dieses
Beispiel im AVR-Studio nicht kompiliert. Ich habe an dieser Stelle das
Enable-Bit für die DFLL dann manuel gesetzt, was leider nicht geholfen
hat.
Wenn da also jemand eine Idee oder Tipp hat, dann wäre ich dafür sehr
dankbar. :)
Beste Grüße,
-Chris