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.

Tabellfunktion i PIC-processorn.<br />

Så här kan tabellen programmeras som en funktion i PIC-processorn. När funktionen<br />

anropas med tex. ignitionmap(0,0) (rad 0 kolumn 0) returnerar den talet 30.<br />

/* speed 3 bits 0...7 ; torque 3 bits 0...7 */<br />

char ignitionmap(char speed, char torque)<br />

{<br />

char index;<br />

index = speed*8 + torque; /* index for 64 table entries */<br />

skip(index)<br />

return 30;<br />

return 40;<br />

... /* the next 60 table entries */<br />

...<br />

return 50;<br />

return 40;<br />

}<br />

Tändningen<br />

Med hjälp av Timer0 vet man motorns vinkel. När man närmar sig tändpunkten mäter<br />

man tiden mellan passagen av två kuggar med den första CCP-enhetens Capturefunktion,<br />

och motorns belastning med hjälp av AD-omvandlaren. Genom att anropa<br />

tabellfunktionen så får man veta vilken tändförställning som är den rätta.<br />

För att utföra tändningen vid rätt tidpunkt låter man PIC-processorns andra CCPenhet<br />

vara inställd på Compare.<br />

När motorn nått den kugge som innehåller intervallet för tändningen, laddar man<br />

CCP-registren med ett tal, en tidsfördröjning. En programmerbar "händelse" utförs<br />

med CCP-pinnen då Timer1 når ( compare ) detta tal. Tändspolens drivkrets har<br />

anslutits till CCP-pinnen på ett sådant sätt så att den programmerade "händelsen"<br />

utlöser gnistan.<br />

CCP-enheten är så konstruerad att "händelsen" åtföljs av att Timer1 0-ställs ( och i fallet med CCPenhet<br />

2 att AD-omvandlaren startas ). Ett anrop till avbrottsrutinen ( interrupt ) kan ske nu om så<br />

önskas.<br />

29

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

Saved successfully!

Ooh no, something went wrong!