#include "piccolo_all.h"#include "delays.h"Enumerációk | |
| enum | { KI, BE } |
Függvények | |
| void | hi_isr () |
| Magas prioritású programmegszakítás kiszolgálása. | |
| void | lo_isr () |
| Alacsony prioritású programmegszakítás kiszolgálása. | |
| void | initINT2 (void) |
| Az INT2 bemenet inicializálása. | |
| void | delay_ms (unsigned int d) |
| void | main (void) |
Változók | |
| enum { ... } | allapot |
| Állapotjelző. | |
Mivel a megszakítást nemcsak az ébresztéshez, hanem a kikapcsoláshoz is használjuk, definiálnunk kell a megszakítást kiszolgáló eljárást. A magas prioritású megszakítást választottuk, tehát a hi_isr() eljárásban szolgáljuk ki a megszakításokat. A pergésmentesítés érdekében minden interrupt után a kontaktuspergés várható idejére ideiglenesen letiltjuk a további INT2 megszakításokat.
Hardver követelmények: az "A kísérleti áramkör" című fejezetben bemutatott referencia áramkört ki kell egészíteni: az INT2 bemenet és VSS közé egy nyomógombot (SW3), az INT2 bemenet és VDD közé pedig egy 10 kohmos felhúzóellenállást kell kötni. PIC18F4550 esetén a belső felhúzást bekapcsoltuk, így a külső felhúzás elhagyható.
Projekt konfiguráció: a helyes működéshez a HID_BOOTLOADER mellett a USE_INTERRUPT szimbólumot is definiálni kell!
Definíció a(z) wakeup-int2.c fájlban.
| void delay_ms | ( | unsigned int | d | ) |
Késleltető eljárás, amely a Microchip PIC18 könyvtári eljárásait használja. A belső ciklus kb. 1 ms késleltetést végez.
| d | az előírt várakozási idő, 1 ms egységekben |
Definíció a(z) wakeup-int2.c fájl 65. sorában.
1.5.9