KOLEČEK, T. Laboratorní mikrokontrolérový systém FEKTis [online]. Brno: Vysoké učení technické v Brně. Fakulta elektrotechniky a komunikačních technologií. 2019.
Úkolem studenta v rámci jeho diplomové práce byl návrh a realizace nové centrální jednotky laboratorního mikroprocesorového systému využívaného k výuce povinného magisterského předmětu „Počítače pro řízení“. Původní centrální jednotka je zastaralá a student měl navrhnout a zrealizovat novou jednotku založenou na platformě ARM tak, aby bylo možné jednoduše využít stávajících modelů a příslušenství. Student měl za úkol nalézt takové řešení, které by bylo hardwarově, a hlavně napěťově kompatibilní se stávajícím řešením. Toto řešení měl student zrealizovat a pro některé stávající modely vytvořit demonstrační úlohy. Student na počátku své práce provedl literární a internetový průzkum, nastudoval stávající řešení laboratorního systému a na základě zjištěných informací navrhnul koncepci nové procesorové jednotky. Student dále navrhnul obvodové řešení, které zrealizoval a oživil. K nově zrealizované jednotce připojil několik vytipovaných periferních jednotek, pro která vytvořil vzorové programové vybavení. Student tak demonstroval, že nově zrealizovaná procesorová jednotka je ve stavu, kdy je možné ji nasadit do modifikované výuky. Student v rámci práce postupoval podle zadání, správně si naplánoval postup prací a splnil všechny body zadání. Koncepce i řešení systému plně vyhovuje původnímu záměru. V rámci semestru student postupoval samostatně a vhodně využíval konzultací vedoucího práce. Kvalita textové práce je na nižší úrovni a chybí v ní některé části, jako je celková prezentace realizovaného zařízení. Bez ohledu na tuto výtku však student prokázal své technické schopnosti a jeho diplomovou práci doporučuji k obhajobě.
Úkolem studenta bylo důkladně se seznámit se stávajícím výukovým systémem I51 a navrhnout modernizaci jeho procesorové karty za využití současných mikrokontrolérů s jádrem ARM. Dle textu jeho práce pochopil fungování koncových periferií, které měl za úkol zachovat i v novém systému, což je podstatné. V jeho popisu původních rozšiřujících karet se ovšem objevují nepřesnosti. Namátkou: displej obousměrný klopný obvod D? trimr ovládá kontrast, nikoli jas klávesnice není připojena přes ULN2803 (tento je sice ve schématu nakreslen, ale není osazen) prohozené vstupní a výstupní půlky portů V popisu procesorové karty a samotného mikrokontroléru AT89C51 má uvedeny některé informace chybně (počet zdrojů přerušení, nutnost externích pull-up rezistorů, periferie na portu 2, stavové bity jednotky USART, …). Jeho tvrzení, že port 2 lze použít jako GPIO, přestože je na něm horní polovina adresní sběrnice (v kontextu původního systému), je sice teoreticky možné, ale přinejmenším odvážné. Požadavek zadání na architekturu ARM a přitom zachování 5 V logiky značně omezuje množství dostupných mikrokontrolérů. Volba rodiny ATSAMC21 není, vzhledem k účelu práce, nejvhodnější. Její plus je jednoznačně vývojové prostředí Atmel Studio, které je, dle mých zkušeností, z ostatních prezentovaných alternativ uživatelsky nejpříjemnější. Nicméně asynchronní povaha periférií této rodiny a nutnost čekání na synchronizaci hodinových domén při přístupu ke značné části registrů ji činí obtížně použitelnou pro začátečníky a pro výuku. Například řada Kinetis od NXP byla na základě nedostupnosti vývojového prostředí zdarma vyřazena neprávem, neboť NXP na svém webu doporučuje víc jak desítku IDE, z nichž několik je jich postavených na Eclipse a podmínku dostupnosti splňují. Podle kapitoly 3 nemá student jasno v používaných sběrnicích. U RS232 se kromě RX a TX zmiňuje i o dalších signálech, ale uvádí pouze 3 z 6. O modulu UB232R s FTDI čipem tvrdí, že je převodník UART na RS232, načež v následující větě prohlašuje, že slouží ke komunikaci s PC přes USB. U I2C sběrnice a maximálního počtu zařízení zapomíná na broadcast. Formulace „Obvody se dají zapojit i jako tzv. multi-master …“ vypadá, jako by to byla pouze záležitost hardwarového zapojení. Detekci a řešení kolizí vůbec nezmiňuje. Při popisu komunikačního rámce neříká nic o adrese. Z popisu bitu ACK není úplně jasné, kdo ho vlastně posílá a už vůbec ne, co znamená, když někdo „neodešle nic“ (ve srovnání s předchozí log. 0 a log. 1). Pro stop bit naopak platí, že musí jít, když master přijme NACK (nebo musí master poslat repeated start), nikoli, že nesmí jít jindy. Po elektrické stránce vypadá navržená DPS použitelně. Do další verze doporučuji přidat blokovací kondenzátory na napájení všech integrovaných obvodů, nejen mikrokontroléru. Dále přidat ochranu proti přepólování na napájecí svorkovnici. Oddělit diodou 5 V napájení z USB od hlavního 5 V napájení. Potenciometr připojený k AD převodníku by měl být napájený spíše z filtrovaného napájení AD převodníku (signál N$6), než přímo z 5 V. Zvážil bych rozdělení symetrického napájení ±15 V na dvě větve – pro horní konektory a pro spodní, místo smyčky kolem celé DPS. Bezpodmínečně je ovšem potřeba předělat pořadí datových signálů osmibitové sběrnice displeje. Není jediný důvod, proč by tyto nemohly jít hezky popořadě, což by značně usnadnilo programování. S daným mikrokontrolérem není k výběru toolchainu co dodat. Nicméně jeho popis v práci mohl být podstatně obsáhlejší. O jeho instalaci není v práci ani zmínka. Je tam několik screenshotů, například nastavení optimalizací, u kterých není uvedeno, jak se na danou kartu dostat. Dále bych čekal podrobněji rozepsaný postup on-line ladění, jak je uvedeno v zadání. Navržená zadání úloh jsou přizpůsobena ukázce možností přípravku, nikoli výuce studentů. Z uvedené dokumentace není jasné, který kód mají psát studenti sami a který dostanou předpřipravený (minimálně pro začátek). Má-li být jejich úkolem napsat funkce, uvedené v ukázkovém projektu ve složce Drivers, pak dokumentace v práci prakticky chybí, protože je uvedeno pouze volání těchto funkcí (např. UART_Init). Naopak pokud mají tyto funkce dostat a pouze použít, nedozví se nic o programování mikrokontrolérů. Navíc v tomto případě ztrácí smysl body zadání, jako například nastavení rychlosti sériové linky, neb funkce UART_Init vše dělá sama a neumožňuje žádný parametr nastavit. Má-li být kladen důraz na využití periferií mikrokontroléru, pak například čtení rotačního enkodéru mohlo být ukázáno jak softwarově, tak pomocí hardwarového čítače mikrokontroléru. Na přípravku DC motoru mohlo být ukázáno generování PWM. Generování posloupnosti fází pro krokový motor mohlo být řešeno pomocí přerušení od časovače. Implementace vzorových úloh není zrovna ukázkovým příkladem čistě a srozumitelně napsaného kódu, který by se měl dávat studentům za vzor. Student nesystematicky používá různé způsoby zápisu a různé definice stejné věci (viz funkce LCD_Init). Definice interních konstant modulů jsou umístěny v hlavičkovém, místo zdrojovém souboru. Řešení rotačního enkodéru pomocí stavového automatu je zajímavě nezvyklé, nicméně o jeho větší efektivitě nejsem přesvědčen. Zbytečně se opakují některé kusy kódu (UART_Puts). Při kompilaci kompilátor vypisuje snadno odstranitelné warningy (nevyužité proměnné, nekonzistentní datové typy, implicitní deklarace funkcí). Studentovi doporučuji nastudovat si důkladně dokumentaci funkce atoi. Text práce je spíše kratší. Zasloužil by si ještě jednou přečíst, opravit překlepy (např. DSP -> DPS) a učesat některé větné konstrukce. Chybí seznam a vysvětlení použitých zkratek. V tištěných přílohách by mělo být schéma a výkresy navržené DPS. Seznam použité literatury je dost krátký. Čekal bych v něm minimálně katalogové listy od všech použitých integrovaných obvodů, protože si nedokáži představit, jak je student bez těchto informací mohl zapojit. Ke každému bodu zadání student vypracoval alespoň nezbytné minimum, proto práci doporučuji k obhajobě a hodnotím E, 55 bodů.
eVSKP id 119265