Помогите запустить ATXMEGA128A1 от врешнего кварцевого генератора 25 МГц! Пишу под GCC в AVR Studio 4.19. В качестве результата хочется получить на PE7 clkPer (через event system).
Мой код, который не дал результата, таков:
Код
int main(void)
{
cli();
OSC_XOSCCTRL = OSC_FRQRANGE_12TO16_gc |
OSC_XOSCSEL_EXTCLK_gc;
OSC_CTRL = OSC_XOSCEN_bm;
while(!(OSC_STATUS & OSC_XOSCRDY_bm)) {; }
CPU_CCP = CCP_IOREG_gc;
CLK_CTRL = CLK_SCLKSEL_XOSC_gc;
OSC_CTRL &= 0xFE;
EVSYS_CH0MUX = EVSYS_CHMUX_PRESCALER_1_gc; // ClkPER div by 2^0 is event source
PORTCFG_CLKEVOUT = PORTCFG_EVOUT_PE7_gc; // Event Channel 7 Output on Port E pin 7
// PORTCFG_CLKOUT_PE7_gc = (0x03<<0)
PORTA_DIR = 0b00000000;
PORTB_DIR = 0b11111111;
PORTC_DIR = 0b00000000;
PORTD_DIR = 0b00000000;
PORTE_DIR = 0b10000000; // PE7 must be configured as output for the event to be available on the pin
PORTF_DIR = 0b00000000;
PORTH_DIR = 0b00000000;
PORTJ_DIR = 0b00011000;
PORTK_DIR = 0b00000000;
PORTQ_DIR = 0b0000;
while (1)
{
asm ("nop");
}
}
{
cli();
OSC_XOSCCTRL = OSC_FRQRANGE_12TO16_gc |
OSC_XOSCSEL_EXTCLK_gc;
OSC_CTRL = OSC_XOSCEN_bm;
while(!(OSC_STATUS & OSC_XOSCRDY_bm)) {; }
CPU_CCP = CCP_IOREG_gc;
CLK_CTRL = CLK_SCLKSEL_XOSC_gc;
OSC_CTRL &= 0xFE;
EVSYS_CH0MUX = EVSYS_CHMUX_PRESCALER_1_gc; // ClkPER div by 2^0 is event source
PORTCFG_CLKEVOUT = PORTCFG_EVOUT_PE7_gc; // Event Channel 7 Output on Port E pin 7
// PORTCFG_CLKOUT_PE7_gc = (0x03<<0)
PORTA_DIR = 0b00000000;
PORTB_DIR = 0b11111111;
PORTC_DIR = 0b00000000;
PORTD_DIR = 0b00000000;
PORTE_DIR = 0b10000000; // PE7 must be configured as output for the event to be available on the pin
PORTF_DIR = 0b00000000;
PORTH_DIR = 0b00000000;
PORTJ_DIR = 0b00011000;
PORTK_DIR = 0b00000000;
PORTQ_DIR = 0b0000;
while (1)
{
asm ("nop");
}
}