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.

Om man studerar de binära talen -128 (10000000), -1 (11111111), 0 (00000000),<br />

+1 (00000001), +127 (01111111), ser man att den mest signifikanta biten count.7<br />

är teckenbiten och att denna kan användas för att styra motorns rotationsriktning.<br />

PORTA.1 = count.7; /* rotate cw or ccw */<br />

Talcirkel. Registeraritmetik innebär att talsystemet kan ses som en "ring" - som km-räknaren på en bil.<br />

För enkelhets skull är registerlängden i figuren fyra bitar, då räknar registret "runt" efter talet 15.<br />

Principen är densamma för ett 8-bitars register, men det räknar runt efter talet 255.<br />

Tal kan antingen betraktas som teckenlösa tal ( tex typ char i C ) eller som tal med tecken<br />

( typ int i C ).<br />

Om man fördubblar talet count får man ett lämpligt värde att styra PWM-enheten<br />

med, detta visar nedanstående tabell:<br />

count count.7 count*2 count count.7 count*2<br />

+127 0 +254 -128 1 0<br />

(01111111)<br />

(11111110) (10000000)<br />

(00000000)<br />

0<br />

0 0<br />

-1 1 +254<br />

(00000000)<br />

(00000000) (11111111)<br />

(11111110)<br />

char speed;<br />

speed = count*2;<br />

CCPR1L = speed; /* new PWM-value */<br />

Det hela passar som ”hand i handske”!<br />

Inför dessa ändringar i programmet pwmspeed.c . Provkör<br />

därefter programmet och styr motorn med olika varvtal och<br />

rotationsriktningar.<br />

43

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

Saved successfully!

Ooh no, something went wrong!