-
1. Data: 2010-08-18 15:00:57
Temat: Zliczanie impulsów przez LPC1768
Od: Mario <m...@p...onet.pl>
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ć?
--
Pozdrawiam
MD
-
2. Data: 2010-08-18 20:52:14
Temat: Re: Zliczanie impulsów przez LPC1768
Od: Adam Dybkowski <a...@4...pl>
W dniu 2010-08-18 17:00 Mario napisał(a):
> Witam, mam problem z wykorzystaniem wejścia CAP w LPC1768 do zliczania
[...]
> LPC_TIM3->CCR &= ~(0x0);
Gdzieś Ty wynalazł taki zapis? Teraz w szkołach tak uczą?
Po pierwsze wystarczyłoby napisać:
~0
zamiast potworka ~(0x0)
ale i tak operacja AND z wartością ~0 nie zmieni wyniku. Na pewno o to
chodziło?
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
-
3. Data: 2010-08-18 21:11:16
Temat: Re: Zliczanie impulsów przez LPC1768
Od: RoMan Mandziejewicz <r...@p...pl>
Hello Adam,
Wednesday, August 18, 2010, 10:52:14 PM, you wrote:
>> Witam, mam problem z wykorzystaniem wejścia CAP w LPC1768 do zliczania
> [...]
>> LPC_TIM3->CCR &= ~(0x0);
> Gdzieś Ty wynalazł taki zapis? Teraz w szkołach tak uczą?
> Po pierwsze wystarczyłoby napisać:
> ~0
> zamiast potworka ~(0x0)
> ale i tak operacja AND z wartością ~0 nie zmieni wyniku. Na pewno o to
> chodziło?
Nie wiem, jak we współczesnych zabawkach ale dawniej takiej operacji
używało się do ustawienia flag...
--
Best regards,
RoMan mailto:r...@p...pl
Nowa strona: http://www.elektronika.squadack.com (w budowie!)
-
4. Data: 2010-08-18 22:01:01
Temat: Re: Zliczanie impulsów przez LPC1768
Od: Mario <m...@p...onet.pl>
W dniu 2010-08-18 22:52, Adam Dybkowski pisze:
> W dniu 2010-08-18 17:00 Mario napisał(a):
>
>> Witam, mam problem z wykorzystaniem wejścia CAP w LPC1768 do zliczania
> [...]
>> LPC_TIM3->CCR &= ~(0x0);
>
> Gdzieś Ty wynalazł taki zapis? Teraz w szkołach tak uczą?
> Po pierwsze wystarczyłoby napisać:
> ~0
> zamiast potworka ~(0x0)
> ale i tak operacja AND z wartością ~0 nie zmieni wyniku. Na pewno o to
> chodziło?
To akurat powstało jako efekt kolejnych eksperymentów z ustawieniami
&=~(0x111000) i &=~(0x111) które miały się zakończyć zerowaniem
wszystkiego &=0 ale mi pozostała negacja. W sumie to i tak błędny zapis
bo ustawiał starsze bity rejestru na 1 a program nie powinien ich
ustawiać. W sumie to ten rejest CCR to już tak z desperacji ( po wielu
godzinach walki) ruszyłem bo difoltowo jest ustawiany na zero czyli tak
jak manual wymaga w przypadku stosowania wejścia CAP jako wejście
licznika. Poprawienien tego teraz nie zmieniło nic na lepsze :(
W sumie z dokumentacji mi wychodzi że liczy się rejest CTCR - tam
wybieram że sygnałem napędzającym licznik jest pin CAP3.x a nie
wewnętrzny zegar z preskalerem. No i rejestr PINSEL ustawiający ten pin
na funkję CAP3.1 Ale może jeszcze coś gdzieś trzeba uatawić a jakoś nie
mogę doczytać. W examplach znajduję jedynie przykłady pracy tych wejść
jako capture.
A co do zapisu to stosuję właśnie taki np
LPC_GPIO0->FIODIR &=~(1<<24);
po to żeby wyzerować jakiś bit w długim rejestrze.
I nie wiem czego teraz w szkołach uczą. Ja jestem dość wiekowy rzeźbiarz
asemblerowy który przeniósł się ostatnio na c.
--
Pozdrawiam
MD
-
5. Data: 2010-08-19 11:37:40
Temat: Re: Zliczanie impulsów przez LPC1768
Od: Mario <m...@p...onet.pl>
W dniu 2010-08-18 17:00, Mario pisze:
> 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;
Problem rozwiązany dzięki pomocy na zagranicznym forum.
Pomieszałem w głowie biny z hexami.
powinno być:
LPC_TIM3->CTCR = 0x5;
--
Pozdrawiam
MD