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