Skocz do zawartości

[LPC1114] uruchomienie TIMERA 16B - problem (rozwiązany)


michalg0000

Pomocna odpowiedź

Cześć, jestem nowy, ale mam już pewne doświadczenie z AVR-ami. Teraz chce się nauczyć ARM-ów. Zacząłem od LPC1114.

Mam problem z uruchomieniem układu sterującego diodą za pomocą TIMER-a 16B0. Nie wiem czy problem leży w inicjalizacji timera czy w obsłudze przerwania... Poniżej jest kod. Będę wdzięczny za pomoc i ewentualne sugestie.

#include "LPC11xx.h"

void TIMER16_0_IRQHandler(void)
{
static int bit = 0;

if (bit == 1)
{
	LPC_GPIO0->DATA |= (1<<6); // set pin 6
    bit = 0;
}
else
{
	LPC_GPIO0->DATA &= ~(1<<6); // clear pin 6
    bit = 1;
}
    LPC_TMR16B0->IR = 0x1f; // clear interrupt flag
}

int main(void)
{
LPC_GPIO0->DIR |= (1<<6);

LPC_SYSCON->SYSAHBCLKCTRL |= 0x80; // CT16B0 clock enable
LPC_TMR16B0->TCR = 2; // timer reset
LPC_TMR16B0->MCR = 3; // reset and interrupt on MR0
LPC_TMR16B0->MR0 = 48000; // 1 ms
LPC_TMR16B0->PR = 99; // prescaler 100
LPC_TMR16B0->TCR = 1; // timer enable
NVIC_EnableIRQ(TIMER_16_0_IRQn); // interrupt enable

while (1)
{

}
return 0;
}

Pozdrawiam,
Michał

EDIT....

ok działa. Nie wiem co było nie tak... Napisałem to od nowa i działa. Poniżej poprawny kod

#include "LPC11xx.h"

void TIMER16_0_IRQHandler(void)
{
static int bit = 0;

if (bit == 1)
{
	LPC_GPIO0->DATA |= (1<<6); // set pin 6
    bit = 0;
}
else
{
	LPC_GPIO0->DATA &= ~(1<<6); // clear pin 6
    bit = 1;
}
    LPC_TMR16B0->IR = 0x1f; // clear interrupt flag
}

int main(void)
{
LPC_GPIO0->DIR |= (1<<6);

LPC_SYSCON->SYSAHBCLKCTRL |= 0x80; // CT16B0 clock enable
LPC_TMR16B0->TCR = 2; // timer reset
LPC_TMR16B0->MCR = 3; // reset and interrupt on MR0
LPC_TMR16B0->MR0 = 48000; // 1 ms
LPC_TMR16B0->PR = 99; // prescaler 100
LPC_TMR16B0->TCR = 1; // timer enable
NVIC_EnableIRQ(TIMER_16_0_IRQn); // interrupt enable

while (1)
{

}
return 0;
}
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.