21.12.2013 Views

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

Maskinnära programmering 6B2266

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

while(1)<br />

{<br />

/* read encoder new value */<br />

trans.0 = quad_A;<br />

trans.1 = quad_B;<br />

}<br />

/* compare with old value */<br />

if( trans == 0b00.01 ) counter ++;<br />

if( trans == 0b01.00 ) counter --;<br />

delay(10);<br />

/* replace old value with new value */<br />

trans.2 = trans.0;<br />

trans.3 = trans.1;<br />

Enkoderavläsning. Testprogrammet quad62x.c<br />

Inkoppling av pulsgivarkontakterna<br />

När man kopplar in kontakter till portpinnar behöver man i allmänhet sk. "pullup"-<br />

motstånd. En sluten kontakt kan ge "0"-nivån, men när kontakten är öppen blir nivån<br />

obestämd utan pullup. PIC-processorerna har inbyggda "pullup"-motstånd ( c:a 10k )<br />

som kopplas in med kommandot:<br />

OPTION.7 = 0; /* internal pullup resistors is on */.<br />

I figuren finns också två 1k serie-resistorer för att "isolera" pulsgivaren från<br />

kretsprogrammeraren. Vid krets<strong>programmering</strong> används ju pinnarna RB6 och RB7<br />

( om vi inte hade haft behov av att omprogrammera PIC-kretsen hade dessa pinnar<br />

varit helt lediga och serieresistorerna onödiga ).<br />

I det följande programmet quad62x.c läses pulsgivaren av med hjälp av PCprogrammet<br />

Hyperterminalen.<br />

Därför tas funktionsfiler som innehåller initserial, putchar, string_out, inttoa och<br />

delay med i arbetsbiblioteket.<br />

9

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

Saved successfully!

Ooh no, something went wrong!