Witam, mam problem z wykorzystaniem wejścia CAP w LPC1768 do zliczania impulsów - pomiaru częstotliwości. Zapewne podobnie jest sprawa rozwiązana w innych LPC np serii 2xxx więc znających się na ARMach z NXP proszę o pomoc. Otóż zamierzam wykorzystać wejście P0.24 skonfigurowane jako CAP3.1 do popędzania Timera3. Konfiguruję ten Timer
const unsigned long TCR_COUNT_RESET = 2, TCR_COUNT_ENABLE = 0x01;
LPC_SC->PCONP |= (1 << 23); LPC_TIM3->CCR &= ~(0x0); LPC_TIM3->TCR = TCR_COUNT_RESET; LPC_TIM3->CTCR = 0x101; LPC_TIM3->TCR = TCR_COUNT_ENABLE;
Czyli kolejno załączam power dla timer3, ustawiam wszystkie bity compare na zero gdy pracuje jako counter, resetuję timer, ustawiam w CTCR rodzaj zbocza rosnący (bity 1,0) i wybór źródła na CAPx.1 (bity 3,2) , startuję timer. Z kolei w konfiguracji portów wstawiam:
LPC_PINCON->PINSEL1 |= (1<<17)|(1<<16);//set pin P0.24 as CAP3.1 LPC_GPIO0->FIODIR &=~(1<<24);// set pin P0.24 as input
Ta druga linia to dodatkowo bo raczej nie powinna mieć znaczenia. No i w ulCount4=LPC_TIM3->TC; nic się nie dzieje. Cały czas zero. Gdy przeprogramuję timer na napędzany z PCLK to sobie zlicza sygnał z wewnętrznego zegara. Z kolei port jest dobry bo po przestawieniu pinu P0.24 na GPIO
LPC_PINCON->PINSEL1 &= ~(1 << 17) | (1 << 16); // set pin P0.24 as GPIO
mogę zmiany jego stanu zliczać w pętli głównej. Ale ja muszę to zrobić na timerze. Any suggestions? Jakiś rejestr trzeba by jeszcze ustawić?