Laboratorní zdroj – 11. Slave modul ATmega16 UART

Popis programu, který prostřednictvím sériového kanálu UART na procesoru ATmega16 přijímá data z nadřízené desky Master, odesílá odpověď, nastavuje DA převodník DAC8563 a čte data z AD převodníku ADS8341.

DAC8562 ADS8343

 

Komunikaci mezi procesory řídí deska Master, takže sériový kanál procesoru ATmega16 čeká na data, která vyšle Master. Je detekován první znak ‚Z‘, kterým začíná každý paket 20-ti bajtů. Předpokládá se, že na sériové sběrnici je připojeno větší množství Slave modulů. Proto je při příjnu kontrolován ještě čtvrtý znak, který označuje číslo modulu. Pokud jsou tyto dva znaky součástí přijatého paketu, bude přijato všech dvacet znaků do pole dat SerialArray.

Potom program vypočítá CRC přijatých znaků a výsledek porovná s CRC, který vypočítal Master a uložil na konec vysílaného paketu. Když jsou oba CRC shodné, předpokládá se, že zpráva je bez chyb a data budou použita k ovládání Slave modulu.

Ihned po dokončení příjmu dat a vyhodnocení jeho správnosti jsou do pole dat SerialArray uloženy hodnoty, které bude Slave modul vysílat okamžitě vysílat. Předpokládá se, že Master po odeslání zprávy nechá dostatečný prostor na sběrnici a jiný modul nebude vysílat. Takže Slave nekontroluje, zda je sběrnice volná. Součástí vysílané zprávy jsou data naměřená AD převodníkem a CRC vysílaných dat.

Celá komunikace je obsluhována programy přerušení od sériového kanálu.

Hlavní program procesoru na začátku nastaví hodnoty registrů, které ovládají periferní zařízení, I/O porty procesoru, sériový kanál, SPI kanál pro komunikaci s převodníky a vynuluje hodnoty proměnných.

Ve smyčce hlavního programu jsou nastavovány hodnoty napětí a proudu na DA převodníků. Hodnoty z AD převodníku – napětí a proud, jsou ukládány do pole dat a jsou počítány průměrné hodnoty z toho, co je naměřeno.

Hlavičkový soubor definuje makra, deklaruje proměnné a funkce, které budou potřebné v hlavním programu

Hlavní program

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *