21.12.2013 Views

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!