4.7 Blokové generování s hardwarovým zásobníkem
Charakteristika:
- zařízení obsahuje obvody pro kontinuální (ovladač průběžně doplňuje nová data zařízení) nebo cyklické (zařízení generuje cyklicky blok data zapsaný do zařízení před zahájením generování) generování dat na výstupní kanály (analogové výstupy, digitální výstupy)
- základní úroveň zásobníku je řešena uvnitř ovladače (tzn. v operační paměti PC); ovladač převezme data od uživatele a předává je do zařízení; kapacita tohoto zásobníku je implicitně nastavena na cca 800 tisíc vzorků a je zvětšena podle množství předaných dat při prvním voláním funkce Td_Set_Buffer_Data v klidovém režimu (tzn. v kroku 4 podle postupu níže).
- druhý zásobník je řešen hardwarově přímo v zařízení a je zaplňován ovladačem zařízení, z tohoto zásobníku jsou data směrována na výstupní kanály; kapacita tohoto zásobníku je omezena u stávajících zařízení zpravidla na 131072 vzorků (společné pro všechny generované kanály); v případě cyklického režimu je délka generovaného bloku vždy omezena kapacitou tohoto zásobníku
- generování dat je u stávajících zařízení iniciováno periodicky časovačem (součást zařízení)
Doporučení: Aplikační program by měl v uvodu inicializovat všechny použité I/O periferie do potřebných režimů a nastavit vhodné počáteční hodnoty.
Krok 1. Konfigurace generované sekvence
|
|
Pro konfiguraci generované sekvence (tzn. výběr generovaných výstupů, odpovídajících napěťových rozsahů, nastavení digitálních výstupů do sekvence, ...), je vyhrazena funkce Td_Config_Generating.
Upozornění: Možnosti funkce a její parametry se odlišují podle typu zařízení. |
Krok 2. Konfigurace režimu generování
|
|
V tomto kroku je definován pracovní mód generování (tzn. kontinuální nebo cyklický režim) pomocí funkce Td_Config_Generating_Mode. Touto funkcí je současně předána informace o typu spouštění generování a rovněž kanály nakonfigurované funkcí Td_Config_Generating přepnuty ze základního softwarového řízení do generátorového režimu (tzn. například analogový výstup standardně ovládaný funkcí Td_Set_AO je přepnut do režimu, kdy jsou data přenášena ze zásobníku generování; funkce Td_Set_AO je však dostupná i v průběhu generování a může být využita pro přednastavení hodnoty, na kterou bude výstup přepnut po dokonční generování, viz krok 8).
Posledním parametrem této funkce povolujeme vazbu na případné souběžné měření, kdy jsou funkce Td_Start_Generating a Td_Stop_Generating jsou nepovinné a generování je ovládáno funkcemi Td_Start_Acquisition a Td_Stop_Acquisition. |
Krok 3. Nastavení frekvence generování
|
|
V tomoto kroku je nastavena frekvence generování (tzn. frekvence spouštění sekvence vybraných výstupů) funkcí Td_Config_Timing_Generating. |
Krok 4. Přenos dat pro generování
|
|
Přenos dat se realizuje funkcí Td_Set_Buffer_Data.
Touto funkcí je třeba připravit data do bufferu zařízení před zahájením generování.
Význam funkce se poněkud liší pro jednotlivé režimy činnosti nastavené v kroku 2.
Mód kontinuální generování:
Program může předat všechna data ke generování v jednom bloku před zahájením generování, bude-li však zvolena možnost doplňovaní dat v průběhu generování, je nezbytné předat data odpovídající ideálně plné kapacitě zásobníku zařízení (tzn. zpravidla 131072 vzorků), v případě nízkých frekvencí pak alespoň data představující 1 sekundu generování.
Mód cyklické generování: Je nezbytné předat všechna data, která zařízení bude po startu cyklicky generovat.
|
Krok 5. Čekání na přenos dat do zařízení
|
|
Před startem generování je nezbytné vyčkat na fyzický přenos dat do zařízení.
Pro test dokončeného přenosu je určena funkce Td_Get_Generating_Status; jejím voláním s parametrem parameter=2 lze zjistit počet vzorků fyzicky přenesených do zařízení.
V případě kontinuálního generování je nezbytné vyčkat na přenos dat odpovídajících ideálně plné kapacitě zásobníku zařízení (tzn. zpravidla 131072 vzorků), v případě nízkých frekvencí pak alespoň na data představující 1 sekundu generování. V případě cyklického režimu je nezbytné vždy vyčkat na přenos všech dat. |
Krok 6. Start generování
|
|
Pro start generování je určena funkce Td_Start_Generating.
Je-li parametr wait_for_acquisition při volání Td_Config_Generating_Mode nastaven na hodnotu 0, je generování zahájeno ihned. Je-li však tento parametr nastaven na hodnotu větší než 0, není použití funkce Td_Start_Generating povinné a generování je vždy zahájeno prvním voláním funkce Td_Start_Acquisition.
V případě cyklického módu lze zahájit start generování bez provedení kroků 1-5 v případě opakovaného cyklického generování, tzn. kdy je funkce Td_Start_Generating volána po předešlém volání funkce Td_Stop_Generating v cyklickém režimu (data z předešlého generování zůstavají uložena v zařízení). Mezi Start/Stop funkcemi však nesmí být použita žádná funkce konfigurující generování.
|
Krok 7. Doplňování dat při kontinuálním módu generování
|
|
Použitím funkce Td_Set_Buffer_Data je potřeba průběžně doplňovat data do zásobníku knihovny, následný přenos do zásobníku zařízení jsou data přenášena automaticky knihovnou.
Tento krok má význam pouze pro režim kontinuálního generování, v režmi cyklického generování již žádná data doplňovat do zařízení nelze (celý objem dat je nutné předat před voláním funkce Td_Start_Generating!
|
Krok 8. Ukončení generování, převedení zařízení do klidového režimu
|
|
Je-li parametr wait_for_acquisition při volání Td_Config_Generating_Mode nastaven na hodnotu 0, je voláním funkce Td_Stop_Generating generování ukončeno a zařízení je připraveno na novou konfiguraci nebo nový start generování v cyklickém režimu.
Je-li však tento parametr nastaven na hodnotu větší než 0, není použití funkce Td_Stop_Generating povinné a generování je automaticky ukončeno voláním funkce Td_Stop_Acquisition.
Pomocí funkce Td_Config_Generating_Mode lze následně přepnout výstupy zpět do softwarového řízení.
|
Grafické znázornění postupu
|