Hallo,
Ich möchte mit einem ATXmega32 und dem neuen AVRStudio einen periodischen Timer-Interrupt aufrufen. Hab auch schon alle AppNotes durchgekaut usw.
Initialisiert wird der timer so:
Der Timer-Interrupt "ISR (TCC0_OVF_vect){}" wird jedoch unabhängig welchen Divider oder welche Period ich eingestellt habe mit 106kHz aufgerufen.Code:TCC0.PER = 65000; TCC0.INTCTRLA = TC_OVFINTLVL_HI_gc; TCC0.CTRLA = TC_CLKSEL_DIV1024_gc; PMIC.CTRL |= PMIC_HILVLEN_bm |PMIC_MEDLVLEN_bm|PMIC_LOLVLEN_bm; sei();
Habs auch mit den Funktionen aus der App-Note AVR1306 (http://www.atmel.com/dyn/resources/p...ts/doc8045.pdf) probiert, ohne erfolg.
Übrigens, meine CPU Clock ist so initialisiert, sollte so ca das maximum sein welches möglich ist:
Grüße,Code:/****************************************************************** * System Clock 32MHz (XOSC Quarz 16MHz, PLL Faktor 2) * http://www.mikrocontroller.net/topic/156466 ******************************************************************/ /* Nach dem Reset ist die Quelle des Systemtaktes der interne 2MHz RC-Oszillator (System Clock Selection: RC2MHz) */ // Oszillator XOSC konfigurieren (12..16MHz, 256 clocks startup time) CLKSYS_XOSC_Config( OSC_FRQRANGE_12TO16_gc, false, OSC_XOSCSEL_XTAL_256CLK_gc ); // Oszillator XOSC enable CLKSYS_Enable( OSC_XOSCEN_bm ); // Warten bis der Oszillator bereit ist do {} while ( CLKSYS_IsReady( OSC_XOSCRDY_bm ) == 0 ); // PLL source ist XOSC, Multiplikator x8 CLKSYS_PLL_Config( OSC_PLLSRC_XOSC_gc, 16 ); // Enable PLL CLKSYS_Enable( OSC_PLLEN_bm ); // Prescalers konfigurieren CLKSYS_Prescalers_Config( CLK_PSADIV_4_gc, CLK_PSBCDIV_1_2_gc ); // Warten bis PLL locked do {} while ( CLKSYS_IsReady( OSC_PLLRDY_bm ) == 0 ); // Main Clock Source ist Ausgang von PLL CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_PLL_gc );
Thomas







Zitieren


Lesezeichen