Hallo Forum,
ich programmiere gerade etwas mit einem XMega128A1 und habe folgendes Programm:
Der Sinn des Programmes besteht darin, den Takt auf 32Mhz zu setzen und dann diesen Takt für die interne PLL zu nutzen.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); } }
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!







Zitieren

Lesezeichen