This is an old revision of the document!
Cíle • Prozkoumejte, jak je naimplementován blok kontrolního součtu, časovače, I2C komunikační sběrnice, pulzně šířkové modulace na zadaném mikrokontroléru. • Zjistěte, které části jsou již implementovány (Hardware Abstract Layer) . • Navrhněte seznam knihovních funkcí (Application Programming Interface), které jsou potřeba naimplementovat. • Navržené knihovní funkce naimplementujte v jazyku C. • Výsledné řešení otestujte. • Pro veškeré navržené funkce vytvořte dokumentaci v dOxygen formátu.
Výstupy Knihovní funkce a dokumentace v dOxygen formátu pro: • blok kontrolního součtu (CRC) • časovače (CCTIMER, SWTIMER) • I2C komunikační sběrnice (I2C) • pulzně šířkové modulace (PWM) Otestovat tyto knihovní funkce : • Spočítat kontrolní součet celé paměti a porovnat jej s očekávaným výsledkem. • S použitím čítače a sensoru zjistit rychlost a směr otáčení hřídele motoru. • Otestovat komunikaci po sběrnici s obvodem reálného času připojeného přes Arduino shield. • Otestovat řízení motoru pomocí H-můstku připojeného přes Arduino shield. • Otestovat funkčnost dostupných led diod. Knihovna logovacích funkcí pro zachycení chyb Cíle • Prostudujte způsob řešení pro zpracování chybových výstupu periferií procesoru. • Navrhněte knihovní funkce, které budou obstarávat obsluhu chyb a chybový výstup. • Knihovna bude podporovat různé typy výstupů v závislosti na nastavení preprocesorových maker (časová značka, jméno souboru – modulu, který hlásí chybovou hlášku, stupeň důležitosti) • Knihovna bude umožňovat volbu výstupu pro odesílání chybových zpráv (do FLASH paměti, na sériový výstup) v závislosti na nastavení preprocesorových maker. • Při implementaci je nutné brát v úvahu výslednou velikost chybového výstupu, která by měla být optimalizována na co nejmenší velikost. Pro dekódování optimalizovaného výstupu použijte script, který zkomprimovaná data načte a zobrazí je v čitelné podobě + možnost výstupu do JSON formátu. • Navržené řešení implementujte jako knihovní funkce v jazyku C pro zadaný mikrokontrolér. • V jazyce Python napište script pro následné dekódování. • Výsledné řešení otestujte. Výstupy • Knihovní funkce, které budou obstarávat obsluhu chyb a chybový výstup. • Script v jazyce Python pro následné dekódování logu. • Test logovacího systému s pomocí RaspberyPi, které bude řídit testovaný mikrokontrolér.
Reálný model pásového dopravníku řízený uC Cíle • Prozkoumejte, jak jsou naimplementované časovače a pulzně šířková modulace na zadaném mikrokontroléru (nastudovat dané části ve specifikaci mikrokontroléru). • Zjistěte, které části jsou již naimplementovány (Hardware Abstract Layer). • Navrhněte seznam knihovních funkcí (Application Programming Interface), které jsou potřeba naimplementovat. • Navrženou knihovnu funkcí naimplementovat v jazyku C. • Sestavte pásový dopravník z již hotových součástí stavebnice merkur. • Osaďte pásový dopravník DC motorem a rotačním snímačem. • V jazyce C naimplementujte vyčítání pozice dopravníku a následné řízení motoru s možností přímého řízení pozice dopravníku. • Vyzkoušejte různé typy řízení (PID regulace). • Pro knihovní funkce vytvořte dokumentaci v dOxygen formátu. • Výsledné řešení otestujte. Výstupy • Funkční model pásového dopravníku sestaveného ze stavebnice merkur. • Knihovní funkce a dokumentace v dOxygen formátu k řízení motoru a optimalizace k omezení času, kdy oba tranzistory v H-můstku jsou aktivní. • Knihovní funkce a dokumentace v dOxygen formátu k vyčítání pozice a rychlosti dopravníku. • Knihovní funkce a dokumentace v dOxygen formátu k PID regulaci. • Test - vstupem bude pozice dopravníku a dopravník musí dané pozice dosáhnout co nejrychleji s danou přesností.
Grafické uživatelské rozhraní (GUI) pro definování funkcionality vývodů mikrokontroléru a generování kostry kódu v jazyku C Cíle • Prozkoumejte, jak je implementován blok přiřazení funkce k vývodům mikrokontroléru (nastudovat specifikaci IO_CTRL bloku) pozn.: IO_CTRL - ovládá propojení mezi vývodem na ASICu a periferií uvnitř obvodu (například přiřadí funkci I2C.SDA nebo I2C.SCL k vývodům). • Zjistěte, které části jsou již naimplementovány (Hardware Abstract Layer). • Navrhněte implementaci uživatelského rozhraní v jazyce Python (inspirujte se jinými výrobci mikrořadičů - STM32CubeMX). • Všechna možná nastavení přiřazení v mikrořadiči budou popsána v JSON formátu. • Uživatelské rozhraní umožní čtení a zápis uživatelem zvolené konfigurace ve formátu JSON. • Uživatelské rozhraní umožní vygenerovat kostru v jazyku C, která bude implementovat funkcionalitu (přiřazení funkce k vývodu obvodu), která byla nastavena uživatelem v uživatelském rozhraní. • Navržené řešení implementujte a následně otestujte. Výstupy • Grafické rozhraní v jazyce Python včetně dokumentace. • Možnost generování C kódu z grafického rozhraní. • Možnost uložení a načtení aktuálního nastavení v grafickém rozhraní. • Možnost načíst definici přiřazení funkcionality specifické pro daný mikrořadič. Grafické uživatelské rozhraní (GUI) pro nastavení hodinových stromů v mikrokontroléru a generování kostry kódu v jazyku C Cíle: • Prozkoumat jak je implementován blok přiřazení hodinových stromů v mikrokontroléru (nastudovat specifikaci CLK_NRES bloku) pozn.: CLK_NRES - ovládá propojení hodinových stromů mezi vstupním hodinovým signálem a periferií, dále umožňuje nastavení hodinového závěsu (PLL) a různé hodinové děličky. • Hodinové stromy jsou popsány v JSON formátu a můžou být tím pádem generické. • Všechny omezující podmínky jsou popsány v JSON formátu. • Prozkoumejte, jaké jsou možnosti hodinových cest v mikrokontroléru. • Zjistěte, jak jsou implementovány stávající funkce (Hardware Abstract Layer). • Navrhněte implementaci uživatelského rozhraní (inspirujte se jinými výrobci mikrořadičů - STM32CubeMX). • Uživatelské rozhraní umožní čtení a zápis zvolené konfigurace ve formátu XML/JSON/jiné. • Uživatelské rozhraní umožní vygenerovat kostru v jazyku C, která bude implementovat funkcionalitu (nastavení hodin obvodu a periferií), která byla nastavena uživatelem v uživatelském rozhraní. • Uživatelské rozhraní kontroluje nastavení, zda-li dává smysl a respektuje pravidla definovaná specifikací (např. že max. výstupní frekvence PLL je 100MHz). • Navržené řešení zrealizujte a řádně otestujte. Výstupy: • Grafické rozhraní v Python včetně dokumentace. • Možnost generování C kódu z grafického rozhraní. • Možnost uložení a načtení aktuálního nastavení v grafickém rozhraní. • Možnost načíst omezující podmínky pro konfiguraci hodinových stromů v grafickém rozhraní. • Možnost načíst definici (topologii) hodinových stromů v grafickém rozhraní