Programování mikropočítačů Programování HCS08 v C KBI, Časovač.

Slides:



Advertisements
Podobné prezentace
ProBot © Ondřej Staněk.
Advertisements

Autor:Ing. Peter Podoba Předmět/vzdělávací oblast:Elektrotechnická zařízení Tematická oblast:Údržba elektrických zařízení Téma:PLC LOGO! Siemens – funkce.
Komunikace periférii.
Autor:Ing. Peter Podoba Předmět/vzdělávací oblast:Digitální technika Tematická oblast:Mikroprocesorová technika Téma:Obvod přerušení od INT RB0 Ročník:4.
ALTERA Cyclone II 4608 – LE až 1152 Kbitů RAM konfigurace pomocí sériového rozhraní podpora více I/O standardů až 4 PLL až 16 globálních hodin podpora.
SYSTÉM PŘERUŠENÍ U 68HC11.
Automatizační technika
Programování PA - 2.
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Václav Bartoněk, 6. G MěVG Klobouky u Brna
Vestavné mikropočítačové systémy
Cvičení z NMS Rozvrh cvičení Přehled použitého hardware
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Vestavné mikropočítačové systémy
Tato prezentace byla vytvořena
Digitální učební materiál
Čítače a časovače, přerušovací systém
Vestavné mikropočítačové systémy
Sekvenční logické obvody
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY
Informatika / …o počítači (základní pojmy, jednoduché představy) 2006.
TEP Přerušení č.7. Přerušení Téma Přerušení TEP Předmět TEP Juránek Leoš Ing. Autor Juránek Leoš Ing. TEP.
TEP EEPROM č.8. EEPROM Téma EEPROM TEP Předmět TEP Juránek Leoš Ing. Autor Juránek Leoš Ing. TEP.
Výrok „Já bych všechny ty internety a počítače zakázala.“
Zuzana Máslová Zuzana Máslová GIO Semily GIO Semily Nad Špejcharem Semily Nad Špejcharem Semily / /2008 Informace.
ADC / DAC. Analog Digital Converter (ADC) Jádra 56F802X a 56F803X obsahují 2 A/D převodníky s parametry:  12 bitové rozlišení  Max. hodinová frekvence.
Technické prostředky PLC OB21-OP-EL-AUT-KRA-M Ing. Petr Krajča.
PROGRAMOVATELNÉ AUTOMATY CV PROCESY 03 Ing. Jana Horáková Elektrotechnika
Číslicový generátor Praktická zkouška z odborných předmětů 2008 Vyšší odborná škola a střední průmyslová škola elektrotechnická Olomouc M/004 Slaboproudá.
Popis obvodu 8051.
Srovnání mikrokontrolerů
Procesor Renesas H8S/2633F.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
PROGRAMOVATELNÉ AUTOMATY CV ČASOVAČE 08 Ing. Jana Horáková Elektrotechnika
Programovatelné automaty CV detekce hrany impulzu 13
Mikroprocesor.
ALTERA Stratix – LE až 7427 Kbitů RAM tři bloky RAM pamětí rychlé DSP bloky až 12 PLL (4+8 rychlých) až 16 globálních hodin a 22 zdrojů podpora.
Přerušení programu Střední odborná škola Otrokovice Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Miloš Zatloukal.
Číslo projektu CZ.1.07/1.5.00/ Číslo materiálu
Integrovaný A/D převodník PIC16F877 osnova:
Úloha 4 Ovládání motoru pomocí detekce zvuku a ultrazvuku Projekt CZ.1.07/1.1.16/ Bc. Jaroslav Zika 2014.
Úloha 1 Měření úrovně zvuku pomocí zvukového senzoru na vstupu mikroprocesoru Projekt CZ.1.07/1.1.16/ Bc. Jaroslav Zika 2014.
Úloha 2 Zabezpečení prostoru pomocí detekce zvuku. Projekt CZ.1.07/1.1.16/ Bc. Jaroslav Zika 2014.
Programování mikropočítačů Programování HCS08 v jazyku C.
Mikropočítače a PLC Programování mikropočítačů HCS08 v jazyku C Mikropočítače a PLC.
Programování mikropočítačů Programování HCS08 v jazyku C.
Programování mikropočítačů Programování HCS08 v C Obsluha vstupů a výstupů, displej.
Programování mikropočítačů Práce s PLC Foxtrot. PLC Foxtrot na učebně Pří PLC Foxtrot Tlačítkové panely pro ovládání digitálních vstupů Sedmisegmentovka.
Odborný výcvik ve 3. tisíciletí Tato prezentace byla vytvořena v rámci projektu.
PC základní jednotka.
Výukový materiál zpracován v rámci projektu
Programování mikropočítačů Platforma Arduino
Inicializace portů mikrokontroléru
Vývojový kit Freescale M68EVB908GB60
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Jednočipové počítače – instrukční sada
Hardware jednočipových počítačů I
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Mikropočítač Vnitřní struktura 2
Programování mikropočítačů
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Informatika / …o počítači
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/
Transkript prezentace:

Programování mikropočítačů Programování HCS08 v C KBI, Časovač

Vytvoření projektu v C Vybereme C zde Ostatní volby jsou stejné jako u projektu v ASM

Pojmy Přerušení: způsob jak procesor přinutit reagovat na vnější podmět – např. signál od vnějších zařízení (připravenost dat, stisk klávesy apod.). V reakci na přerušení procesor přeruší provádění právě běžícího programu a provede speciální podprogram přiřazený danému přerušení nazývaný obsluha přerušení. Příklady využití přerušení: Stisk tlačítka (změna logické úrovně na portu) Uplynutí určitého času – od časovače Příchod dat – od sériového rozhraní Dokončení převodu – od analogově digitálního převodníku

Přerušení od tlačítka Keyboard interrupt module (KBI) obvod zajišťující generování přerušení při změně log. úrovně na vstupu. Původně pro připojení klávesnic, použitelný ale i pro jiné účely (reakce CPU na vnější signál) Připojen na portu A, tj. piny portu A mohou být buď KBI vstupy nebo „běžné“ vstupně/výstupní piny – nastavuje se v registru KBIPE. Pin nastavený v KBIPE jako KBI vstup bude vstupní, ostatní piny jsou stále konfigurovatelné pomocí registrů PTADD a PTAPE. Vektor přerušení od KBI je umístěn na adrese $FFD2

Režimy detekce Určují, za jakých podmínek se má vyvolat přerušení: a) Hrana (edge) – např. sestupná hrana = v jednom cyklu je log. úroveň 1 a v následujícím je log. 0. b) Hrana a úroveň (edge & level) PORTA, bity 0 – 3 = pouze sestupná hrana (nebo nízká úroveň) PORTA, bity 4 – 7 = vzestupná či sestupná hrana (nebo vysoká či nízká úroveň) - zde jsou tlačítka SW1 až SW4. Náběžná hrana log. 1 log. 0 Sestupná hrana

Registry pro řízení KBI KBI Status and control register (KBI1SC) Řídicí a stavový registr KBI. Význam jednotlivých bitů: KBIMOD – nastavení režimu detekce 1 = úroveň a hrana 0 = pouze hrana KBIE – povolení přerušení klávesnice 1 = přerušení povoleno 0 = přerušení není generováno KBACK – zápisem 1 vynulujeme příznak KBF KBF – příznak přerušení KBI 1 = byla detekována hrana/úroveň 0 = nebyla detekována hrana/úroveň KBEDGx – výběr hrany pro detekci, KBI bity 4 až 7 1 = náběžné hrany / vysoké úrovně (log.1) 0 = sestupné hrany / nízké úrovně (log.0)

Registry pro řízení KBI KBI pin enable register (KBI1PE) Každý bit nastavuje zda je odpovídající pin „vstupem klávesnice“ nebo běžným vstupem/výstupem KBIPE0 až KBIPE7: 1 = vstup klávesnice 0 = běžný I/O

Příklad - tlačítka a přerušení Zadání: Vytvořte program, který při stisku tlačítka SW1 zapne nebo vypne LED1. Pro detekci stisku tlačítka využijte přerušení klávesnice (KBI). Poznámka: obsluha přerušení v C je funkce označená klíčovým slovem interrupt.

Tlačítka - opakování Tlačítka jsou připojena na port A SW1 – PTA4, SW2 – PTA5 SW3 – PTA6, SW4 – PTA7  Port je řízen pomocí 3 registrů: PTAD – datový registr portu A, při jeho načtení získáme stav pinů portu, zápisem změníme stav výstupních pinů. PTADD – řídicí registr portu A, slouží pro konfiguraci jednotlivých pinů do vstupního nebo výstupního režimu. (0=vstupní, 1=výstupní režim) PTAPE – registr pro aktivaci interních „pull-up“ rezistorů (0=pull-up deaktivován, 1=pull-up aktivován).

Postup v programu Nastavit PTA4 jako vstup (tlačítko SW1) Nastavit PTF0 jako výstup (LED1) Nastavit řídící registr modulu KBI – povolit přerušení (v registru KBI1SC) Povolit použití PTA4 jako vstupu KBI Při stisku tlačítka bude obvod KBI generovat přerušení a provede se naše obsluha – funkce kbi_int().

Obsluha tlačítka – vývojové diagramy Začátek Inicializace portu F Inicializace KBI Povolení přerušení Resetuj Watchdog KBI_int Nastav bit KBACK v reg. KBI1SC na 1 Čekej 10ms pro doznění zákmitů Invertuj stav PTFD0 Návrat Obsluha přerušení od KBI modulu: Hlavní program:

Program - tlačítko void cekej(void); void MCU_init(void); /* Device initialization function declaration */ // definujeme globalni promennou jako ukazatel na funkci // a to na dane misto pameti (na adresu vektoru preruseni) // Do teto promenne nastavime adresu nasi funkce kbi_int interrupt void kbi_int(void);// prototyp funkce obsluhy preruseni void (*const = kbi_int; void main(void) { PTADD_PTADD4 =0; // PTA4 vstupni rezim PTAPE_PTAPE4 = 1;// pull-up pro PTA4 zapnut PTFD = 0xFF; // zhasneme LED diody PTFDD_PTFDD0 = 1;// PTF0 vystupni rezim PTFPE = 0x00;// pull-up vypnuty KBI1SC = 0x06;// nast. ridiciho reg. KBI - preruseni povoleno KBI1PE = 0x10;// PTA4 vstup pro KBI EnableInterrupts; /* enable interrupts */ for(;;) { __RESET_WATCHDOG(); /* feeds the dog */ } /* loop forever */ } interrupt void kbi_int(void) { // cekej na dozneni zakmitu na tlacitku cekej_10ms(); // pokud LED sviti, zhasnout if ( PTFD_PTFD0 == 0 ) PTFD_PTFD0 = 1; else PTFD_PTFD0 = 0; // jinak rozsvitit // potvrd KBI modulu prijem preruseni KBI1SC_KBACK = 1; }

Využití časovače v C, Přerušení při přetečení čítače (TOF)

Použití přerušení časovače Při přetečení čítače se generuje přerušení TOF (TOF = timer overflow interrupt) Hodnota čítače, při které dojde k přetečení je nastavitelná v tzv. modulo registru Výběr zdroje hodinového kmitočtu Programovatelná frekvenční dělička Dělení 1, 2, 4… bit čítač TOF Komparátor Reset čítače - Interní f BUS (20MHz) - Interní XCLK - Externí 16 bit Modulo registr

Jak nastavit časovač (1/4) 1)Vybrat zdroj hodinového kmitočtu pro modul časovače v řídicím registru TPMxSC bity CLKSB a CLKSA. CLKSBCLKSAZdroj hodinového kmitočtu 00TPM modul deaktivován 01BUSCLK – hodinový kmitočet sběrnice (20MHz) 10XCLK – fixní hodinový kmitočet 11Externí zdroj hodinového kmitočtu

Jak nastavit časovač (2/4) 2)Zvolit požadovaný dělící poměr hodinového kmitočtu v prescaleru (děličce kmitočtu) časovače. TPMxSC bity PS2, PS1 a PS0 PS2PS1PS0Dělící poměr prescaleru

Jak nastavit časovač (3/4) 3)Nastavit modulo registr (TPMxMODH:TPMxMODL) na požadovanou hodnotu. Čím menší číslo uložíme, tím častěji bude časovač přetékat a vyvolávat přerušení TOF. 4)Povolit přerušení od přetečení časovače v registru TPMxSC bit TOIE. TOIE = 1 – přerušení od přetečení časovače povoleno TOIE = 0 – přerušení od přetečení časovače zakázáno 5)V obsluze přerušení od TOF nezapomenout přečíst řídicí registr TPMxSC a zapsat do bitu TOF nulu. Tím se vynuluje příznak přerušení a je možné opustit obsluhu přerušení. V případě nedodržení tohoto postupu dojde k zacyklení požadavků na přerušení.

Jak nastavit časovač (4/4)  Hodnotu modulo registru (TPMxMODH:TPMxMODL) časovače pro požadovaný čas do přetečení časovače lze vypočítat dle následujícího vzorce: Kde:Modulo – údaj, který zapíšeme do modulo registru t TOF – požadovaný čas do přetečení časovače [s] f source – frekvence zdroje hodinového kmitočtu [Hz] Prescaler – nastavení vstupní frekvenční děličky Pozn.: Prescaler (frekvenční dělič) je nutné pro docílení co nejvyšší přesnosti nastavit tak, aby modulo bylo co největší číslo (nesmí ovšem přesáhnout hodnotu 65535).

Časovač v C – ukázkový program Zadání: Vytvořte program, který bude na výstupu PTF0 generovat obdélníkový signál o frekvenci 2 Hz (blikat LED1). Využijte přerušení od časovače. Poznámka: obsluha přerušení v C je funkce označená klíčovým slovem interrupt.

Generátor obdélníkového signálu – vývojové diagramy Začátek Inicializace portu F Inicializace TPM1 Povolení přerušení Reset watchdog systému TOF_int Potvrď příjem přerušení TPM1 Invertuj stav PTF0 Návrat Obsluha přerušení TOF od TPM1 modulu: Hlavní program:

Program - časovač void MCU_init(void); /* Device initialization function declaration */ interrupt void timer_int(void); // prototyp funkce pro obslouzeni preruseni // definujeme globalni promennou jako ukazatel na funkci a to na dane misto pameti // (na adresuvektoru preruseni) a do teto promenne nastavime adresu nasi funkce timer_int void (*const = timer_int; char svit = 0; void main(void) { PTFDD_PTFDD0 = 1; // bit 0 portu F jako vystup PTFPE = 0;// pull-up vypnuty PTFD=0xFF; // zhasneme LED diody TPM1SC = 0x4F; // source fbus, delicka 128 TPM1MOD = 39063; // modulo registr EnableInterrupts;// povoleni preruseni for(;;) { __RESET_WATCHDOG(); /* feeds the dog */ } /* loop forever */ } interrupt void timer_int(void) { TPM1SC &= 0x7F; // nuluj priznak preruseni // tj bit 7 a neguj stav led (^ je XOR) // PTFD_PTFD0 = PTFD_PTFD0 ^ 0x01; // nebo takto s promennou svit if ( svit ) { svit = 0; PTFD_PTFD0 = 1; } else { svit = 1; PTFD_PTFD0 = 0; }

Konec Zvládli jste základy programování HCS08 v C