Line No. | Rev | Author | Line |
---|---|---|---|
1 | 6 | kaklik | //***************************************************************************** |
2 | // File Name : extinttest.c |
||
3 | // |
||
4 | // Title : example usage of external interrupt library functions |
||
5 | // Revision : 1.0 |
||
6 | // Notes : |
||
7 | // Target MCU : Atmel AVR series |
||
8 | // Editor Tabs : 4 |
||
9 | // |
||
10 | // Revision History: |
||
11 | // When Who Description of change |
||
12 | // ----------- ----------- ----------------------- |
||
13 | // 14-Dec-2004 pstang Created the program |
||
14 | //***************************************************************************** |
||
15 | |||
16 | |||
17 | //----- Include Files --------------------------------------------------------- |
||
18 | #include <avr/io.h> // include I/O definitions (port names, pin names, etc) |
||
19 | #include <avr/interrupt.h> // include interrupt support |
||
20 | |||
21 | #include "global.h" // include our global settings |
||
22 | #include "uart.h" // include uart function library |
||
23 | #include "rprintf.h" // include printf function library |
||
24 | #include "timer.h" // include timer function library |
||
25 | #include "extint.h" // include external interrupt library |
||
26 | |||
27 | // global variables |
||
28 | volatile u16 Int0Count; |
||
29 | volatile u16 Int1Count; |
||
30 | |||
31 | // functions |
||
32 | void extintTest(void); |
||
33 | void myInt0Handler(void); |
||
34 | void myInt1Handler(void); |
||
35 | |||
36 | //----- Begin Code ------------------------------------------------------------ |
||
37 | int main(void) |
||
38 | { |
||
39 | // initialize our libraries |
||
40 | // initialize the UART (serial port) |
||
41 | uartInit(); |
||
42 | // set the baud rate of the UART for our debug/reporting output |
||
43 | uartSetBaudRate(115200); |
||
44 | // initialize rprintf system |
||
45 | rprintfInit(uartSendByte); |
||
46 | // initialize timers |
||
47 | timerInit(); |
||
48 | |||
49 | // run the test |
||
50 | extintTest(); |
||
51 | |||
52 | return 0; |
||
53 | } |
||
54 | |||
55 | void extintTest(void) |
||
56 | { |
||
57 | u16 temp0, temp1; |
||
58 | |||
59 | // print a little intro message so we know things are working |
||
60 | rprintf("\r\n\n\nWelcome to the External Interrupt library test program!\r\n"); |
||
61 | |||
62 | // initialize the external interrupt library |
||
63 | rprintf("Initializing external interrupt library\r\n"); |
||
64 | extintInit(); |
||
65 | |||
66 | // configure external interrupts for rising-edge triggering. |
||
67 | // when a rising-edge pulse arrives on INT0 or INT1, |
||
68 | // the interrupt will be triggered |
||
69 | rprintf("Configuring external interrupts\r\n"); |
||
70 | extintConfigure(EXTINT0, EXTINT_EDGE_RISING); |
||
71 | extintConfigure(EXTINT1, EXTINT_EDGE_RISING); |
||
72 | |||
73 | // attach user interrupt routines. |
||
74 | // when the interrupt is triggered, the user routines will be executed |
||
75 | rprintf("Attaching user interrupt routines\r\n"); |
||
76 | extintAttach(EXTINT0, myInt0Handler); |
||
77 | extintAttach(EXTINT1, myInt1Handler); |
||
78 | |||
79 | // enable the interrupts |
||
80 | rprintf("Enabling external interrupts\r\n"); |
||
81 | // (support for this has not yet been added to the library) |
||
82 | sbi(GIMSK, INT0); |
||
83 | sbi(GIMSK, INT1); |
||
84 | |||
85 | // In this loop we will count the number of external interrupts, |
||
86 | // and therefore the number of rising edges, that occur in one second. |
||
87 | // This is precisely the frequency, in cycles/second or Hz, of the signal |
||
88 | // that is triggering the interrupt. |
||
89 | |||
90 | while(1) |
||
91 | { |
||
92 | // reset interrupt counters |
||
93 | Int0Count = 0; |
||
94 | Int1Count = 0; |
||
95 | // wait 1 second |
||
96 | timerPause(1000); |
||
97 | // get counter values |
||
98 | temp0 = Int0Count; |
||
99 | temp1 = Int1Count; |
||
100 | // print results |
||
101 | rprintf("Frequency on INT0 pin: %dHz -- On INT1 pin: %dHz\r\n", temp0, temp1); |
||
102 | } |
||
103 | } |
||
104 | |||
105 | void myInt0Handler(void) |
||
106 | { |
||
107 | // count this interrupt event |
||
108 | Int0Count++; |
||
109 | } |
||
110 | |||
111 | void myInt1Handler(void) |
||
112 | { |
||
113 | // count this interrupt event |
||
114 | Int1Count++; |
||
115 | } |
||
116 |
Powered by WebSVN v2.8.3