XMEGA bei 48Mhz intern CLK nicht richtig delay_ms()

Gast #3503234
Lesenswert?

Hallo,
Ich nutze momentan Xmega mit Atmel Studio ASF. Bei 48Mhz intern clock 
habe ich Problem mit der Funktion delay_ms(). Bei delay_ms(20) gibt der 
Funktion immer 40ms. Bei delay_ms(1) gibt er 2ms.

Versuch mit _delay_ms() ergibt gleichen Problem
Hat jemand Lösung für mich?
Danke
Gast #3503937
Lesenswert?

Für allen Funktionen von Xmega (wie DMA, Timmer, USART, SPI, I2C) ist es 
für 48Mhz system clock kein Problem, nur mit delay_ms() ist immer um 
Faktor zwei. Vielleicht liegt es nur bei der Funktion delay_ms() selbst. 
Hat jemand schon mal das gleichen Problem wie Ich ?
(Firma: s@Td) #3503951
Lesenswert?

Wenn die CPU mit 24 Mhz läuft (sie kann nicht mit 48Mhz laufen) und du 
F_CPU auf 48Mhz setzt hast du den Faktor 2 drinne, da die delay Funktion 
auf F_CPU zurückgreift.

Probier mal F_CPU runterzusetzen bis der delay passt. Dann hast du die 
Frequenz mit der die CPU tatsächlich läuft.
Gast #3504001
Lesenswert?

Die XMega können mit 48MHz laufen, auch wenn im Datenblatt steht, dass 
32MHz max. sind. Die Mega können laut Datenblatt auch nur 20MHz, 
trotzdem kann man die mit 28MHz laufen lassen, um z.B. eine VGA Ausgabe 
zu realisieren.

Ich habe meine XMega immer innerhalb der 32MHz laufen lassen, daher kann 
ich dir mit dem delay auch nicht weiterhelfen. Wenn du das unbedingt 
brauchst, mach dir einen 1kHz Timer mit Millisekunden-Zähler und bau 
deine eigene delay-Funktion.
Gast #3504131
Lesenswert?

Wegen anderen Funktionen habe ich leider alle sieben Timern genutzt. 
Xmega verion USB ist von Factory kalibriert mit 48Mhz für RC32 clk 
source. Ich nutze auch die Source für interne clock weil ich bei der 
Schaltung die Extern Oszillator verzichtet habe. Das einzige Möglichkeit 
für mich ist die Anpassung delay_ms .
Gast #3519644
Lesenswert?

Hallo Viper,

du kannst auch USB auf 48 MHz setzen und dein CPU Clock aus dem 2 MHz 
Takt per PLL auf 32 MHz bringen... ohne das dein Controller 24 MHz oder 
48 Mhz laufen muss...

Die 48 MHz sind in der tat ganz gut möglich soweit ich das probiert 
hatte... In der alten ASF 1.4 zB. hat noch alles gepasst, wenn man auf 
48 MHz CPU hoch ging, dass wurde dann später abgeändert... hatte da 
glaube auch Probleme mit dem Delay... Ich vermute, deine CPU läuft auf 
24 MHz, weil die ASF das 48 MHz vielleicht geblockt hat... alternativ 
kann es natürlich auch die neue Delay Funktion sein... die kannst du ja 
anpassen, wenn du unbedingt auf 48 MHz laufen möchtest...

Grüße

Basti

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