- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 17

Thema: xmega rtc + pll

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    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

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2010
    Beiträge
    356
    Zitat Zitat von Kampi Beitrag anzeigen
    Außerdem dividiert die Zeile
    CLK.PSCTRL = 0x03
    durch 4 und nicht durch 8 (siehe Seite 8.
    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

    Laut Bild sollte der RTC Clock aber komplett unabhängig von dem SysCLK sein....
    Und genau das ist ja was ich die ganze Zeit versuche zu erklären!!!!!!!!!
    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)

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von Thalhammer Beitrag anzeigen
    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!!!!!!!!!
    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
    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

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2010
    Beiträge
    356
    Zitat Zitat von Kampi Beitrag anzeigen
    Das Problem ist definitiv nicht die RTC sondern die PLL und wie gesagt das kann gut daran liegen, dass die sich nicht locken kann.
    Die PLL läuft ja mit 128MHz, was sie laut Datenblatt auch kann (siehe seite 71):
    PLL with 20MHz - 128MHz output frequency

    – Internal and external clock options and 1x to 31x multiplication

    • Clock prescalers with 1x to 2048x division

    • Fast peripheral clocks running at 2 and 4 times the CPU clock
    Demnach kann die PLL biszu 128MHz erzeugen und der Peripherie bereitstellen, was auch funktionierd.
    Das Programm bleibt aja auch nicht bei der aktivierung der PLL hängen, sondern direkt danach bei der zeile:
    while ( RTC_Busy() ){};
    Wass daran liegt, dass die RTC sich nicht mit der CPU synchronisieren kann. (Seite 190 Abbildung 7.3.2).
    Ich stell jetzt mal die PLL auf den internen 2MHz um und schau was passiert.
    Also beim internen 2Mhz läuft das ganze mit 31x PLL noch, was aber daran liegt das da nur 62Mhz PLL frequenz rauskommen.

    Ich glaub ich finde mich damit ab, das die RTC bei so hohen PER clocks nicht mehr geht und lager die Funktion auf meinen ARM aus.
    Mal schaun wie das bei den Atxmega128A1 ist, den ich hier hab und der darauf wartet zu einem Devboard verarbeitet zu werden, aber für meinen Dimer ist mir der Aufwand hier zu groß. zumal ich feststellen musste, das die RTC (wennse den mal geht) ohne Calibrirung nach 30minuten schon 15sekunden nach ging, das sind 1 sek abweichung pro 2 minuten oder 12 minuten pro tag!
    Aber danke für deine Hilfe, ich komm vielleicht nochmal drauf zurück
    Geändert von Thalhammer (22.02.2013 um 21:17 Uhr)

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Ändere mal

    do {
    } while ....

    in

    while (OSC.STATUS & (OSC_RC32KEN_bm))

    bzw. die Busy-Zeile in

    while(RTC.STATUS & RTC_SYNCBUSY_bm)

    um und probier es nochmal.

    Edit:
    Die Busy Zeile sieht so aus als ob du da eine Funktion aufrufst?
    RTC_Busy() ist doch ein Unterprogramm oder Funktionsaufruf?
    Geändert von Kampi (22.02.2013 um 21:20 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

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2010
    Beiträge
    356
    Die RTC_busy ist ein Makro und damit genau was du gepostet hast:
    Code:
    /*! \brief This macro checks the RTC busy flag.
     *
     *  \return Non-Zero if RTC is busy, zero otherwise.
     */
    #define RTC_Busy()               ( RTC.STATUS & RTC_SYNCBUSY_bm )
    Ich kanns ändern, kann mir aber nicht vorstellen das es was bringt.
    //EDIT: Wie erwartet, keine änderung.
    Läge es daran würde es ja mit weniger Takt auch nicht gehen oder ?

Ähnliche Themen

  1. XMega Clock,PLL, Prescaler einstellen in Bascom Demo
    Von chr-mt im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 29.11.2021, 14:54
  2. encoder Anschluss für PLL auf Romeo all in one
    Von robvoi im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 05.06.2012, 13:28
  3. PLL Synth. 1,6MHz bis 16 Mhz
    Von dreadbrain im Forum Elektronik
    Antworten: 54
    Letzter Beitrag: 14.01.2010, 16:47
  4. PLL Baustein 4046
    Von hacker im Forum Elektronik
    Antworten: 41
    Letzter Beitrag: 14.01.2009, 15:14
  5. Resonator mit PLL
    Von cengiz77 im Forum Elektronik
    Antworten: 43
    Letzter Beitrag: 15.07.2005, 18:45

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests