MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Speciální obvody a jejich programování v C 1. díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 08 Ver.1.10 J. Zděnek, 2017 1
Speciální obvody - úvod Počítač elektrického pohonu vyžaduje určitý speciální hardware, aby bylo možné pohon správně řídit. Na následujícím snímku je systémové schéma elektrického pohonu, kde se od řídicího počítače požaduje: Komunikace s nadřazeným systémem nebo člověkem. Pro komunikaci se používá do počítače přidaný hardware, kterým se nyní nebudeme zabývat. Tento hardware se nazývá komunikační řadič (Communication Controller) a používá se několik různých typů. Ovládání stykačů a spínačů v pohonu (Logické řízení). Zde se nevyžaduje extrémní přesnost v časové oblasti. Tyto signály lze ovládat programově a použít běžné vstupní a výstupní porty. Ovládání tranzistorů výkonového měniče. Tyto signály musí být generovány velmi přesně. Za tím účelem je v počítači pomocný hardware (Compare Unit), který umožňuje programu realizovat požadovanou časovou přesnost. A1B14MIS Mikroprocesory pro výkonové systémy 08 2
Speciální obvody - úvod Pokračování z minulého smímku: Měření analogových signálů (napětí, proud, teplota, ). Pro tyto účely je v počítači vestavěný blok převodníku analog-číslo (ADC Analog to Digital Converter). Přesné měření otáček inkrementálním (impulsním) čidlem. Tento úkol rovněž nelze realizovat pouze programem. Pomocný hardware, který společně s programem měření umožní se nazývá záchytná jednotka (Capture Unit) V počítači je vždy řadič přerušení (Interrupt Controller). Typicky každý s podpůrného hardware (zde zmíněného) je na řadič přerušení připojen. Pro generování časových intervalů do programu je pak nutný časovač (Timer) A1B14MIS Mikroprocesory pro výkonové systémy 08 3
Elektrický pohon řízený počítačem A1B14MIS Mikroprocesory pro výkonové systémy 08 4
Speciální obvody - úvod Na následujících snímcích je pak blokové shrnutí podstatných podpůrných bloků v počítači určeném pro řízení v reálném čase např. řízení elektrického pohonu počítačem. Snímky uvádějí jak české názvosloví tak anglické. V laboratoři budeme používat originální manuály k mikrokontroléru PIC18F87J11, který je v angličtině. Anglické názvosloví je tedy důležité pro dobrou a rychlou orientaci v této literatuře. A1B14MIS Mikroprocesory pro výkonové systémy 08 5
Speciální obvody - shrnutí A1B14MIS Mikroprocesory pro výkonové systémy 08 6
Speciální obvody shrnutí (anglické názvosloví) Control Computer (Hardware) CPU (Processor) Program & Data Memory Modulator (PWM) Impuls Outputs Higher Level System Communication (UART, Ethernet, CAN) Timer Interrupt Controller ADC Capture Unit Logic Inputs & Outputs Logic Outputs Analog Signal (Voltage) Impuls Signal Logic Inputs A1B14MIS Mikroprocesory pro výkonové systémy 08 7
Ovládání speciálních obvodů (SFR) Ovládání vestavěného hardware z C : Ovládací, stavové a výsledkové registry hardware vestavěného v mikrokontroléru se z hlediska programovacího jazyka C jeví jako proměnné definovaného jména (dle manuálu k PIC18F87J11) případně jako pojmenované bity definovaného jména u bitově adresovatelných registrů. Na rozdíl od běžných proměnných založených programátorem (tyto proměnné si pouze pamatují tam zapsanou hodnotu, kterou lze zpětně číst a měnit) tyto předdefinované proměnné ovládají nebo zachycují stav hardware. Předdefinované proměnné jsou součástí stejného obrazu (z hlediska C ) jako běžné proměnné. Toto zobrazení předdefinovaných proměnných do stejné části jako běžných proměnných se nazývá Mapování vstupů a výstupů do paměti (Memory Mapped Input Output) Oblasti předdefinovaných proměnných se říká SFR (Special Function Registers). Následující snímek princip připomíná. A1B14MIS Mikroprocesory pro výkonové systémy 08 8
Memory Mapped Special Function Registers (SFRs) A1B14MIS Mikroprocesory pro výkonové systémy 08 9
Zpracování analogových veličin počítačem Počítač (číslicový o tom je zde vždy řeč) přímo s analogovými veličinami zacházet neumí. Jediné co umí je zpracovat číselné hodnoty. Analogové veličiny je tedy nutné vyjádřit čísly. Pro číselné vyjádření (aproximaci) analogové veličiny se učiní dva kroky: (1) Vzorkování: Analogovou veličinu je nutné vzorkovat. Používá se vzorkování s konstantní periodou. Při vzorkování dochází ke ztrátě informace, neboť co se analogovou veličinou dělo mezi vzorky už není známo. Zde připomeňme Vzorkovací teorém, který říká jak nutno volit vzorkovací periody vzhledem k maximálním frekvenci obsažené v analogovém signálu, aby ze vzorků bylo lze signál opět rekonstruovat. (2) Kvantování: Odebrané vzorky nutno upravit podle počtu bitů převodu. Zde dochází k další ztrátě informace (vlivem počtu bitů převodu se zde nebudeme zabývat) Uvedené kroky demonstrují následující snímky. Pro jednoduchost zobrazení jsou použity 4 bity (tj. 16 možných hodnot). Ve skutečnosti se používá 8 nebo 10 nebo 12 (někdy i 16 bitů) A1B14MIS Mikroprocesory pro výkonové systémy 08 10
Analogový signál A1B14MIS Mikroprocesory pro výkonové systémy 08 11
Vzorkovaný analogový signál A1B14MIS Mikroprocesory pro výkonové systémy 08 12
Vzorkovaný a kvantovaný analogový signál A1B14MIS Mikroprocesory pro výkonové systémy 08 13
Zpracování analogových veličin počítačem Typické systémové schéma analogově číslicového převodu je na následujícím snímku. Filtr: Připomeňme, že blok filtru omezující horní frekvenci signálu (antialiasingový filtr) je analogový a je mimo počítač. Filtr zajišťuje dodržení Vzorkovacího teorému společně se správnou volbou vzorkovací periody v počítači. Vzorkovací obvod: Pro měření vyšších frekvencí může být doba vlastního převodu analog-číslo příliš dlouhá (signál by se během převodu příliš změnil). Proto je na vstupu umístěn vzorkovací obvod, který rychle odebere z analogového signálu vzorek a drží jeho hodnotu během vlastního analogově-číslicového převodu. Analogově-číslicový převodník: Metod převodu je velké množství, v mikrokontroléru je typicky požitá metoda Postupných aproximaci viz dále. A1B14MIS Mikroprocesory pro výkonové systémy 08 14
Zpracování analogových veličin počítačem A1B14MIS Mikroprocesory pro výkonové systémy 08 15
Zpracování analogových veličin počítačem Skutečné zapojení analogově-číslicového převodu: Analogový přepínač (Analog Multiplexer): Aby bylo možné snadno měřit analogové veličiny z více vstupů, je typicky na začátku analogověčíslicového bloku umístěn analogový přepínač, který se ovládá z počítače (programu). Vzorkovací obvod: Pro rychlý odběr vzorku ADC: Analogově-číslicový převodník (Analog to Digital Converter) je mikrokontroléru jeden (někdy dva). Pokud je ADC v mikrokontroléru jen jeden, pak ovšem lze v daný okamžik převádět jen jeden analogový vstup a pak je možné přepnou analogový přepínač na jiný vstup a převádět ten. Blokové zapojení analogově-číslicového bloku je na následujícím snímku. Obsahuje časovač vzorkovače, časovač ADC převodníku, registru pro volbu analogového kanálu, registru pro ovládání (spuštění) ADC převodníku (často společný se stavovým registrem) a registr výsledku (číslo) převodu. Blok generuje též signál žádosti o přerušení na konci převodu. A1B14MIS Mikroprocesory pro výkonové systémy 08 16
Analogově-číslicový blok Clock ADC Timer Sample&Hold Timer Multiplexer Analog Inputs ADC D Sample&Hold CH Channel AC ADC Command ADC Result AR Program Program Int Program A1B14MIS Mikroprocesory pro výkonové systémy 08 17
Metoda postupných aproximací - princip V mikrokontroléru je typicky pro vlastní analogově-číslicový převod použita metoda Postupných aproximací (Successive Aproximation Method). Princip metody je znázorněn na následujícím snímku ADC obsahuje zpětný převodník číslo-analog (DAC Digital to Analog Converter) a komparátor. Při prvním kroku převodu DAC generuje napětí poloviny celkového rozsahu ADC převodníku. Toto napětí se porovná s převáděným napětím Ux. Pokud je menší než Ux v dalším kroku se zachová a přidá se polovina ze zbývajícího rozsahu a součet se opět porovná s Ux. Pokud je součet větší než Ux přidané napětí se v dalším kroku nepřidá jinak se ponechá. V další kroku se přidá polovina ze zbývajícího rozsahu atd. až do konce převodu. Doba převodu: Nezávisí na velikosti vstupního napětí Ux Závisí na počtu převáděných bitů Polarita vstupního napětí Ux: Převodník je jednopolaritní (pouze kladná napětí typicky v rozsahu napájecího napětí mikrokontroléru). Záporná napětí nutno posunout vnějším obvodem (Operační zesilovač) do rozsahu ADC převodníku. A1B14MIS Mikroprocesory pro výkonové systémy 08 18
Metoda postupných aproximací - princip A1B14MIS Mikroprocesory pro výkonové systémy 08 19
Metoda postupných aproximací - princip Na následujícím snímku je blokové zapojení převodníku s metodou postupných aproximací. Zpětný převodník číslo-analog (DAC) vyžaduje ke své činnosti referenční napětí. To lze připojit: Pro menší přesnost převodu z napájecího napětí mikrokontroléru Pro větší přesnost převodu z vnějšího přesného zdroje referenčního napětí (polovodičová součástka s kompenzací vlivu okolní teploty) U ADC převodníku nutno rozlišovat: Rozlišení převodníku (Resolution) tj. kolik bitů má výstupní převedené číslo (typicky 8 nebo 10 nebo 12 někdy 16 bitů) Přesnost převodníku (Accuracy) tj. koli nejnižších bitů je stabilních při stabilním Ux. Přesnost převodníku silně závisí na návrhu vnějších obvodů (jak zapojením tak návrhem plošného spoje). V manuálu k mikrokontroléru jsou uvedeny vlastnosti vzorkovacího obvodu a některá doporučené pro návrh vnějších obvodů. A1B14MIS Mikroprocesory pro výkonové systémy 08 20
Metoda postupných aproximací blokové schéma A1B14MIS Mikroprocesory pro výkonové systémy 08 21
Generování přesných časových značek do programu V řadě programových řešení s požaduje generování přesných časových značek do programu (pomocí žádosti o přerušení). To lze realizovat několika způsoby. Jeden z nich je znázorněn na následujících snímcích. Generování přesných značek požaduje, aby žádost o obsluhu byla nastavena vždy po požadovaném intervalu a nedošlo ke zpoždění v čase. Nastavená žádost pak může být obsloužena v ISR s určitým zpožděním vlivem akci při přechodu do ISR a vlivem ostatních žádostí. Timer with Autoload (časovač s hw vyhodnocením periody): Na následujícím snímku je zobrazen princip vyhodnocení periody v hardware. Zde časovač krokuje nahoru a když dosáhne předvolené hodnoty (předvolené periody) automaticky se vynuluje a nastaví žádost o obsluhu (Int) V některých mikrokontrolérech časovač krokuje dolů, pak při dosažení nulové hodnoty hardware nastaví do časovače automaticky předvolenou periodu. A1B14MIS Mikroprocesory pro výkonové systémy 08 22
Generování přesných časových značek do programu Clock (Takt) Frequency Prescaler (Dělič kmitočtu) Timer (Časovač) Overflow (Přetečení) CP Count Prescaler (Předvolba) Program Int Žádost o obsluhu A1B14MIS Mikroprocesory pro výkonové systémy 08 23
Generování přesných časových značek do programu Následující snímek zobrazuje časové průběhy nastavení žádostí o obsluhu a vlastní obsluhu. Vlastní obsluha (volání ISR) může v čase kolísat vlivem akci při přechodu do ISR případně zpracování žádostí o obsluhu s vyšší prioritou Natavení žádostí o obsluhu pomocí časovače však je zcela pravidelné a nedochází k žádné časové ztrátě (prodloužení periody) A1B14MIS Mikroprocesory pro výkonové systémy 08 24
Generování přesných časových značek do programu Ttimer Ttimer T1 Int T2 Int time INIT ISR Tactual ISR CP Ttimer Calculation Calculation RET RET RET ISR = Interrupt Service Routine (Obslužný program přerušení) Ttimer = čas měřený časovačem Tactual = čas volání ISR A1B14MIS Mikroprocesory pro výkonové systémy 08 25
Capture Unit - Přesné měření periody Pro určení rychlosti otáčení motoru se často používá impulsní čidlo (inkrementální čidlo), které generuje impulsní signál s periodou závislou na rychlosti otáčení. Pomalé otáčky (dlouhou periodu) lze obvykle měřit čtením běžného portu (vzorkováním na základě žádosti o obsluhu od časovače). Vzniklá chyba je pro pomalé otáčky tolerovatelná. Rychlé otáčky už vyžadují podpůrný hardware, který se nazývá Záchytná jednotka (Capture Unit). Celkový pohled na princip a časování je na následujícím snímku. Další dva snímky pak ukazují situaci v detailu. A1B14MIS Mikroprocesory pro výkonové systémy 08 26
Capture Unit - Přesné měření periody Capture unit obsahuje (viz následující tři snímky): Referenční časovač (Timer) Čítač předvolby (Prescaler) pro vhodné nastavení hodin pro Timer Detektor události (Event Detektor) měřený impulsní se přivádí právě do detektoru události. Detektor událostí umí detekovat hranu v signálu. V některých mikrokontrolérech lze požadovanou událost přednastavit na náběžnou, sestupnou nebo obě hrany (v registru Event Mode) Předdělička událostí (není na následujícím snímku zobrazena) je připojena na výstup Detektoru událostí a umožňuje snížit frekvenci detekovaných událostí pro velmi rychlé průběhy. Oddělovací obvod výstup detektoru událostí ovládá oddělovací obvod připojený mezi referenční čítač a záchytný registr (Capture Register). Při detekci událostí se oddělovací obvod otevře a stav čítače se sejme od záchytného registru. Zároveň se nastaví žádost o obsluhu (int) Záchytný registr (Capture Register) slouží k uložení stavu časovače (času) v okamžiku detekce události. V obsluze ISR se pak záchytný registr přečte a vyhodnotí vzhledem k minulému čtení a tím se přesně určí perioda i když ISR je voláno s určitým časovým zpožděním vlivem akci při přechodu do ISR případně obsluhou ISR s vyšší prioritou A1B14MIS Mikroprocesory pro výkonové systémy 08 27
Capture Unit - princip Clock Prescaler Timer Input Event Detector EM Event Mode CR Capture Register Program Int Program T T Input T1 Int T2 Int time INIT EM T 0 RET ISR X CR RET ISR Y X X CR T X - Y RET A1B14MIS Mikroprocesory pro výkonové systémy 08 28
Capture Unit blokové schéma A1B14MIS Mikroprocesory pro výkonové systémy 08 29
Capture Unit časové průběhy princip použití Capture unit princip použití (viz následující snímek): Po příchodu událostí na vstupu (zde nastaveno na sledování náběžných hran) se stav referenčního časovače (čas příchodu hrany) uloží do Capture Registru a nastaví se žádost o obsluhu (Int). Po zavolání ISR se záznam v Capture Registru přečte. V proměnné se pamatuje čas příchodu minulé události (hrany). Odečtením nového záznamu a minulého času dostaneme hodnotu měřené periody. Nový odečet se uloží do proměnné jako minulý a tím ISR končí. Uvedený časový sled předpokládá, že mezi dvěma hranami nepřeteče referenční časovač dvakrát, v takové případě by výpočet nebyl správný. Přetečení referenčního časovače jedenkrát nevadí a odečet minulé a nové hodnoty je platný pokud velikost proměnné pro minulý čas je shodná s velikostí Capture registru (obykle 16 bitů). Výpočet se v tomto případě provádí modulo 16 a rozdíl je platný (ověřte). Jak je patrné z časového průběhu pokud je žádost o obsluhu od Capture Unit v rámci běžné periody, časové zpoždění přechodu do ISR nevadí. A1B14MIS Mikroprocesory pro výkonové systémy 08 30
Capture Unit princip použití (detail) A1B14MIS Mikroprocesory pro výkonové systémy 08 31
Impulsní čidlo pro měření rychlosti otáčení, směru a polohy Měření rychlosti, směru otáčení a polohy hřídele: Jednokanálovým impulsním čidlem (viz předchozí výklad) lze měřit pouze rychlost otáčení. To mnoha případech stačín neboť směr otáčení je zřejmý z jiných údajů (např. nastavení měniče u lokomotivy pro jízdu vpřed nebo vzad). Pro měření i směru otáčení a polohy je určeno čidlo, které generuje tzv. kvadraturní signál (viz následující smímek) Kvadraturní inkrementální čidlo je tříkanálové. Dva kanály (A, B) pro měření perioda a směru otáčení a jeden kanál (tzv. Index) pro určení průchodu hřídele nulovou polohou. Kanály A a B jsou navzájem přesazeny o 90o, Při otáčení jedním směrem předchází hrany kanálu A hrany kanálu B. Pří otáčení opačným směrem se pořadí hran kanálů A a B prohodí (viz následující smímek) Některé mikrokontroléry mají záchytnou jednotku (Capture Unit) již modifikovanou v hardware a mohou přímo kvadraturní signál zpracovat. A1B14MIS Mikroprocesory pro výkonové systémy 08 32
Impulsní čidlo pro měření rychlosti otáčení, směru a polohy A1B14MIS Mikroprocesory pro výkonové systémy 08 33
Výstupní signály mikropočítače DAC a PWM Výstupní signál s DAC (Digital to Analog Converter First Order Hold): V elektrických pohonech se výstup s DAC pro řízení měničů NEPOUŽÍVÁ. DAC nastaví výstupní hodnotu dle velkosti čísla na vstupu DAC a tato hodnota tam setrvá až do následující periody. Takový DAC se též nazývá (matematicky) First Order Hold (FOH). Blok s DAC se někdy použije pro pomocné účely např. pro řízení analogového ručkového přístroje (dnes už vyjímečně). Viz následující snímek. PWM modulátor: V elektrických pohonech se pro řízení výkonových měničů používá impulsní výstup, kde je požadovaná informace obsažena v šířce výstupního pulsu (viz. další snímek). Výstupní pulsy se generují pomocí kombinace software a hardware, celek se pak nazývá PWM modulátor. Compare Unit: Hardware pro podporu generování (společně se software) PWM výstupu se nazývá Compare Unit. Princip je popsán dále. A1B14MIS Mikroprocesory pro výkonové systémy 08 34
Výstupní signály mikropočítače - DAC A1B14MIS Mikroprocesory pro výkonové systémy 08 35
Výstupní signály mikropočítače PWM modulátor A1B14MIS Mikroprocesory pro výkonové systémy 08 36
Compare Unit - princip Compare Unit: je podpůrný hardware, který společně se software (to je hlavní část) vytvoří PWM modulátor. Systémové schéma a časové průběhy pro Compare Unit jsou na nasledujícím snímku. Další dva snímky zobrazují detail. Compare unit se skládá z: Časovače (Timer) s předděličkou (Prescaler) Číslicového komparátoru (Comparator) porovnává dvě čísla Registru času události (Compare Register) Generátoru událostí (Event Generator) generuje přednastavenou hranu na výstupu mikropočítače. Registru nastavení události (Event Register) Žádosti o přerušení (Int) Compare Register a Event Register jsou dostupné z programu Digitální komparátor před každou změnou hodnoty referenčního časovače (Timer) porovnává hodnotu časovače a Compare registru. Při shodě nastaví žádost o obsluhu (Int) a generuje přednastavenou událost na výstupu mikrokontroléru. A1B14MIS Mikroprocesory pro výkonové systémy 08 37
Compare Unit systémové schéma Program TC Timer Count Clock Prescaler Timer Comparator Event Generator Output CR Compare Register Event Register ER Program Int Program T0 T1 T2 T3 Output T1 Int T2 Int T3 Int time INIT ISR ISR ISR ER ER ER ER CR TC+T0 CR X+T1 CR X+T2 CR X+T3 X TC+T0 X X+T1 X X+T2 X X+T3 RET RET RET RET A1B14MIS Mikroprocesory pro výkonové systémy 08 38
Compare Unit schéma - detail A1B14MIS Mikroprocesory pro výkonové systémy 08 39
Compare Unit princip použití se software Compare Unit princip: Jednotka umožňuje přednastavit ze software čas v budoucnosti, kdy se má na výstupu generovat událost (přednastavená hrana). Hardware pak v předem nastavený čas přesně vygeneruje hranu a požádá o obsluhu (Int). Přednastavený čas si software uloží do proměnné. V ISR od Compare Unit (když se vygeneruje událost) software vypočítá další požadovaný čas nové události (pomocí uloženého času a nové hodnoty např. z regulátoru) a čas uloží opět do Compare Unit (do Compare Register) a rovněž přednastaví novou požadovanou událost (Event Register). Novou vypočtenou hodnotu software uloží místo minulé již spotřebované. Časový diagram výše popsané činností je na následujícím snímku. Zpoždění přechodu do ISR nevadí pokud je v rámci přednastaveného času další události. Událost (hrana) je generována přesně pomocí hardware. Výpočet dalšího času se provádí modulo a pokud je proměnná s minulým časem stejné velikosti jako Compare Register výsledek je správný. A1B14MIS Mikroprocesory pro výkonové systémy 08 40
Compare Unit princip použití se software A1B14MIS Mikroprocesory pro výkonové systémy 08 41
Tlačítko Potenciometr Čidlo rychlosti Vstup RJx Vstup RFx Vstup RJx Vstup RJx ADC PIC Výstup RHx Výstup RHx Výstup RHx Výstup RHx Výstup RHx A1B14MIS Mikroprocesory pro výkonové systémy 08 42
Hlavní smyčka programu RESET Init Vars Init ISR RCONbits.IPEN INTCON2bits.TMR0IP PIE1bits.ADIE IPR1bits.ADIP Str 119-134 Init Vstup TRISJ TRISH... Str. 135 Interrupt enable INTCON0 = 0b1110000 Str. 121 Init ADC ADCON0 ADCON1 Str 309, 310 While(1) Init Timer0 T0CON Str 193 Běh na pozadí Svícení LED PORTHbits.XX = CitImp = prevod>>2 If (CitImp >= 255) CitImp = 255 If (CitImp <= 0) CitImp = 0 A1B14MIS Mikroprocesory pro výkonové systémy 08 43
Obsluha přerušení 1ms ISRLOW Uložení Context INTCONbits.T MR0IF == 1 PIR1bits.ADIF == 1 Čti stav tlačítka Prev = ADRESH<<8+AD RESL Čti stav kanál A PIR1bits.ADIF = 0 Čti stav kanál B Obnov Context INTCONbits.TMR 0IF = 0 A1B14MIS Mikroprocesory pro výkonové systémy 08 44
Stavový diagram tlačítko PORTJbits.RJ7 == 0 0 PORTJbits.RJ7 == 1 PORTJbits.RJ7 == 0 4 PORTJbits.RJ7 == 0 1 PORTJbits.RJ7 == 1 PORTJbits.RJ7 == 1 5 2 PORTJbits.RJ7 == 0 PORTJbits.RJ7 == 1 6 VirtTlacitko = 0 3 VirtTlacitko = 1 PORTJbits.RJ7 == 0 PORTJbits.RJ7 == 1 A1B14MIS Mikroprocesory pro výkonové systémy 08 45
Stavový diagram tlačítko /* Start podprogramu obsluhy preruseni. */ if (INTCONbits.TMR0IF == 1) { switch(stavtl) { case 0: { if (PORTJbits.RJ7 == 1) stavtlnext = 1; else stavtlnext = 4; break; } case 1: { if (PORTJbits.RJ7 == 1) stavtlnext = 2; else stavtlnext = 4; break; } case 2: { if (PORTJbits.RJ7 == 1) stavtlnext = 3; else stavtlnext = 4; break; } case 3: { if (PORTJbits.RJ7 == 1) virttl = 1; else stavtlnext = 4; break; } case 4: { if (PORTJbits.RJ7 == 0) stavtlnext = 5; else stavtlnext = 1; break; } case 5: { if (PORTJbits.RJ7 == 0) stavtlnext = 6; else stavtlnext = 1; break; } case 6: { if (PORTJbits.RJ7 == 0) virttl = 0; else stavtlnext = 1; break; } } stavtl = stavtlnext; INTCONbits.TMR0IF = 0; } A1B14MIS Mikroprocesory pro výkonové systémy 08 46
Stavový diagram Snímač S5 PORTJbits.RJ7 == 0 0 PORTJbits.RJ7 == 1 PORTJbits.RJ7 == 0 4 PORTJbits.RJ7 == 0 1 PORTJbits.RJ7 == 1 PORTJbits.RJ7 == 1 5 2 PORTJbits.RJ7 == 0 PORTJbits.RJ7 == 0 PORTJbits.RJ7 == 1 PORTJbits.RJ7 == 1 VirtStopaA = 0 6 VirtStopaA = 0 If(virtStopaB == 0) citimp++; else citimp--; 3 VirtStopaA = 1 If(virtStopaB == 1) citimp++; else citimp--; A1B14MIS Mikroprocesory pro výkonové systémy 08 47
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Speciální obvody a jejich programování v C 1. díl KONEC České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 08 48