KwikStik HELLO WORLD: Rozdiel medzi revíziami
Zo stránky SensorWiki
Vytvorená stránka „= Výpis "HELLO WORLD!" na LCD displeji KwikStik modulu = == Popis programu == V projekte pre výpis reťaca "HELLO WORLD" sú použité súbory a ovládače zo vzorov...“ |
|||
(24 medziľahlých úprav od rovnakého používateľa nie je zobrazených.) | |||
Riadok 1: | Riadok 1: | ||
= Výpis "HELLO WORLD!" na LCD displeji KwikStik modulu = | = Výpis "HELLO WORLD!" na LCD displeji KwikStik modulu = | ||
== | Na LCD displeji KwikStik modulu sa zobrazuje reťazec "HELLO WORLD!". Pretože LCD displej umožňuje zobraziť len 6 znakov, reťazec rotuje na LCD displeji z ľava do prava a naopak so stanovenou periódou. Po dosiahnutí konca reťazca program počká stanovený počet milisekúnd a pokračuje v rotácií reťazca do opačného smeru. | ||
V projekte pre výpis reťaca "HELLO WORLD" sú použité súbory a ovládače zo vzorových projektov spoločnosti Freescale. Sú to: | |||
{| width = "100%" | |||
| [[Image:Kwikstik hello world pic.jpg|300px]] [[Image:Kwikstik hello world pic2.jpg|310px]] | |||
| [[Image:Kwikstik lcd display.jpg|450px]] | |||
|} | |||
== Použité ovládače a súbory == | |||
V projekte pre výpis reťaca "HELLO WORLD!" sú použité súbory a ovládače zo vzorových projektov spoločnosti Freescale. Sú to: | |||
{| class="wikitable" width = "100%" | {| class="wikitable" width = "100%" | ||
| width = "10%" | | | width = "10%" | | ||
Riadok 20: | Riadok 28: | ||
Clock.c<br\> | Clock.c<br\> | ||
Clock.h | Clock.h | ||
| | | | ||
Súbor obsahuje funkciu ('''InitClock''') a definície pre inicializáciu frekvencie MCU. Funkcia '''InitClock''' nastavi nasledovné MCU na nasledovné frekvencie: | |||
* ''core'' (jadro) = 96Mhz | |||
* ''bus'' (zbernica) = 48Mhz | |||
* ''flexbus'' (flex-zbernica) = 48Mhz | |||
* ''flash'' (flash päť) = 25Mhz | |||
|- | |- | ||
| | | | ||
Riadok 27: | Riadok 40: | ||
| Ovládač pre SysTick (System Tick Timer), ktorý je využívaný pre delay funkciu. SysTick časovač je časť jadra CortexM4 preto sa jéj popis v referenčnom manuáli PK40X256 nenachádza. Popis SysTick časovača je možné nájsť v [http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/DUI0553A_cortex_m4_dgug.pdf Cortex M4 Generic User Guide]. | | Ovládač pre SysTick (System Tick Timer), ktorý je využívaný pre delay funkciu. SysTick časovač je časť jadra CortexM4 preto sa jéj popis v referenčnom manuáli PK40X256 nenachádza. Popis SysTick časovača je možné nájsť v [http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/DUI0553A_cortex_m4_dgug.pdf Cortex M4 Generic User Guide]. | ||
|} | |} | ||
== Popis programu == | |||
Bloková schéma programu: | |||
[[Image:Kwikstik hello world graph.jpg|center]] | |||
Po spustení programu sa najprv inicializujú premenné. | |||
<nowiki> | |||
STRING text = "HELLO WORLD!"; //Premenna obsahujuca retazec na vypis. | |||
int text_length = strlen(text); //Dlzka retazca. | |||
BOOL direction = DIR_LEFT; //Premena urcujuca smer rotacie retazca na LCD displeji. | |||
int counter = 0; //Pocitadlo rotacii. </nowiki> | |||
Nasleduje inicializácia frekvencií jadra, SysTick časovača a LCD displeja. | |||
<nowiki> | |||
InitClock(); //Inicializacia frekvencii jadra. | |||
InitSysTick(); //Inicializacia SysTick casovaca. | |||
_SLCDModule_Init(); //Inicializacia LCD displeja. </nowiki> | |||
Algoritmus riadenia rotácie reťazca na LCD displeji. | |||
<nowiki> | |||
for(;;) { | |||
if (direction == DIR_RIGHT){ | |||
if (counter <= (text_length - CHAR_ON_LCD_COUNT)){ | |||
_SLCDModule_TurnOffAllSegments(); | |||
_SLCDModule_PrintString(&text[counter], 1); | |||
counter++; | |||
Delay_mS(ROTATION_STEP_DELAY); | |||
}else{ | |||
Delay_mS(ROTATION_END_DELAY); | |||
direction = DIR_LEFT; | |||
} | |||
} else if (direction == DIR_LEFT){ | |||
if (counter > 0){ | |||
counter--; | |||
_SLCDModule_TurnOffAllSegments(); | |||
_SLCDModule_PrintString(&text[counter], 1); | |||
Delay_mS(ROTATION_STEP_DELAY); | |||
}else{ | |||
Delay_mS(ROTATION_END_DELAY); | |||
direction = DIR_RIGHT; | |||
} | |||
} | |||
}</nowiki> | |||
Hotový projekt obsahuje dokumentáciu zdrojového kódu v anglickom jazyku. | |||
Projekt na stiahnutie: [[Súbor:LCD HELLO WORLD.rar]] | |||
== Zdroje a odkazy == | |||
* [http://thefreescalecup.wikidot.com/en:k40-kwikstik-kit Stránka The Freescale Cup Wiki pre KwikStik modul] | |||
* [http://cache.freescale.com/files/32bit/hardware_tools/schematics/KWIKSTIK-K40-SCH_V4.pdf?fpsp=1 Schéma KwikStik modulu] |
Aktuálna revízia z 23:16, 22. december 2012
Výpis "HELLO WORLD!" na LCD displeji KwikStik modulu
Na LCD displeji KwikStik modulu sa zobrazuje reťazec "HELLO WORLD!". Pretože LCD displej umožňuje zobraziť len 6 znakov, reťazec rotuje na LCD displeji z ľava do prava a naopak so stanovenou periódou. Po dosiahnutí konca reťazca program počká stanovený počet milisekúnd a pokračuje v rotácií reťazca do opačného smeru.
Použité ovládače a súbory
V projekte pre výpis reťaca "HELLO WORLD!" sú použité súbory a ovládače zo vzorových projektov spoločnosti Freescale. Sú to:
Driver_SLCD.c <br\> Driver_SLCD.h |
Ovládač pre LCD displej. |
Fonts_LCD.c<br\> Fonts_LCD.h |
Súbor obsahujúci definície znakov pre LCD dispej. Využíva ho ovládač Driver_SLCD. |
PounceTypes_v2.h | Súbor obsahujúci definície dátových typov pre ovládač Driver_SLCD. |
Clock.c<br\> Clock.h |
Súbor obsahuje funkciu (InitClock) a definície pre inicializáciu frekvencie MCU. Funkcia InitClock nastavi nasledovné MCU na nasledovné frekvencie:
|
SysTick.c<br\> SysTick.h |
Ovládač pre SysTick (System Tick Timer), ktorý je využívaný pre delay funkciu. SysTick časovač je časť jadra CortexM4 preto sa jéj popis v referenčnom manuáli PK40X256 nenachádza. Popis SysTick časovača je možné nájsť v Cortex M4 Generic User Guide. |
Popis programu
Bloková schéma programu:
Po spustení programu sa najprv inicializujú premenné.
STRING text = "HELLO WORLD!"; //Premenna obsahujuca retazec na vypis. int text_length = strlen(text); //Dlzka retazca. BOOL direction = DIR_LEFT; //Premena urcujuca smer rotacie retazca na LCD displeji. int counter = 0; //Pocitadlo rotacii.
Nasleduje inicializácia frekvencií jadra, SysTick časovača a LCD displeja.
InitClock(); //Inicializacia frekvencii jadra. InitSysTick(); //Inicializacia SysTick casovaca. _SLCDModule_Init(); //Inicializacia LCD displeja.
Algoritmus riadenia rotácie reťazca na LCD displeji.
for(;;) { if (direction == DIR_RIGHT){ if (counter <= (text_length - CHAR_ON_LCD_COUNT)){ _SLCDModule_TurnOffAllSegments(); _SLCDModule_PrintString(&text[counter], 1); counter++; Delay_mS(ROTATION_STEP_DELAY); }else{ Delay_mS(ROTATION_END_DELAY); direction = DIR_LEFT; } } else if (direction == DIR_LEFT){ if (counter > 0){ counter--; _SLCDModule_TurnOffAllSegments(); _SLCDModule_PrintString(&text[counter], 1); Delay_mS(ROTATION_STEP_DELAY); }else{ Delay_mS(ROTATION_END_DELAY); direction = DIR_RIGHT; } } }
Hotový projekt obsahuje dokumentáciu zdrojového kódu v anglickom jazyku.
Projekt na stiahnutie: Súbor:LCD HELLO WORLD.rar