by David Kott
struct RotaryEncoderStruct {
int unused:4; // RB[0:3]
int A:1; // RB4
int B:1; // RB5
int unused2:2; // RB6-7
};
struct RotaryEncoderStruct RotaryEncoder;
#pragma BYTE PORTB = 0x06
#pragma BYTE RotaryEncoder = 0x06 // Place structure right over PORTB at
location 0x06
USHORT g_usEncoderCount = 0;
#pragma INT_RB
void
PortBInterrupt (void)
{
static BYTE OldPortB;
BYTE byTemp;
static struct RotaryEncoderStruct OldEncoder;
if (OldPortB != (byTemp=(PORTB & 0x30))) {
OldPortB = byTemp;
if (RotaryEncoder.A == OldEncoder.A) {
if (RotaryEncoder.B == RotaryEncoder.A)
--g_usEncoderCount;
else
++g_usEncoderCount;
} else {
OldEncoder.A = RotaryEncoder.A;
if (RotaryEncoder.B == RotaryEncoder.A)
++g_usEncoderCount;
else
--g_usEncoderCount;
}
}
// Handle more PORTB stuff here, like a button, or something.
}
Questions:
How many machine cycles does this take to run (worst case)? This sets the maximum rotational speed of encoder that can be tracked (tempered by the processor clock speed and the encoder resolution in lines/rev, obviously)+
Comments:
See also:
| file: /Techref/microchip/language/C/io/qenc-dk.htm, 2KB, , updated: 2009/4/22 22:22, local time: 2012/2/10 00:30,
38.107.179.232:LOG IN |
| ©2012 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://www.piclist.com/techref/microchip/language/C/io/qenc-dk.htm"> PIC C I/O Routine - Quadrature Encoder ISR</A> |
| Did you find what you needed? |
|
Calculator 7-seg LED chars, port values, resistor color codes and common values, ohms law, wavelength / frequency, RMS and Peak, max value for x bits, etc... |
|
The only consistant, simple to use yet powerful development environment. It simulates real-world devices via virtual component "plugins" (LED,LCD,key,motor,TV,etc) in real time, has a syntax highlighting editor, macro assembler and disassembler. Regular updates and third-party plugins keep this software ahead of any other PIC IDE. |
.