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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.