03.08.2013 Views

S.N.A.K.E.: A Dynamically Reconfigurable Artificial Sensate Skin ...

S.N.A.K.E.: A Dynamically Reconfigurable Artificial Sensate Skin ...

S.N.A.K.E.: A Dynamically Reconfigurable Artificial Sensate Skin ...

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.

C:\Documents and Settings\Gerardo\My Documents\Work\SM (MIT)\Thesis\Code\Firmware\Node_test.s43<br />

C:\Documents and Settings\Gerardo\My Documents\Work\SM (MIT)\Thesis\Code\Firmware\Node_test.s43<br />

JMP ADM11 ; ADC Mem11 ISR<br />

JMP ADM12 ; ADC Mem12 ISR<br />

JMP ADM13 ; ADC Mem13 ISR<br />

JMP ADM14 ; ADC Mem14 ISR<br />

JMP MainLoop<br />

ADM15 ; Add ADC12MEM12 ISR code Here<br />

MOV &ADC12MEM15, R5<br />

JMP ADC12ISR<br />

//THIS INTERRUPT FIRES WHEN PRESSURE CONVERSION IS DONE<br />

ADM0 ; Add ADC12MEM0 ISR code Here<br />

MOV &ADC12MEM0,R5 ; Move A0 result<br />

BIC.B #20h, &P4OUT ; Turn Off MUX<br />

CALL #ENABLE_TBCCRIRQ<br />

//Downsample to 8 bits<br />

RRA R5<br />

RRA R5<br />

RRA R5<br />

RRA R5<br />

MOV.B PressurePtr, R6 ;<br />

MOV.B R5, Pressure(R6)<br />

INC R6<br />

CMP.B #4, R6<br />

JNZ DonePressure<br />

MOV #0, R6<br />

DonePressure<br />

MOV R6, PressurePtr<br />

CMP.B #0F0h, R5<br />

JGE Lower<br />

BIC.B #01h, &P4OUT<br />

JMP EndPressure<br />

Lower<br />

BIS.B #01, &P4OUT<br />

EndPressure<br />

RETI ; Return from interrupt<br />

;_______________________________________________________________________<br />

DISABLE_TBCCRIRQ ; Disable TBCCRx interrupts to allow sampling of ADC channel<br />

;_______________________________________________________________________<br />

BIC #CCIE,&TBCCTL1 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIC #CCIE,&TBCCTL2 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIC #CCIE,&TBCCTL3 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIC #CCIE,&TBCCTL4 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIC #CCIE,&TBCCTL5 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIC #CCIE,&TBCCTL6 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

RET<br />

;_______________________________________________________________________<br />

ENABLE_TBCCRIRQ ; ENABLE TBCCRx interrupts to allow sampling of ADC channel<br />

;_______________________________________________________________________<br />

BIS #CCIE,&TBCCTL1 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIS #CCIE,&TBCCTL2 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIS #CCIE,&TBCCTL3 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIS #CCIE,&TBCCTL4 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIS #CCIE,&TBCCTL5 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

BIS #CCIE,&TBCCTL6 ; Disable all TBCCR IRQ's to allow ADC conv.<br />

RET<br />

;_______________________________________________________________________<br />

DELAY ; Delay function (3n^2 + 4n + delay-9)<br />

;_______________________________________________________________________<br />

PUSH R8<br />

PUSH R9<br />

MOV R10, R9<br />

LoopDelay1<br />

MOV R10, R8<br />

LoopDelay2<br />

DEC R8<br />

JNZ LoopDelay2<br />

DEC R9<br />

JNZ LoopDelay1<br />

POP R9<br />

POP R8<br />

RET<br />

//THIS INTERRUPT FIRES WHEN LIGHT CONVERSION IS DONE<br />

ADM1 ; Add ADC12MEM1 ISR code Here<br />

MOV &ADC12MEM1, R5<br />

CALL #ENABLE_TBCCRIRQ<br />

RRA R5<br />

RRA R5<br />

RRA R5<br />

RRA R5<br />

MOV LightPtr, R6<br />

MOV.B R5, Light(R6)<br />

MOV.B R5, LightValue<br />

INC LightPtr<br />

CMP.B #255, LightPtr<br />

JNZ DoneLight<br />

MOV #0, LightPtr<br />

DoneLight<br />

RETI ; Return from interrupt<br />

//THIS INTERRUPT FIRES WHEN TEMPERATURE CONVERSION IS DONE<br />

ADM2 ; Add ADC12MEM2 ISR code Here<br />

MOV &ADC12MEM2, R5<br />

CALL #ENABLE_TBCCRIRQ<br />

RRA R5<br />

;------------------------------------------------------------------------------<br />

ADC12ISR ; Interrupt Service Routine for ADC12<br />

;------------------------------------------------------------------------------<br />

ADD &ADC12IV,PC ; Add offset to PC 3<br />

RETI ; Vector 0: No interrupt 5<br />

JMP ADOV ; ADC Overflow<br />

JMP ADTOV ; ADC Timing Overflow<br />

JMP ADM0 ; ADC Mem0 ISR<br />

JMP ADM1 ; ADC Mem1 ISR<br />

JMP ADM2 ; ADC Mem2 ISR<br />

JMP ADM3 ; ADC Mem3 ISR<br />

JMP ADM4 ; ADC Mem4 ISR<br />

JMP ADM5 ; ADC Mem5 ISR<br />

JMP ADM6 ; ADC Mem6 ISR<br />

JMP ADM7 ; ADC Mem7 ISR<br />

JMP ADM8 ; ADC Mem8 ISR<br />

JMP ADM9 ; ADC Mem9 ISR<br />

JMP ADM10 ; ADC Mem10 ISR<br />

Page 4 of 8<br />

Page 3 of 8

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

Saved successfully!

Ooh no, something went wrong!