Hey,
schau mal hier habe ich eine Anleitung geschrieben wie man die RTC vom XMega nutzt:
http://kampis-elektroecke.de/?page_id=1879
Das Thema PLL wird hier abgehandelt:
http://kampis-elektroecke.de/?page_id=883
Vielleicht hilft dir das ja weiter![]()
Werbung
Hey,
schau mal hier habe ich eine Anleitung geschrieben wie man die RTC vom XMega nutzt:
http://kampis-elektroecke.de/?page_id=1879
Das Thema PLL wird hier abgehandelt:
http://kampis-elektroecke.de/?page_id=883
Vielleicht hilft dir das ja weiter![]()
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Genau genommen hab ich nach deinen Tutorials und den Appnotes gearbeitet(Vileicht fällt dir auch die namens gleichheit mit dem Hinweis auf den Fehlenden USART Beispielcode auf).
Das Problem ist halt das es nur solange funktionierd wie ich den PLL nicht nutze.
kommentiere ich die Zeile aus läuft es prima, sobald sie drin ist bleibt er bei der RTC_busy schleife stehen.
Ich nehme mal an du kommentierst die Zeile "PLL_init();" aus?
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Ja genau.
So ich konnte jetzt den Fehler noch weiter eingrenzen:
Ich habe die PLL auf 128MHz konfiguriert (Multiund dann einen Prescaler von 4 um auf
32MHz CPU Takt zu kommen, da ich für die Hires Erweiterung 128MHz Per4 Takt brauche.
Hab jetzt testweise die PLL auf Multi 2 gestellt und den Prescaler auf 0 und dann geht die RTC auch.
Es liegt also garnicht an der PLL direkt sondern an der Kombi aus Multi 8 und Prescaler.
Aber eigentlich dürfte doch keinen Einfluss haben ?
Schau dir mal auf Seite 80 das Bild an:
http://www.atmel.com/Images/doc8077.pdf
Außerdem dividiert die Zeile
CLK.PSCTRL = 0x03
durch 4 und nicht durch 8 (siehe Seite 8.
Durch 8 wäre 101 = 5.
Laut Bild sollte der RTC Clock aber komplett unabhängig von dem SysCLK sein....
Edit:
Mir ist gerade eingefallen, dass der XMega nur bis zu einem bestimmten Takt zuverlässig läuft. Vielleicht waren die 128MHz einfach zu fix und die PLL konnte sich nicht stabilisieren?
Der Multiplikator ist auch, denk ich mal, nur dafür ausgelegt um aus einem langsamen Takt 32MHz machen zu können und nicht um 32MHz auf was weiß ich hoch zu drehen.
Ich vermute ganz stark, dass die PLL einfach nur nicht das PLL-Ready Bit gesetzt hat, weil der Takt vielleicht nicht sauber war.
Geändert von Kampi (22.02.2013 um 20:27 Uhr)
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Soll sie ja auch:
Ich hab ein Quarz mit 16Mhz--->PLLSRC=XTAL,16MHz
Rauskommen soll 32Mhz CPU plus 128MHz PER
--->16Mhz mal 8(PLL Multi)=128MHz
--->128MHz geteilt durch 4 (CPU_CLOCk Prescaler) =32MHz
folglich CPU=32MHz
PER=128Mhz
Und genau das ist ja was ich die ganze Zeit versuche zu erklären!!!!!!!!!Laut Bild sollte der RTC Clock aber komplett unabhängig von dem SysCLK sein....
Sie sollte, ist sie bei mir aber nicht, denn sobald ich den PLL auf 128MHz setze und die Frequenz runterteile bleibt das Programm bei der RTC stehen.
Für die Prescaler siehe abbildung 7-5 auf seite 83.
Demnach ist 0x03=ob00000011=Prescaler B und C je 2----->
Per4=128MHz
Per2=128MHz/2=64MHz
PER+CPU=128MHz/2/2=64MHz/2=32MHz
//EDIT:
Hab jetzt ein wenig rumgespielt: biszu einer PLL von 7 läuft alles Perfekt stelle ich jedoch auf 8 so läuft die RTC replizierbar nciht an.
Ich werde morgen eine 2.te Platine Ätzen und schaun obs dort geht, aber ich gehe nicht davon aus.
Ich frage mich nur wie das sein kann, da die RTC ja eigentlich vollkommen unabhängig vom normalen Takt sein sollte.
Geändert von Thalhammer (22.02.2013 um 20:39 Uhr)
Ok das mit dem Teilen habe ich missverstanden.
Dachte du meintest der würde da schon durch 8 teilen![]()
Aber ich habe meinen Beitrag noch editiert....vielleicht ist das die Lösung. Sicher bin ich mir da nicht aber es klingt (in meinen Augen) logisch.
Weiß auch nicht mehr wo ich das gelesen habe mit der max. Frequenz vom Chip....ich glaube bei AVR Freaks.
Das Problem ist definitiv nicht die RTC sondern die PLL und wie gesagt das kann gut daran liegen, dass die sich nicht locken kann.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Lesezeichen