RTV forum PL | NewsGroups PL

MCU - przerwania

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - MCU - przerwania

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_at_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).

elektroda NewsGroups Forum Index - Elektronika Polska - MCU - przerwania

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map