KDS i PE – czyli życie z timerami

KDS i PE – czyli życie z timerami
Razem głosów: 17 co stanowi: 92.94% całości.

31705-IND-KinetisDesignStudio-about-screen_v1

Zaś wrócę do naszego przykładu poprzedniego gdzie nasza dioda LED ożyła po kilku niewielkich zabiegach w środowisku KDS z użyciem Processor Experta … No ożyła i się namiętnie świeci … jednak … co to za życie prawda ??  dlatego trochę nasz przykład wzbogacimy teraz  ….

W sumie dzięki temu że mamy Processor Experta  nie mamy wiele roboty , ale też i trzeba wiele wyjaśnić  i choć używanie Timera  nie jest czymś skomplikowanym w KDS to jednak chciałbym co nieco omówić …   Nie koniecznie urzeka mnie i nie porywa idea PE gdzie zamiast pisania mamy kod klikany, i choć można uznać, że  w sumie PE jest inteligentnym tworem i pozwala szybko bez bólu „napisać” kod  to jednak ja osobiście czuję się zmuszony do bycia takim samym jak inni i mój kod też będzie taki sam jak innych programistów czy inżynierów z Freescale. I niestety zabija to swego rodzaju indywidualność w podejściu do pisania kodu po swojemu z własnym stylem.  Mnie to osobiście trochę boli.  Ale co ja mogę ?? muszę się naiwnie dostosować do narzucanych mi zasad i zamiast się bawić w ręczne ustawianie Timerów,   zrobić tak jak inni … i po prostu być jak inni (oczywiście do puki używam PE, a pozbędę się go i to szybko) Niemniej jeszcze tu chciałbym  wam pokazać jak spowodować w KDS z użyciem PE zastosowawszy się do „zasad nie do odrzucenia” sprawić miganie diodą ….

No dobrze to sobie popsioczyłem …  zatem do dzieła ?


Otwórzmy nasz projekt poprzedni gdzie sprawiliśmy że dioda świeci …

Przechwytywanie

Dwu klikiem na naszym komponencie Dioda BitIO klikamy by otworzyć inspektora  i jak widać wyżej otwieramy zakładkę z dostępnymi metodami … –> Widzicie wyżej ? Nas interesuje na dole metoda NegVAL() , która jest ustawiona na  don’t generate code.

Klikamy więc na tym napisie i wybieramy generate code…

Przechwytywanie

NegVal()  oznacza tyle co ToglePin  czyli wartość pinu będzie za każdym przejściem np. pętli  będzie zmieniany na przeciwny … No dobrze fajnie , ale co to ma do Timerów ??

Dokładnie to że teraz potrzebujemy timera by wyznaczyć czas co jaki ta zmiana stanu pinu się dokona … coś jak słynne _delay(ms);  w przypadku AVR , tyle że tu zrobimy już poważnie bez blokowania programu  bo na przerwaniu timera :)  W AVR to było dość skomplikowane zadanie natomiast dzięki PE  w  tym wypadku to fraszka …. to co chcecie się przekonać jakie to proste ??


TimerInit

Na początek musimy sobie odnaleźć komponent  TimerInit i dodać go do naszego projektu  więc otwieramy Components Library i klikamy dwukrotnie na komponencie TimerInit…

Przechwytywanie

w ten sposób zostanie on dodany, a my klikając na nim otwieramy Component Inspectora i ustawiamy podstawowe opcje ….

Przechwytywanie

Czyli głównie interesuje nas Interrupt period  gdzie ustawiamy np 1000ms  jak widać wyżej Co oznacza ze nasze przerwanie będzie występować co 1000ms  :)

Teraz jak już mamy wszystko ustawione <tak to wszystko>  klikamy na ProcessorExpert.pe  i generujemy kod …

Przechwytywanie

zauważcie, że podczas generowania kodu nasz wpis z metodami set i clear dla pinu zostały usunięte z pliku main.c  …  i nasza pętla główna jest pusta :

i dokładnie tak ma zostać …  :)

Natomiast interesować nas powinien  plik  Ewents.c  i to jego teraz otwieramy…

Po otwarciu wyszukujemy sekcję :

i jak nam sugeruje  komentarz tu wpisujemy kod …  teraz uważajcie bo choć ładnie mamy przez PE stworzoną obsługę przerwania to się sporo napiszemy az nam klawiatury spuchną ….

To co gotowi ??  to jedziemy ….

Pod wierszem  /* Write your code here …*/  wpisujemy kod … przepiszcie uważnie :

po czym plik zapisujemy i  klikamy na ikonę młotka  i nasz projekt kompilujemy …. teraz …

ale zaraz … miało być dużo kodu  …, a co to ma być z farsa ?? Sun sobie jaja robi ??

No tak moi drodzy wszystko zrobił za nas PE wiec nam pozostało tylko do przerwania Timera ręcznie wpisać wywołanie metody NegVal(), która włączyliśmy dla  naszego Pinu I/O — i to naprawdę wszystko … teraz rozumiecie co mnie tak irytuje w PE ??

Tymczasem plik został skompilowany zatem przechodzimy do debugera wgrywamy do flasha i uruchamiamy nasz program … oo nasza dioda radośnie miga co 1000ms …

to wszystko ….

Takie podejście do programowania ma same zalety w zasadzie dla początkujących jet szybko łatwo i działa …. choć jak pisałem na wstępie zabija nieco samodzielność stylu i indywidualizm kodu … nie mniej jak życie ułatwia ??

Miłego mrygania diodami  na timerach w KDS z użyciem „Wszechmogącego” PE  dla procesorów KINETIS  ….  zarówno KL25Z  jak i K64F  i innych ….

 

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay