====== ARM03 - Stopky ====== ^ Možný bodový zisk | 3+2b | ^ Vzorový program | {{ :courses:b2m37mam:homeworks:arm03_stopwatch.zip |ARM03_Stopwatch.zip}} | ===== Zadání ===== * Navrhněte program v jazyce C realizující stopky počítající do 99.99s se zobrazením času ve formátu ''%5.2f'' * Celá část času bude zobrazením jednotek a desítek vteřin, přičemž desítky vteřin se zobrazí pouze při překročení 10s * K vypracování využijte rozšiřující desku ([[courses:b2m37mam:tutorials:dev_kits:funduino|Funduino]]) s využitím dynamického displeje řízeným v multiplexním režimu * K řízení stopek využijte dvou tlačítek, kde první bude spouštět a zastavovat stopky a druhé je bude nulovat ===== Bonus ===== * S použitím záchytného systému (Input capture mód) rozšiřte stopky tak, aby se na displeji zobrazil staticky uplynulý čas vždy po stisku tlačítka * Do prvního stisku tlačítka pro zachycení času zobrazujte aktuálně uplynulý čas * Zachycení času nebude realizováno přes program, ale přímým napojením tlačítka na záchytný systém časovače (přes alternativní funkci) - zde je důležité si uvědomit možnosti {{ :courses:b2m37mam:stm32f401_refmanual.pdf#page=311 | časovačů}} v kombinaci s dostupnými tlačítky (PA1, PA4, PB0) * Vyčtení času z čítače nebo záchytného systému realizujte v hlavní smyčce programu, abyste neomezovali přerušovací systém * Při zastavení časovače se na displeji zobrazí aktuální čas ===== Doporučený postup pro bonus ===== * Vyberte si vhodný časovač pro realizaci úlohy s ohledem na možnosti propojení tlačítka (PA1, PA4, PB0) a záchytného systému časovače, viz. {{ :courses:b2m37mam:labs:stm32f401re.pdf#page=45 | tabulka alternativních funkcí }} ===== Podpůrné materiály ===== Datasheet posuvného registru {{ :courses:b2m37mam:projekty:74hc_hct595.pdf |74HC595}} ==== Převodní tabulka čísel na segmenty ==== // segments order: hgfedcba const char NumbersASCII[11] = { 0x3F, /* 0 */ 0x06, /* 1 */ 0x5B, /* 2 */ 0x4F, /* 3 */ 0x66, /* 4 */ 0x6D, /* 5 */ 0x7D, /* 6 */ 0x07, /* 7 */ 0x7F, /* 8 */ 0x6F, /* 9 */ 0x40, /* - */ }; ==== Časový diagram zápisu dat do displeje ==== {{ :courses:b2m37mam:tutorials:dev_kits:prubeh_zapisu_display.png?800 |}}