Tervehdys kaikki,
Sattuisiko kukaan tietämään minkä takia LPC1768 ARM:ssa Timerin kellot eroavat. Vaikka alustan timerit täysin samalla kello asetuksella, niin silti Match aika ei ole sama timereilla.
Eli esim
LPC_TIM0->MR0 = 500; // Interrupti 5us päästä
LPC_TIM1->MR0 = 500; // Interrupti 24us päästä
void initTimer0()
{
LPC_SC->PCONP |= 1 << 1; // Power up Timer 0
LPC_SC->PCLKSEL0 |= 1 << 2; // Clock for timer = CCLK / 2
LPC_TIM0->MR0 = 0; // Match Timer 0
LPC_TIM0->MR1 = 400; // Match Timer 1
LPC_TIM0->MR2 = 1200; // Match Timer 2
LPC_TIM0->MR3 = 6400; // Match Timer 3
LPC_TIM0->MCR |= 1 << 0; // Interrupt on Match0
LPC_TIM0->MCR |= 1 << 3; // Interrupt on Match1
LPC_TIM0->MCR |= 1 << 6; // Interrupt on Match2
LPC_TIM0->MCR |= 1 << 10; // Reset timer on Match 3.
LPC_TIM0->TCR |= 1 << 1; // Reset Timer 0
LPC_TIM0->TCR &= ~( 1 << 1 ); // Sopt reseting Timer 0
NVIC_EnableIRQ( TIMER0_IRQn );
LPC_TIM0->TCR |= 1 << 0; // Start Timer 0
}
void initTimer1()
{
LPC_SC->PCONP |= 1 << 2; // Power up Timer 1
LPC_SC->PCLKSEL0 |= 1 << 2; // Clock for timer = CCLK / 2
LPC_TIM1->MR0 = 0; // Match Timer 0
LPC_TIM1->MR1 = 2700; // Match Timer 1
LPC_TIM1->MR2 = 400; // Match Timer 2
LPC_TIM1->MCR |= 1 << 0; // Interrupt on Match0
LPC_TIM1->MCR |= 1 << 3; // Interrupt on Match1
LPC_TIM1->MCR |= 1 << 7; // Reset timer on Match 3.
LPC_TIM1->TCR |= 1 << 1; // Reset Timer 1
LPC_TIM1->TCR &= ~( 1 << 1 ); // Sopt reseting Timer 1
NVIC_EnableIRQ( TIMER1_IRQn );
LPC_TIM1->TCR |= 1 << 0; // Start Timer 1
}
Edit1:
Ongelma ratkesi manuaalista. Eli kello oli asetettu väärin LPC_SC->PCLKSEL0 |= 1 << 2; // Clock for timer = CCLK / 2 → LPC_SC->PCLKSEL0 |= 1 << 4; // Clock for timer = CCLK / 2