Operácie

KwikStik HELLO WORLD: Rozdiel medzi revíziami

Z SensorWiki

(Popis programu)
(Zdroje a odkazy)
 
(23 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 =
  
== Popis programu ==
+
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 21: Riadok 29:
 
Clock.h
 
Clock.h
 
|  
 
|  
Obsahuje funkciu ('''InitClock''') a definície pre inicializáciu frekvencie MCU. Funkcia '''InitClock''' nastavi nasledovné MCU na nasledovné frekvencie:
+
Súbor obsahuje funkciu ('''InitClock''') a definície pre inicializáciu frekvencie MCU. Funkcia '''InitClock''' nastavi nasledovné MCU na nasledovné frekvencie:
 
* ''core'' (jadro) = 96Mhz
 
* ''core'' (jadro) = 96Mhz
 
* ''bus'' (zbernica) = 48Mhz
 
* ''bus'' (zbernica) = 48Mhz
Riadok 32: 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.

Kwikstik hello world pic.jpg Kwikstik hello world pic2.jpg Kwikstik lcd display.jpg


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:

  • core (jadro) = 96Mhz
  • bus (zbernica) = 48Mhz
  • flexbus (flex-zbernica) = 48Mhz
  • flash (flash päť) = 25Mhz

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:

Kwikstik hello world graph.jpg

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

Zdroje a odkazy