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.
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