- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 21

Thema: Erste Versuche mit einem XMega128

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
    34
    Beiträge
    3.501
    Blog-Einträge
    9

    Erste Versuche mit einem XMega128

    Hallo Forum,

    ich programmiere gerade etwas mit einem XMega128A1 und habe folgendes Programm:

    Code:
    /*
     * XMega.c
     *
     * Created: 22.03.2012 19:42:07
     *  Author: Daniel
     */ 
    
    #include <avr/io.h>
    
    int main(void)
    {
        // Taktquelle konfigurieren
        OSC.CTRL |= 0x02;                                                                        // 32MHz-Enable Bit setzen
        while(!(OSC.STATUS & OSC_RC32MRDY_bm));                                                    // Sobald der Takt stabil ist wird das RC32MRDY Bit gesetzt
        CCP = 0xD8;                                                                                // I/O Protektion aktivieren
        CLK.CTRL = 0x01;                                                                        // 32MHz als Taktquelle auswählen
        
        // PLL konfigurieren
        OSC_PLLCTRL = 0x82;                                                                        // PLL Multiplikator auf x2 setzen und PLL Input Clock auf 32MHz setzen                                                                    
        OSC.CTRL |= 0x10;                                                                        // PLL-Enable Bit setzen
        while(!(OSC.STATUS & OSC_PLLRDY_bm))                                                    // Warten bis PLL bereit ist
        
        // I/O konfiguration
        PORTB.DIR = 0xff;                                                                        // Port B auf Ausgang stellen
        
        while(1)
        {
            PORTB.OUT ^= (1<<PIN0);
        }
    }
    Der Sinn des Programmes besteht darin, den Takt auf 32Mhz zu setzen und dann diesen Takt für die interne PLL zu nutzen.
    Im Hauptprogramm wird dann ein Pin getoggled, damit ich am Oszi eine Veränderung sehen kann.
    Allerdings zeigt das Oszi immer 2,35MHz an, egal auf was ich den PLL Multiplikator setze.
    Wo steckt mein Fehler?

    Danke für die Hilfe!
    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 Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Guten Morgen,

    also bei mir funktioniert die folgende Variante (zum Vergleich) :

    Code:
        /*Oscillator auf 32Mhz einstellen*/
        OSC.CTRL |= (1<<PIN1);
        /*Wenn Oscillator stabil wird das Flag RC32MRDY
        * gesetzt und 32Mhz können benutzt werden*/
        while(!(OSC.STATUS & OSC_RC32MRDY_bm));
        /*I/O Protection*/
        CCP = 0xD8;
        /*Clock auf 32Mhz einstellen*/
        CLK.CTRL = (1<<PIN0);
    
        DFLLRC32M.CTRL = DFLL_ENABLE_bm;
    Geändert von ePyx (23.03.2012 um 09:51 Uhr) Grund: Was vergessen.
    Grüße,
    Daniel

  3. #3
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von ePyx Beitrag anzeigen
    Guten Morgen,

    also bei mir funktioniert die folgende Variante (zum Vergleich) :

    Code:
        /*Oscillator auf 32Mhz einstellen*/
        OSC.CTRL |= (1<<PIN1);
        /*Wenn Oscillator stabil wird das Flag RC32MRDY
        * gesetzt und 32Mhz können benutzt werden*/
        while(!(OSC.STATUS & OSC_RC32MRDY_bm));
        /*I/O Protection*/
        CCP = 0xD8;
        /*Clock auf 32Mhz einstellen*/
        CLK.CTRL = (1<<PIN0);
    
        DFLLRC32M.CTRL = DFLL_ENABLE_bm;
    Ja aber das ist ja nur die Variante für den 32MHz Takt. Ich möchte ja noch die PLL dazu benutzen.
    Aber mir ist heute morgen eingefallen....hat der XMega von Werk aus vielleicht noch ein Clock/8 Fusebit was gesetzt ist (so wie ein Mega168 ).
    Weil 2,35MHz für ein einfaches Bit togglen ist etwas wenig....das wären Pi mal Daumen 16 Zyklen für den Befehl.....
    Wenn der Takt aber durch dieses Bit erst durch 8 geteilt wird, würde es das erklären.
    Weißt du da was drüber? Sonst muss ich nach der Arbeit mal reinschauen
    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 Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Der Oszillator verwendet doch die interne PLL um die Taktfrequenz überhaupt erreichen zu können. Ein CLKDIVIDER wie bei den neueren ATMegas ist mir nicht bekannt. Macht ja auch keinen Sinn, da man bei den Xmegas den CLock via Firmware setzen kann.

    Eine gute Anlaufstelle ist folgende Seite : http://www.stromflo.de/dokuwiki/doku...ega-c-tutorial

    Ok hab gerade die AppNote zum Clocksystem gelesen. Dann ist meine Aussage natürlich falsch.
    Grüße,
    Daniel

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von ePyx Beitrag anzeigen

    Eine gute Anlaufstelle ist folgende Seite : http://www.stromflo.de/dokuwiki/doku...ega-c-tutorial

    Ok hab gerade die AppNote zum Clocksystem gelesen. Dann ist meine Aussage natürlich falsch.
    Ja die Seite habe ich gestern auch gefunden. Leider steht da nichts zu der PLL
    Und ich meine mich erinnern zu können das die neueren Megas (168, 328....) alle so einen CLKDIVIDER haben, aber ich schaue nachher nochmal.
    Und das Clocksystem beim XMega ist auch für mich Neuland. Nur ich wollte halt probieren den Takt mit Hilfe der PLL auf 64MHz zu erhöhen.
    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
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von ePyx Beitrag anzeigen
    Der Oszillator verwendet doch die interne PLL um die Taktfrequenz überhaupt erreichen zu können. Ein CLKDIVIDER wie bei den neueren ATMegas ist mir nicht bekannt. Macht ja auch keinen Sinn, da man bei den Xmegas den CLock via Firmware setzen kann.

    Eine gute Anlaufstelle ist folgende Seite : http://www.stromflo.de/dokuwiki/doku...ega-c-tutorial

    Ok hab gerade die AppNote zum Clocksystem gelesen. Dann ist meine Aussage natürlich falsch.
    Hat zwar nichts mit dem Problem zu tun, aber ich habe eben nochmal nachgeschaut. Der Mega328 auf meinem Arduino hat ein CLKDIV Fusebit.
    Siehe Screen:
    Bild hier  

    Leider ändert das wie gesagt nichts an meinem Problem das die PLL nicht arbeitet
    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

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Ja ein Fuse-Bit haben die neueren ATMegas. Aber Der Xmega hat keines und der Oszillator ist komplett per Software ansprechbar.
    Grüße,
    Daniel

Ähnliche Themen

  1. [ERLEDIGT] Probleme mit einem XMega128
    Von Kampi im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 22.03.2012, 00:19
  2. erste versuche mit dem asuro
    Von Nordwind im Forum Asuro
    Antworten: 19
    Letzter Beitrag: 25.09.2011, 10:11
  3. erste Versuche mit Timer
    Von MSP430start im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 01.07.2009, 14:31
  4. Erste Schritte: Probleme mit einem ATmega32
    Von Bääääär im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 09.07.2007, 17:19
  5. RS232 versuche
    Von HelgeG im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 7
    Letzter Beitrag: 22.02.2007, 22:21

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress