User Manual

80
void writeIntegerLength(uint16_t number, uint8_t base, uint8_t length);
Tato funkce je ji varianta writeInteger, která umňuje definovat počet (délku) zobrazovaných
číslic, Kd je lka čísla pod definovaným počtem, funkce přidá úvodní nuly. Kd délka
přesahuje definovaný počet, funkce zobrazí pouze definovaný počet číslic.
Jako obvykle ukážeme chování funkce na několika příkladech:
writeIntegerLength(2340, DEC, 5);
výstup: 02340
writeIntegerLength(2340, DEC, 8);
výstup: 00002340
writeIntegerLength(2340, DEC, 2);
výstup: 40
writeIntegerLength(254, BIN, 12);
výstup: 000011111110
4.6.2.2. Příjem dat
Příjem dat přes sériové rozhraní je zcela založeno na přerušení. Přijímaná data se automaticky
na pozadí ukládají do takzvaného kruhového registru.
Jednoduchý příjem byte/znaku lze z registru číst pomocí funkce:
char readChar(void)
Funkce vrací sledující volný znak v bufferu a po přečtení ho z bufferu zruší.
Pokud je kruho registr prázdný, funkce vrá 0. Velikost bufferu můžete kontrolovat pomocí
funkce:
uint8_t getBufferLength(void)
před voláním funkce readChar, jinak nemůžete rozhodnout, zda je 0 skutečnou hodnotou dat
nebo ne.
Skupina znaků se může postupně číst z bufferu pomocí
uint8_t readChars(char *buf, uint8_t numberOfChars)
V parametru této funkce musíte předat ukazatel na pole a počet přijímaných znaků. Funkce
vrací skutečný počet znaků zapsaných do pole. To je užiteč, pokud buffer obsahuje méně
znaků, než je specifikováno parametrem numberOfChars.
Kd je buffer úplně plný, nově přijatá data NEPŘEPÍŠOU data v bufferu. Místo toho se nastaví
příznak (UART_BUFFER_OVERFLOW) ve stavové proměnné (uart_status), který signalizuje
přetečení bufferu.
Programy byste měli psát tak, aby se tato situace nenastala. Přetečení bufferu se obvykle
objeví, kd je příliš vysoká rychlost přenosu dat nebo dojde k dlouhodobému zaneprázdnění
programu a ten není schopen přečíst data z bufferu. Můžete se vyhnout používání dlouhých
zpoždění mSleep. Pokud potřebujete, můžete zvětšit velikost kruhového registru. Velikost
bufferu je nastavena na 32 znaků. V souboru RP6uart.h, můžete změnit definici
UART_RECEIVE_BUFFER_SIZE.
Rozsáhlejší ukázko program můžete najít na CD-ROM (Example_02_UART_02).