-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: Erste Versuche mit einem XMega128

  1. #1
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9

    Erste Versuche mit einem XMega128

    Anzeige

    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
    27
    Beiträge
    3.517
    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
    27
    Beiträge
    3.517
    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
    27
    Beiträge
    3.517
    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:


    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

  8. #8
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Zitat Zitat von ePyx Beitrag anzeigen
    Ja ein Fuse-Bit haben die neueren ATMegas. Aber Der Xmega hat keines und der Oszillator ist komplett per Software ansprechbar.
    Jap nur ich dachte der hätte vielleicht auch noch so ein Fusebit.
    Ist aber doch schon was anderes wenn du den Oszillator komplett in der Software steuern kannst. Generell gefällt mir der Chip sowieso richtig gut
    Nur der 3,3V Pegel ist doof
    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

  9. #9
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Alter
    21
    Beiträge
    355
    Nur der 3,3V Pegel ist doof
    Haben aber mittlerweile alle neueren / größeren Chips

    Welches Board verwendest du?
    MfG Torrentula

  10. #10
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Zitat Zitat von Torrentula Beitrag anzeigen
    Haben aber mittlerweile alle neueren / größeren Chips

    Welches Board verwendest du?
    Ja das stimmt. Ist doof aber gut dafür gibt es Work-Arounds.
    Als Board verwende ich ein selbst gebautes. Ein XMega mit einer Adapterplatine auf einem Stück Lochraster und dann kommen da noch 11 Wannenstecker für die Ports dran. Spannungsversorgung befindet sich unterm Chip.
    Bisher sieht das Board so aus:


    Ist nichts besonderes aber später wollte ich das Board als Master in einem Controllernetzwerk verwenden.
    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

Seite 1 von 3 123 LetzteLetzte

Ä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
  •