Maskinnära programmering 6B2266
Maskinnära programmering 6B2266
Maskinnära programmering 6B2266
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
#pragma origin 4<br />
interrupt int_server( void )<br />
{<br />
int_save_registers<br />
if( RBIF == 1 ) /* is it the RB pin change-interrupt? */<br />
{ /* this time it's obvius that it is! */<br />
/* read encoder new value */<br />
trans.0 = quad_A;<br />
trans.1 = quad_B;<br />
/* compare with old value */<br />
if( (trans == 0b00.01) && (count != 255) ) count ++;<br />
if( (trans == 0b01.00) && (count != 0) ) count --;<br />
/* replace old value with new value */<br />
trans.2 = trans.0;<br />
trans.3 = trans.1;<br />
RBIF = 0; /* Reset RB-change flag before leaving */<br />
}<br />
int_restore_registers<br />
}<br />
void main( void )<br />
{<br />
/* the main program */<br />
char speed;<br />
CM0=1; CM1=1; CM2=1; /* no comparators on PORTA */<br />
OPTION.7 = 0; /* internal pullup resistors on */<br />
TRISA.1 = 0; /* PA1 is output. Motor GND. */<br />
PORTA.1 = 0; /* Motor GND = 0 */<br />
TRISB = 0b11000000; /* only inputs quad_A and quad_B */<br />
trans = 0;<br />
speed = 0;<br />
RBIE = 1; /* local enable */<br />
GIE = 1; /* global enable */<br />
/* Settings CCP1 PWM-mode */<br />
PR2 = 255;<br />
TRISB.3 = 0; /* CCP1 is output (RB3-pin) */<br />
T2CON = 0b0.0000.1.00;<br />
/* 0, 0000 (1:1 postscale), 1 (TMR2 on), 00 (1:1 prescale) */<br />
CCP1CON = 0b00.0.0.1111;<br />
/* --, 0 (CCP1X), 0 (CCP1Y), 1111 (PWMmode 11xx) */<br />
while(1)<br />
{<br />
speed = count;<br />
CCPR1L = speed; /* new PWM-value */<br />
}<br />
}<br />
41