#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.