Stachu Chebel
Guest
Tue Apr 26, 2022 12:35 am
Zakupiłem borda FRDM-KL46Z i powoli oswajam się ze środowiskiem
projektowym Kinetis Design Studio. Na początek mruganie LED'em w
w przerwaniu i już problemy. Krok po kroku:
1) Tworzę nowy projekt "Processor Expert", wybieram MCU i takie tam..
2) Z biblioteki komponentów wybieram TimerInt i BitIO.
3) Dla komponentu BitIO ustawiam właściwość "output" i przypisuję
odpowiedni pin.
4) Dla komponentu TimerInt ustawiam we właściwościach:
- Periodic interrupt source : PIT_LDVAL0
- Counter : PIT_CVAL0
- Interrupt period : 10Hz (Możliwe 0.0048Hz .. 20.971MHz)
5) Program obsługi przerwania wygląda tak:
void TI1_OnInterrupt(void)
{
/* Write your code here ... */
Bit1_NegVal();
}
Kompiluję, programuję flash'a, wszystko jest OK. Mruga!! Teraz ustawiam
Interrupt period na 100kHz, na oscyloskopie jest zgodnie z przewidywaniami
50kHz. Super!! Teraz ustawiam na 150kHz i cisza.. Maksymalnie mogę dać
140kHz. Co do Pani Nędzy robię źle?
Adam GĂłrski
Guest
Tue Apr 26, 2022 12:03 pm
W dniu 26.04.2022 o 00:35, Stachu Chebel pisze:
Quote:
Zakupiłem borda FRDM-KL46Z i powoli oswajam się ze środowiskiem
projektowym Kinetis Design Studio. Na początek mruganie LED'em w
w przerwaniu i już problemy. Krok po kroku:
1) Tworzę nowy projekt "Processor Expert", wybieram MCU i takie tam..
2) Z biblioteki komponentów wybieram TimerInt i BitIO.
3) Dla komponentu BitIO ustawiam właściwość "output" i przypisuję
odpowiedni pin.
4) Dla komponentu TimerInt ustawiam we właściwościach:
- Periodic interrupt source : PIT_LDVAL0
- Counter : PIT_CVAL0
- Interrupt period : 10Hz (Możliwe 0.0048Hz .. 20.971MHz)
5) Program obsługi przerwania wygląda tak:
void TI1_OnInterrupt(void)
{
/* Write your code here ... */
Bit1_NegVal();
}
Kompiluję, programuję flash'a, wszystko jest OK. Mruga!! Teraz ustawiam
Interrupt period na 100kHz, na oscyloskopie jest zgodnie z przewidywaniami
50kHz. Super!! Teraz ustawiam na 150kHz i cisza.. Maksymalnie mogę dać
140kHz. Co do Pani Nędzy robię źle?
A z jakim zegarem kod się wykonuje ?
Pozdrawiam
Adam Górski
Grzegorz Niemirowski
Guest
Tue Apr 26, 2022 5:01 pm
Stachu Chebel <stchebel@gmail.com> napisał(a):
Quote:
A żebym ja to wiedział.. Na schemacie jest oscylator 8MHz. Jak natomiast
ustawić częstotliwość taktowania CPU tego też nie wiem. W którym miejscu
KDS można to ustawić lub odczytać aktualną częstotliwość?
Skoro nie wiesz, to pewnie nie ma mnożnika i jest te 8 MHz. Funkcja
Bit1_NegVal() jest dosyć powolna, zjada jakieś 55 cykli procesora. Wychodzi
160 kHz jako maksymalna częstotliwość migania. A jeszcze narzut samego
przerwania i mamy okolice Twoich 140 kHz. Co robisz źle? Wybrałeś sobie
powolną funkcję do obsługi pinu, jednocześnie nie ustawiając wyższego
taktowania.
Do poczytania
https://mcuoneclipse.com/2014/06/14/frdm-k64f-atmaximum-speed-of-120-mhz/
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Stachu Chebel
Guest
Tue Apr 26, 2022 6:48 pm
wtorek, 26 kwietnia 2022 o 14:03:35 UTC+2 Adam Górski napisał(a):
Quote:
W dniu 26.04.2022 o 00:35, Stachu Chebel pisze:
Zakupiłem borda FRDM-KL46Z i powoli oswajam się ze środowiskiem
projektowym Kinetis Design Studio. Na początek mruganie LED'em w
w przerwaniu i już problemy. Krok po kroku:
1) Tworzę nowy projekt "Processor Expert", wybieram MCU i takie tam..
2) Z biblioteki komponentów wybieram TimerInt i BitIO.
3) Dla komponentu BitIO ustawiam właściwość "output" i przypisuję
odpowiedni pin.
4) Dla komponentu TimerInt ustawiam we właściwościach:
- Periodic interrupt source : PIT_LDVAL0
- Counter : PIT_CVAL0
- Interrupt period : 10Hz (Możliwe 0.0048Hz .. 20.971MHz)
5) Program obsługi przerwania wygląda tak:
void TI1_OnInterrupt(void)
{
/* Write your code here ... */
Bit1_NegVal();
}
Kompiluję, programuję flash'a, wszystko jest OK. Mruga!! Teraz ustawiam
Interrupt period na 100kHz, na oscyloskopie jest zgodnie z przewidywaniami
50kHz. Super!! Teraz ustawiam na 150kHz i cisza.. Maksymalnie mogę dać
140kHz. Co do Pani Nędzy robię źle?
A z jakim zegarem kod się wykonuje ?
Pozdrawiam
Adam Górski
A żebym ja to wiedział.. Na schemacie jest oscylator 8MHz. Jak natomiast ustawić częstotliwość taktowania
CPU tego też nie wiem. W którym miejscu KDS można to ustawić lub odczytać aktualną częstotliwość?
Stachu Chebel
Guest
Wed Apr 27, 2022 2:34 am
wtorek, 26 kwietnia 2022 o 19:01:01 UTC+2 Grzegorz Niemirowski napisał(a):
Quote:
Stachu Chebel <stch...@gmail.com> napisał(a):
A żebym ja to wiedział.. Na schemacie jest oscylator 8MHz. Jak natomiast
ustawić częstotliwość taktowania CPU tego też nie wiem. W którym miejscu
KDS można to ustawić lub odczytać aktualną częstotliwość?
Skoro nie wiesz, to pewnie nie ma mnożnika i jest te 8 MHz. Funkcja
Bit1_NegVal() jest dosyć powolna, zjada jakieś 55 cykli procesora. Wychodzi
160 kHz jako maksymalna częstotliwość migania. A jeszcze narzut samego
przerwania i mamy okolice Twoich 140 kHz. Co robisz źle? Wybrałeś sobie
powolną funkcję do obsługi pinu, jednocześnie nie ustawiając wyższego
taktowania.
Do poczytania
https://mcuoneclipse.com/2014/06/14/frdm-k64f-atmaximum-speed-of-120-mhz/
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Dzięki serdeczne za link. Dużo wyjaśnia choć nie dokładnie ten MCU. Pod mojego borda
znalazłem to:
https://community.element14.com/products/devtools/kinetiskl2freedomboard/w/documents/16986/frdm-kl46z---pe---cw-tutorial-make-it-blink-in-just-5min
Co prawda inne środowisko projektowe (CodeWarrior), ale też mam. Im starsza wersja, tym lepsza. Szkoda, że też pod
Eclipse (nazwa adekwatna do produktu).