User Manual
80
void writeIntegerLength(uint16_t number, uint8_t base, uint8_t length);
Tato funkce je jiná varianta writeInteger, která umožňuje definovat počet (délku) zobrazovaných
číslic, Když je délka čísla pod definovaným počtem, funkce přidá úvodní nuly. Když 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í následující volný znak v bufferu a po přečtení ho z bufferu zruší.
Pokud je kruhový registr prázdný, funkce vrátí 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čné, pokud buffer obsahuje méně
znaků, než je specifikováno parametrem numberOfChars.
Když 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í, když 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ázkový program můžete najít na CD-ROM (Example_02_UART_02).