PIC24 Support Libraries
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
chap9
int1_bounce.c
Go to the documentation of this file.
1
/*
2
* "Copyright (c) 2008 Robert B. Reese, Bryan A. Jones, J. W. Bruce ("AUTHORS")"
3
* All rights reserved.
4
* (R. Reese, reese_AT_ece.msstate.edu, Mississippi State University)
5
* (B. A. Jones, bjones_AT_ece.msstate.edu, Mississippi State University)
6
* (J. W. Bruce, jwbruce_AT_ece.msstate.edu, Mississippi State University)
7
*
8
* Permission to use, copy, modify, and distribute this software and its
9
* documentation for any purpose, without fee, and without written agreement is
10
* hereby granted, provided that the above copyright notice, the following
11
* two paragraphs and the authors appear in all copies of this software.
12
*
13
* IN NO EVENT SHALL THE "AUTHORS" BE LIABLE TO ANY PARTY FOR
14
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
15
* OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE "AUTHORS"
16
* HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
17
*
18
* THE "AUTHORS" SPECIFICALLY DISCLAIMS ANY WARRANTIES,
19
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
21
* ON AN "AS IS" BASIS, AND THE "AUTHORS" HAS NO OBLIGATION TO
22
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
23
*
24
* Please maintain this header in its entirety when copying/modifying
25
* these files.
26
*
27
*
28
*/
29
30
#include "
pic24_all.h
"
31
32
/** \file
33
* Demonstrates the use of int1 interrupt
34
* to detect switch bounce.
35
*
36
*
37
*/
38
39
//Interrupt Service Routine for INT1
40
volatile
uint8_t
u8_bcnt;
41
void
_ISRFAST _INT1Interrupt (
void
) {
42
_INT1IF = 0;
//clear the interrupt bit
43
u8_bcnt++;
//increment the bounce count
44
}
45
46
#define SW1 _RB13 //switch state
47
#define SW1_PRESSED() (SW1==0) //switch test
48
#define SW1_RELEASED() (SW1==1) //switch test
49
/// Switch1 configuration
50
inline
void
CONFIG_SW1
() {
51
CONFIG_RB13_AS_DIG_INPUT();
//use RB13 for switch input
52
ENABLE_RB13_PULLUP();
//enable the pullup
53
}
54
55
56
int
main
(
void
) {
57
uint8_t
u8_cnt;
58
configBasic
(HELLO_MSG);
59
/** Configure the switch ***********/
60
CONFIG_SW1
();
61
/** Configure INT1 interrupt */
62
#if (defined(__dsPIC33E__) || defined(__PIC24E__))
63
CONFIG_INT1_TO_RP
(45);
//RPI45 shares RB13 pin on these families
64
#else
65
CONFIG_INT1_TO_RP
(13);
//RP13 shares RB13 pin
66
#endif
67
DELAY_US
(1);
68
_INT1IF = 0;
//Clear the interrupt flag
69
_INT1IP = 2;
//Choose a priority
70
_INT1EP = 1;
//negative edge triggerred
71
_INT1IE = 1;
//enable INT1 interrupt
72
while
(1) {
73
u8_bcnt = 0;
74
outString
(
"Press & release switch... "
);
75
while
(SW1_RELEASED());
76
DELAY_MS
(
DEBOUNCE_DLY
);
77
while
(SW1_PRESSED());
78
DELAY_MS
(
DEBOUNCE_DLY
);
79
u8_cnt = u8_bcnt;
//copy variable so will not change
80
if
(u8_cnt != 1)
outString
(
"..bounced: "
);
81
else
outString
(
"..no bounce: "
);
82
outUint8
(u8_cnt);
83
outString
(
"\n"
);
84
}
85
}
Generated by
1.8.4