Rev 282 | Blame | Last modification | View Log | SVN | RSS feed
MP2COD 4.02, COFF to COD File ConverterCopyright (c) 2006 Microchip Technology Inc.Listing File Generated: Mon Feb 05 18:31:50 2007Address Value Disassembly Source File------- ------- ----------------------- ------------------------------------------------------------------------------- -----/********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* CAN module F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\CAN.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/CAN.c $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Last changed: $LastChangedDate: 2007-02-03 16:58:13 +0100 (lö, 03 feb 2007) $ F:\MCP\projects\CAN\canBase\Source\CAN.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\CAN.c* Revision: $Revision: 282 $ F:\MCP\projects\CAN\canBase\Source\CAN.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c#include <CANdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <stackTasks.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <CAN.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <EEaccess.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <funcdefs.h> F:\MCP\projects\CAN\canBase\Source\CAN.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cTICK heartbeat; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic int MY_ID = DEFAULT_ID; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic BYTE MY_NID = DEFAULT_NID; F:\MCP\projects\CAN\canBase\Source\CAN.cstatic CAN_MESSAGE outCm; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cstatic void canGetPacket(void); F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canInit F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: Changes can registers. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.cvoid canInit() F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c00105c 0e80 MOVLW 0x80 CANCON = 0x80; //request config mode F:\MCP\projects\CAN\canBase\Source\CAN.c00105e 6e6f MOVWF 0x6f,0x0001060 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x80 ); //wait for config mode request F:\MCP\projects\CAN\canBase\Source\CAN.c001062 146e ANDWF 0x6e,0x0,0x0001064 0880 SUBLW 0x80001066 e001 BZ 0x106a001068 d7fb BRA 0x1060F:\MCP\projects\CAN\canBase\Source\CAN.c// BAUD AND TQS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// 500Khz@40Mhz (new by the book) F:\MCP\projects\CAN\canBase\Source\CAN.c00106a 0e04 MOVLW 0x4 BRGCON1 = 0x04; F:\MCP\projects\CAN\canBase\Source\CAN.c00106c 6e70 MOVWF 0x70,0x000106e 0ed1 MOVLW 0xd1 BRGCON2 = 0xD1; F:\MCP\projects\CAN\canBase\Source\CAN.c001070 6e71 MOVWF 0x71,0x0001072 0e81 MOVLW 0x81 BRGCON3 = 0x81; F:\MCP\projects\CAN\canBase\Source\CAN.c001074 6e72 MOVWF 0x72,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Sync_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1bits.SJW1=0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1bits.SJW0=1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Setting BRP. F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON1=BRGCON1|CAN_BRP; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Maximum PHEG1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG2PHTS = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Phase_Seg1 = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.SEG1PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Prop_Seq = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON2bits.PRSEG0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Enableing bus wake-up F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.WAKDIS = 0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Dont use filter when wakeup F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.WAKFIL = 0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Phase_Seg2 = 2 x TQ = 1 F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH2 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH1 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c//BRGCON3bits.SEG2PH0 = 1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001076 6a77 CLRF 0x77,0x0 ECANCON=0; F:\MCP\projects\CAN\canBase\Source\CAN.c001078 8e77 BSF 0x77,0x7,0x0 ECANCONbits.MDSEL1 = 1; // 0 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.c00107a 9c77 BCF 0x77,0x6,0x0 ECANCONbits.MDSEL0 = 0; // 1 For mode 1 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// FILTERS AND MASKS F:\MCP\projects\CAN\canBase\Source\CAN.c00107c 8c60 BSF 0x60,0x6,0x0 RXB0CONbits.RXM1=1; F:\MCP\projects\CAN\canBase\Source\CAN.c00107e 9a60 BCF 0x60,0x5,0x0 RXB0CONbits.RXM0=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// INTERRUPTS F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Diable transmit interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001080 010d MOVLB 0xd TXBIE = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001082 6bfc CLRF 0xfc,0x1F:\MCP\projects\CAN\canBase\Source\CAN.c//rx any interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c001084 6aa4 CLRF 0xa4,0x0 PIR3 = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c001086 0e03 MOVLW 0x3 PIE3 = 0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.c001088 6ea3 MOVWF 0xa3,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// High interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00108a 6ea5 MOVWF 0xa5,0x0 IPR3 =0b00000011; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Programmable buffers interrupt F:\MCP\projects\CAN\canBase\Source\CAN.c00108c 69fa SETF 0xfa,0x1 BIE0 = 0xFF; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//loopback mode or not F:\MCP\projects\CAN\canBase\Source\CAN.c#ifdef CAN_LOOPBACK_MODE F:\MCP\projects\CAN\canBase\Source\CAN.cCANCON = 0x40;//request loopback mode F:\MCP\projects\CAN\canBase\Source\CAN.cwhile ((CANSTAT & 0xE0) != 0x40 );//wait for loopback mode F:\MCP\projects\CAN\canBase\Source\CAN.c#else F:\MCP\projects\CAN\canBase\Source\CAN.c00108e 6a6f CLRF 0x6f,0x0 CANCON = 0x00;//request normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001090 0ee0 MOVLW 0xe0 while ((CANSTAT & 0xE0) != 0x00 );//wait for normal mode F:\MCP\projects\CAN\canBase\Source\CAN.c001092 146e ANDWF 0x6e,0x0,0x0001094 e001 BZ 0x1098001096 d7fc BRA 0x1090#endif F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Init ticker service F:\MCP\projects\CAN\canBase\Source\CAN.c001098 ecc8 CALL 0x1d90,0x0 tickInit(); F:\MCP\projects\CAN\canBase\Source\CAN.c00109a f00eF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Read ID and NID if exist. F:\MCP\projects\CAN\canBase\Source\CAN.c00109c 0e00 MOVLW 0x0 if (EERead(NODE_ID_EE)==NODE_HAS_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c00109e 6ee6 MOVWF 0xe6,0x00010a0 6ae6 CLRF 0xe6,0x00010a2 ec23 CALL 0x1c46,0x00010a4 f00e0010a6 52e5 MOVF 0xe5,0x1,0x00010a8 52e5 MOVF 0xe5,0x1,0x00010aa 082a SUBLW 0x2a0010ac e12b BNZ 0x1104{ F:\MCP\projects\CAN\canBase\Source\CAN.c0010ae 0e01 MOVLW 0x1 MY_ID=(((WORD)EERead(NODE_ID_EE + 1))<<8)+EERead(NODE_ID_EE + 2); F:\MCP\projects\CAN\canBase\Source\CAN.c0010b0 6ee6 MOVWF 0xe6,0x00010b2 6ae6 CLRF 0xe6,0x00010b4 ec23 CALL 0x1c46,0x00010b6 f00e0010b8 52e5 MOVF 0xe5,0x1,0x00010ba 52e5 MOVF 0xe5,0x1,0x00010bc 6e14 MOVWF 0x14,0x00010be c014 MOVFF 0x14,0x150010c0 f0150010c2 6a14 CLRF 0x14,0x00010c4 c014 MOVFF 0x14,0xfe60010c6 ffe60010c8 c015 MOVFF 0x15,0xfe60010ca ffe60010cc 0e02 MOVLW 0x20010ce 6ee6 MOVWF 0xe6,0x00010d0 6ae6 CLRF 0xe6,0x00010d2 ec23 CALL 0x1c46,0x00010d4 f00e0010d6 52e5 MOVF 0xe5,0x1,0x00010d8 52e5 MOVF 0xe5,0x1,0x00010da 52e5 MOVF 0xe5,0x1,0x00010dc cfe7 MOVFF 0xfe7,0x150010de f0150010e0 52e5 MOVF 0xe5,0x1,0x00010e2 cfe7 MOVFF 0xfe7,0x140010e4 f0140010e6 0100 MOVLB 0x00010e8 2414 ADDWF 0x14,0x0,0x00010ea 6f93 MOVWF 0x93,0x10010ec 0e00 MOVLW 0x00010ee 2015 ADDWFC 0x15,0x0,0x00010f0 6f94 MOVWF 0x94,0x10010f2 0e03 MOVLW 0x3 MY_NID=EERead(NODE_ID_EE + 3); F:\MCP\projects\CAN\canBase\Source\CAN.c0010f4 6ee6 MOVWF 0xe6,0x00010f6 6ae6 CLRF 0xe6,0x00010f8 ec23 CALL 0x1c46,0x00010fa f00e0010fc 52e5 MOVF 0xe5,0x1,0x00010fe 52e5 MOVF 0xe5,0x1,0x0001100 0100 MOVLB 0x0001102 6f95 MOVWF 0x95,0x1} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Send user program startup heatbeat F:\MCP\projects\CAN\canBase\Source\CAN.c001104 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001106 6b64 CLRF 0x64,0x1001108 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c00110a 6f65 MOVWF 0x65,0x100110c 6b66 CLRF 0x66,0x100110e 0e01 MOVLW 0x1 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c001110 6f6a MOVWF 0x6a,0x1001112 6f6b MOVWF 0x6b,0x1 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_USER_STARTUP; F:\MCP\projects\CAN\canBase\Source\CAN.c001114 0e02 MOVLW 0x2 canSendMessage(outCm,PRIO_HIGH); F:\MCP\projects\CAN\canBase\Source\CAN.c001116 6ee6 MOVWF 0xe6,0x0001118 c064 MOVFF 0x64,0xfe600111a ffe600111c c065 MOVFF 0x65,0xfe600111e ffe6001120 c066 MOVFF 0x66,0xfe6001122 ffe6001124 c067 MOVFF 0x67,0xfe6001126 ffe6001128 c068 MOVFF 0x68,0xfe600112a ffe600112c c069 MOVFF 0x69,0xfe600112e ffe6001130 c06a MOVFF 0x6a,0xfe6001132 ffe6001134 c06b MOVFF 0x6b,0xfe6001136 ffe6001138 c06c MOVFF 0x6c,0xfe600113a ffe600113c c06d MOVFF 0x6d,0xfe600113e ffe6001140 c06e MOVFF 0x6e,0xfe6001142 ffe6001144 c06f MOVFF 0x6f,0xfe6001146 ffe6001148 c070 MOVFF 0x70,0xfe600114a ffe600114c c071 MOVFF 0x71,0xfe600114e ffe6001150 c072 MOVFF 0x72,0xfe6001152 ffe6001154 d9ed RCALL 0x1530001156 6e14 MOVWF 0x14,0x0001158 0e10 MOVLW 0x1000115a 5ee1 SUBWF 0xe1,0x1,0x000115c 5014 MOVF 0x14,0x0,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c00115e 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canISR F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: a call to canInit() F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: interrupt registers and receive data buffers F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.cvoid canISR() F:\MCP\projects\CAN\canBase\Source\CAN.c{ F:\MCP\projects\CAN\canBase\Source\CAN.c001160 50a4 MOVF 0xa4,0x0,0x0 if (PIR3bits.RXBnIF || PIR3bits.RXB1IF || PIR3bits.RXB0IF) F:\MCP\projects\CAN\canBase\Source\CAN.c001162 0b02 ANDLW 0x2001164 e106 BNZ 0x1172001166 50a4 MOVF 0xa4,0x0,0x0001168 0b02 ANDLW 0x200116a e103 BNZ 0x117200116c 50a4 MOVF 0xa4,0x0,0x000116e 0b01 ANDLW 0x1001170 e016 BZ 0x119e{ F:\MCP\projects\CAN\canBase\Source\CAN.c001172 0e0f MOVLW 0xf ECANCON=(ECANCON&0b00000)|(0b10000|(CANCON&0x0F)); F:\MCP\projects\CAN\canBase\Source\CAN.c001174 146f ANDWF 0x6f,0x0,0x0001176 0910 IORLW 0x10001178 6e14 MOVWF 0x14,0x000117a 0e00 MOVLW 0x000117c 1477 ANDWF 0x77,0x0,0x000117e 1014 IORWF 0x14,0x0,0x0001180 6e77 MOVWF 0x77,0x0001182 be60 BTFSC 0x60,0x7,0x0 if (RXB0CONbits.RXFUL) canGetPacket(); F:\MCP\projects\CAN\canBase\Source\CAN.c001184 d867 RCALL 0x1254F:\MCP\projects\CAN\canBase\Source\CAN.c001186 a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXBnIF) {PIR3bits.RXBnIF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001188 d002 BRA 0x118e00118a 92a4 BCF 0xa4,0x1,0x000118c d062 BRA 0x125200118e a2a4 BTFSS 0xa4,0x1,0x0 if (PIR3bits.RXB1IF) {PIR3bits.RXB1IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001190 d002 BRA 0x1196001192 92a4 BCF 0xa4,0x1,0x0001194 d05e BRA 0x1252001196 a0a4 BTFSS 0xa4,0x0,0x0 if (PIR3bits.RXB0IF) {PIR3bits.RXB0IF = 0; return;} F:\MCP\projects\CAN\canBase\Source\CAN.c001198 d002 BRA 0x119e00119a 90a4 BCF 0xa4,0x0,0x000119c d05a BRA 0x1252} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c00119e ecdc CALL 0x1db8,0x0 tickUpdate(); F:\MCP\projects\CAN\canBase\Source\CAN.c0011a0 f00eF:\MCP\projects\CAN\canBase\Source\CAN.c0011a2 ecd2 CALL 0x1da4,0x0 if ((tickGet()-heartbeat)>TICK_SECOND*5) F:\MCP\projects\CAN\canBase\Source\CAN.c0011a4 f00e0011a6 0100 MOVLB 0x00011a8 5160 MOVF 0x60,0x0,0x10011aa 5c04 SUBWF 0x4,0x0,0x00011ac 6e14 MOVWF 0x14,0x00011ae 0100 MOVLB 0x00011b0 5161 MOVF 0x61,0x0,0x10011b2 5805 SUBWFB 0x5,0x0,0x00011b4 6e15 MOVWF 0x15,0x00011b6 0100 MOVLB 0x00011b8 5162 MOVF 0x62,0x0,0x10011ba 5806 SUBWFB 0x6,0x0,0x00011bc 6e16 MOVWF 0x16,0x00011be 0100 MOVLB 0x00011c0 5163 MOVF 0x63,0x0,0x10011c2 5807 SUBWFB 0x7,0x0,0x00011c4 6e17 MOVWF 0x17,0x00011c6 80d8 BSF 0xd8,0x0,0x00011c8 0ef4 MOVLW 0xf40011ca 5414 SUBFWB 0x14,0x0,0x00011cc 0e01 MOVLW 0x10011ce 5415 SUBFWB 0x15,0x0,0x00011d0 0e00 MOVLW 0x00011d2 5416 SUBFWB 0x16,0x0,0x00011d4 0e00 MOVLW 0x00011d6 5417 SUBFWB 0x17,0x0,0x00011d8 e23b BC 0x1250{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Send alive heartbeat F:\MCP\projects\CAN\canBase\Source\CAN.c0011da 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c0011dc 6b64 CLRF 0x64,0x10011de 0e08 MOVLW 0x8 outCm.funcc = FUNCC_BOOT_HEARTBEAT; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e0 0100 MOVLB 0x00011e2 6f65 MOVWF 0x65,0x10011e4 6b66 CLRF 0x66,0x10011e6 0100 MOVLB 0x0 outCm.data_length = 1; F:\MCP\projects\CAN\canBase\Source\CAN.c0011e8 0e01 MOVLW 0x10011ea 6f6a MOVWF 0x6a,0x10011ec 0100 MOVLB 0x0 outCm.data[BOOT_DATA_HEARTBEAT_INDEX] = HEARTBEAT_ALIVE; F:\MCP\projects\CAN\canBase\Source\CAN.c0011ee 0e02 MOVLW 0x20011f0 6f6b MOVWF 0x6b,0x10011f2 0e02 MOVLW 0x2 canSendMessage(outCm,PRIO_HIGH); F:\MCP\projects\CAN\canBase\Source\CAN.c0011f4 6ee6 MOVWF 0xe6,0x00011f6 c064 MOVFF 0x64,0xfe60011f8 ffe60011fa c065 MOVFF 0x65,0xfe60011fc ffe60011fe c066 MOVFF 0x66,0xfe6001200 ffe6001202 c067 MOVFF 0x67,0xfe6001204 ffe6001206 c068 MOVFF 0x68,0xfe6001208 ffe600120a c069 MOVFF 0x69,0xfe600120c ffe600120e c06a MOVFF 0x6a,0xfe6001210 ffe6001212 c06b MOVFF 0x6b,0xfe6001214 ffe6001216 c06c MOVFF 0x6c,0xfe6001218 ffe600121a c06d MOVFF 0x6d,0xfe600121c ffe600121e c06e MOVFF 0x6e,0xfe6001220 ffe6001222 c06f MOVFF 0x6f,0xfe6001224 ffe6001226 c070 MOVFF 0x70,0xfe6001228 ffe600122a c071 MOVFF 0x71,0xfe600122c ffe600122e c072 MOVFF 0x72,0xfe6001230 ffe6001232 d97e RCALL 0x1530001234 6e14 MOVWF 0x14,0x0001236 0e10 MOVLW 0x10001238 5ee1 SUBWF 0xe1,0x1,0x000123a 5014 MOVF 0x14,0x0,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c00123c ecd2 CALL 0x1da4,0x0 heartbeat = tickGet(); F:\MCP\projects\CAN\canBase\Source\CAN.c00123e f00e001240 c004 MOVFF 0x4,0x60001242 f060001244 c005 MOVFF 0x5,0x61001246 f061001248 c006 MOVFF 0x6,0x6200124a f06200124c c007 MOVFF 0x7,0x6300124e f063} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001250 0004 CLRWDT ClrWdt(); F:\MCP\projects\CAN\canBase\Source\CAN.c001252 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canGetPacket F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: none F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: a call to canISR and an packet is available and banked to RXB0 F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: Calls canParse() function in main for parsing received packet. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: none. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.c001254 cfd9 MOVFF 0xfd9,0xfe6 void canGetPacket() F:\MCP\projects\CAN\canBase\Source\CAN.c001256 ffe6001258 cfe1 MOVFF 0xfe1,0xfd900125a ffd900125c 0e0f MOVLW 0xf00125e 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canBase\Source\CAN.cCAN_MESSAGE cm; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001260 0ef0 MOVLW 0xf0 cm.funct=((RXB0SIDH & 0xF0)>>4); F:\MCP\projects\CAN\canBase\Source\CAN.c001262 1461 ANDWF 0x61,0x0,0x0001264 38e8 SWAPF 0xe8,0x0,0x0001266 0b0f ANDLW 0xf001268 6edf MOVWF 0xdf,0x000126a 0e0f MOVLW 0xf cm.funcc=(((WORD)(RXB0SIDH & 0x0F))<<6)+(((WORD)(RXB0SIDL & 0xE0))>>2)+(((WORD)(RXB0SIDL & 0x03))<<1)+(((WORD)(RXB0EIDH & 0x80))>>7); F:\MCP\projects\CAN\canBase\Source\CAN.c00126c 1461 ANDWF 0x61,0x0,0x000126e 6e1a MOVWF 0x1a,0x0001270 6a1b CLRF 0x1b,0x0001272 0e06 MOVLW 0x6001274 90d8 BCF 0xd8,0x0,0x0001276 361a RLCF 0x1a,0x1,0x0001278 361b RLCF 0x1b,0x1,0x000127a 04e8 DECF 0xe8,0x0,0x000127c e1fb BNZ 0x127400127e 0ee0 MOVLW 0xe0001280 1462 ANDWF 0x62,0x0,0x0001282 6e1c MOVWF 0x1c,0x0001284 6a1d CLRF 0x1d,0x0001286 90d8 BCF 0xd8,0x0,0x0001288 321d RRCF 0x1d,0x1,0x000128a 321c RRCF 0x1c,0x1,0x000128c 90d8 BCF 0xd8,0x0,0x000128e 321d RRCF 0x1d,0x1,0x0001290 321c RRCF 0x1c,0x1,0x0001292 501a MOVF 0x1a,0x0,0x0001294 241c ADDWF 0x1c,0x0,0x0001296 6e18 MOVWF 0x18,0x0001298 501b MOVF 0x1b,0x0,0x000129a 201d ADDWFC 0x1d,0x0,0x000129c 6e19 MOVWF 0x19,0x000129e 0e03 MOVLW 0x30012a0 1462 ANDWF 0x62,0x0,0x00012a2 6e1e MOVWF 0x1e,0x00012a4 6a1f CLRF 0x1f,0x00012a6 90d8 BCF 0xd8,0x0,0x00012a8 361e RLCF 0x1e,0x1,0x00012aa 361f RLCF 0x1f,0x1,0x00012ac 5018 MOVF 0x18,0x0,0x00012ae 241e ADDWF 0x1e,0x0,0x00012b0 6e16 MOVWF 0x16,0x00012b2 5019 MOVF 0x19,0x0,0x00012b4 201f ADDWFC 0x1f,0x0,0x00012b6 6e17 MOVWF 0x17,0x00012b8 0e80 MOVLW 0x800012ba 1463 ANDWF 0x63,0x0,0x00012bc 6e20 MOVWF 0x20,0x00012be 6a21 CLRF 0x21,0x00012c0 0e07 MOVLW 0x70012c2 90d8 BCF 0xd8,0x0,0x00012c4 3221 RRCF 0x21,0x1,0x00012c6 3220 RRCF 0x20,0x1,0x00012c8 04e8 DECF 0xe8,0x0,0x00012ca e1fb BNZ 0x12c20012cc 5016 MOVF 0x16,0x0,0x00012ce 2420 ADDWF 0x20,0x0,0x00012d0 6e14 MOVWF 0x14,0x00012d2 5017 MOVF 0x17,0x0,0x00012d4 2021 ADDWFC 0x21,0x0,0x00012d6 6e15 MOVWF 0x15,0x00012d8 0e01 MOVLW 0x10012da c014 MOVFF 0x14,0xfdb0012dc ffdb0012de 0e02 MOVLW 0x20012e0 c015 MOVFF 0x15,0xfdb0012e2 ffdb0012e4 0e7e MOVLW 0x7e cm.nid=((RXB0EIDH & 0x7E)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0012e6 1463 ANDWF 0x63,0x0,0x00012e8 40e8 RRNCF 0xe8,0x0,0x00012ea 0b7f ANDLW 0x7f0012ec 6ee7 MOVWF 0xe7,0x00012ee 0e03 MOVLW 0x30012f0 cfe7 MOVFF 0xfe7,0xfdb0012f2 ffdb0012f4 0e01 MOVLW 0x1 cm.sid=(((WORD)(RXB0EIDH & 0x01))<<8)+RXB0EIDL; F:\MCP\projects\CAN\canBase\Source\CAN.c0012f6 1463 ANDWF 0x63,0x0,0x00012f8 6e16 MOVWF 0x16,0x00012fa c016 MOVFF 0x16,0x170012fc f0170012fe 6a16 CLRF 0x16,0x0001300 5064 MOVF 0x64,0x0,0x0001302 0100 MOVLB 0x0001304 2416 ADDWF 0x16,0x0,0x0001306 6e14 MOVWF 0x14,0x0001308 0e00 MOVLW 0x000130a 2017 ADDWFC 0x17,0x0,0x000130c 6e15 MOVWF 0x15,0x000130e 0e04 MOVLW 0x4001310 c014 MOVFF 0x14,0xfdb001312 ffdb001314 0e05 MOVLW 0x5001316 c015 MOVFF 0x15,0xfdb001318 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c00131a 5065 MOVF 0x65,0x0,0x0 cm.data_length=(RXB0DLCbits.DLC3<<3)+(RXB0DLCbits.DLC2<<2)+(RXB0DLCbits.DLC1<<1)+RXB0DLCbits.DLC0; F:\MCP\projects\CAN\canBase\Source\CAN.c00131c 0b01 ANDLW 0x100131e 6e16 MOVWF 0x16,0x0001320 5065 MOVF 0x65,0x0,0x0001322 0b02 ANDLW 0x2001324 e001 BZ 0x1328001326 0e01 MOVLW 0x1001328 24e8 ADDWF 0xe8,0x0,0x000132a 6e15 MOVWF 0x15,0x000132c 5065 MOVF 0x65,0x0,0x000132e 0b04 ANDLW 0x4001330 e001 BZ 0x1334001332 0e01 MOVLW 0x1001334 0d04 MULLW 0x4001336 cff3 MOVFF 0xff3,0x14001338 f01400133a 5065 MOVF 0x65,0x0,0x000133c 0b08 ANDLW 0x800133e e001 BZ 0x1342001340 0e01 MOVLW 0x1001342 0d08 MULLW 0x8001344 50f3 MOVF 0xf3,0x0,0x0001346 2414 ADDWF 0x14,0x0,0x0001348 2415 ADDWF 0x15,0x0,0x000134a 2416 ADDWF 0x16,0x0,0x000134c 6ee7 MOVWF 0xe7,0x000134e 0e06 MOVLW 0x6001350 cfe7 MOVFF 0xfe7,0xfdb001352 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001354 0e07 MOVLW 0x7 cm.data[0]=RXB0D0; cm.data[1]=RXB0D1; F:\MCP\projects\CAN\canBase\Source\CAN.c001356 cf66 MOVFF 0xf66,0xfdb001358 ffdb00135a 0e08 MOVLW 0x800135c cf67 MOVFF 0xf67,0xfdb00135e ffdb001360 0e09 MOVLW 0x9 cm.data[2]=RXB0D2; cm.data[3]=RXB0D3; F:\MCP\projects\CAN\canBase\Source\CAN.c001362 cf68 MOVFF 0xf68,0xfdb001364 ffdb001366 0e0a MOVLW 0xa001368 cf69 MOVFF 0xf69,0xfdb00136a ffdb00136c 0e0b MOVLW 0xb cm.data[4]=RXB0D4; cm.data[5]=RXB0D5; F:\MCP\projects\CAN\canBase\Source\CAN.c00136e cf6a MOVFF 0xf6a,0xfdb001370 ffdb001372 0e0c MOVLW 0xc001374 cf6b MOVFF 0xf6b,0xfdb001376 ffdb001378 0e0d MOVLW 0xd cm.data[6]=RXB0D6; cm.data[7]=RXB0D7; F:\MCP\projects\CAN\canBase\Source\CAN.c00137a cf6c MOVFF 0xf6c,0xfdb00137c ffdb00137e 0e0e MOVLW 0xe001380 cf6d MOVFF 0xf6d,0xfdb001382 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.c// Clear ful status F:\MCP\projects\CAN\canBase\Source\CAN.c001384 9e60 BCF 0x60,0x7,0x0 RXB0CONbits.RXFUL=0; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Check if FUNCT_BOOTLOADER specific. F:\MCP\projects\CAN\canBase\Source\CAN.c// reset and id change F:\MCP\projects\CAN\canBase\Source\CAN.c001386 50df MOVF 0xdf,0x0,0x0 if (cm.funct==FUNCT_BOOTLOADER) F:\MCP\projects\CAN\canBase\Source\CAN.c001388 e001 BZ 0x138c00138a d0a0 BRA 0x14cc{ F:\MCP\projects\CAN\canBase\Source\CAN.c00138c 0e03 MOVLW 0x3 if (cm.nid==MY_NID && ((((unsigned int)cm.data[BOOT_DATA_RID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_RID_LOW_INDEX])==MY_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c00138e 50db MOVF 0xdb,0x0,0x0001390 0100 MOVLB 0x0001392 5d95 SUBWF 0x95,0x0,0x1001394 e001 BZ 0x1398001396 d09a BRA 0x14cc001398 0e0c MOVLW 0xc00139a cfdb MOVFF 0xfdb,0x1600139c f01600139e c016 MOVFF 0x16,0x170013a0 f0170013a2 6a16 CLRF 0x16,0x00013a4 0e0b MOVLW 0xb0013a6 50db MOVF 0xdb,0x0,0x00013a8 0100 MOVLB 0x00013aa 2416 ADDWF 0x16,0x0,0x00013ac 6e14 MOVWF 0x14,0x00013ae 0e00 MOVLW 0x00013b0 2017 ADDWFC 0x17,0x0,0x00013b2 6e15 MOVWF 0x15,0x00013b4 0100 MOVLB 0x00013b6 5193 MOVF 0x93,0x0,0x10013b8 1814 XORWF 0x14,0x0,0x00013ba e102 BNZ 0x13c00013bc 5194 MOVF 0x94,0x0,0x10013be 1815 XORWF 0x15,0x0,0x00013c0 e001 BZ 0x13c40013c2 d084 BRA 0x14cc{ F:\MCP\projects\CAN\canBase\Source\CAN.c0013c4 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_INIT) Reset(); // Reset me. F:\MCP\projects\CAN\canBase\Source\CAN.c0013c6 0f01 ADDLW 0x10013c8 6ee9 MOVWF 0xe9,0x00013ca cfda MOVFF 0xfda,0xfea0013cc ffea0013ce 0e01 MOVLW 0x10013d0 18ee XORWF 0xee,0x0,0x00013d2 e101 BNZ 0x13d60013d4 50ed MOVF 0xed,0x0,0x00013d6 e101 BNZ 0x13da0013d8 00ff RESET0013da 50d9 MOVF 0xd9,0x0,0x0 if (cm.funcc==FUNCC_BOOT_SET_ID) F:\MCP\projects\CAN\canBase\Source\CAN.c0013dc 0f01 ADDLW 0x10013de 6ee9 MOVWF 0xe9,0x00013e0 cfda MOVFF 0xfda,0xfea0013e2 ffea0013e4 0e06 MOVLW 0x60013e6 18ee XORWF 0xee,0x0,0x00013e8 e101 BNZ 0x13ec0013ea 50ed MOVF 0xed,0x0,0x00013ec e16f BNZ 0x14cc{ F:\MCP\projects\CAN\canBase\Source\CAN.c// Change my ID and NID F:\MCP\projects\CAN\canBase\Source\CAN.c0013ee 0e08 MOVLW 0x8 MY_ID=(((WORD)cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX])<<8)+cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]; F:\MCP\projects\CAN\canBase\Source\CAN.c0013f0 cfdb MOVFF 0xfdb,0x140013f2 f0140013f4 c014 MOVFF 0x14,0x150013f6 f0150013f8 6a14 CLRF 0x14,0x00013fa 0e07 MOVLW 0x70013fc 50db MOVF 0xdb,0x0,0x00013fe 0100 MOVLB 0x0001400 2414 ADDWF 0x14,0x0,0x0001402 6f93 MOVWF 0x93,0x1001404 0e00 MOVLW 0x0001406 2015 ADDWFC 0x15,0x0,0x0001408 6f94 MOVWF 0x94,0x100140a 0e09 MOVLW 0x9 MY_NID=cm.data[BOOT_DATA_NEW_NID_INDEX]; F:\MCP\projects\CAN\canBase\Source\CAN.c00140c cfdb MOVFF 0xfdb,0x9500140e f095001410 0e08 MOVLW 0x8 EEWrite(NODE_ID_EE+1,cm.data[BOOT_DATA_NEW_ID_HIGH_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c001412 cfdb MOVFF 0xfdb,0xfe6001414 ffe6001416 0e01 MOVLW 0x1001418 6ee6 MOVWF 0xe6,0x000141a 6ae6 CLRF 0xe6,0x000141c ec48 CALL 0x1c90,0x000141e f00e001420 52e5 MOVF 0xe5,0x1,0x0001422 52e5 MOVF 0xe5,0x1,0x0001424 52e5 MOVF 0xe5,0x1,0x0001426 0e07 MOVLW 0x7 EEWrite(NODE_ID_EE+2,cm.data[BOOT_DATA_NEW_ID_LOW_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c001428 cfdb MOVFF 0xfdb,0xfe600142a ffe600142c 0e02 MOVLW 0x200142e 6ee6 MOVWF 0xe6,0x0001430 6ae6 CLRF 0xe6,0x0001432 ec48 CALL 0x1c90,0x0001434 f00e001436 52e5 MOVF 0xe5,0x1,0x0001438 52e5 MOVF 0xe5,0x1,0x000143a 52e5 MOVF 0xe5,0x1,0x000143c 0e09 MOVLW 0x9 EEWrite(NODE_ID_EE+3,cm.data[BOOT_DATA_NEW_NID_INDEX]); F:\MCP\projects\CAN\canBase\Source\CAN.c00143e cfdb MOVFF 0xfdb,0xfe6001440 ffe6001442 0e03 MOVLW 0x3001444 6ee6 MOVWF 0xe6,0x0001446 6ae6 CLRF 0xe6,0x0001448 ec48 CALL 0x1c90,0x000144a f00e00144c 52e5 MOVF 0xe5,0x1,0x000144e 52e5 MOVF 0xe5,0x1,0x0001450 52e5 MOVF 0xe5,0x1,0x0001452 0e2a MOVLW 0x2a EEWrite(NODE_ID_EE,NODE_HAS_ID); F:\MCP\projects\CAN\canBase\Source\CAN.c001454 6ee6 MOVWF 0xe6,0x0001456 0e00 MOVLW 0x0001458 6ee6 MOVWF 0xe6,0x000145a 6ae6 CLRF 0xe6,0x000145c ec48 CALL 0x1c90,0x000145e f00e001460 52e5 MOVF 0xe5,0x1,0x0001462 52e5 MOVF 0xe5,0x1,0x0001464 52e5 MOVF 0xe5,0x1,0x0// Send ack with new id. F:\MCP\projects\CAN\canBase\Source\CAN.c001466 0100 MOVLB 0x0 outCm.funct = FUNCT_BOOTLOADER; F:\MCP\projects\CAN\canBase\Source\CAN.c001468 6b64 CLRF 0x64,0x100146a 0e04 MOVLW 0x4 outCm.funcc = FUNCC_BOOT_ACK; F:\MCP\projects\CAN\canBase\Source\CAN.c00146c 0100 MOVLB 0x000146e 6f65 MOVWF 0x65,0x1001470 6b66 CLRF 0x66,0x1001472 0100 MOVLB 0x0 outCm.data_length = 8; F:\MCP\projects\CAN\canBase\Source\CAN.c001474 0e08 MOVLW 0x8001476 6f6a MOVWF 0x6a,0x1001478 0100 MOVLB 0x0 outCm.data[BOOT_DATA_ERR_INDEX] = ACK_ERR_NO_ERROR; F:\MCP\projects\CAN\canBase\Source\CAN.c00147a 6b6f CLRF 0x6f,0x100147c 0e02 MOVLW 0x2 while(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canBase\Source\CAN.c00147e 6ee6 MOVWF 0xe6,0x0001480 c064 MOVFF 0x64,0xfe6001482 ffe6001484 c065 MOVFF 0x65,0xfe6001486 ffe6001488 c066 MOVFF 0x66,0xfe600148a ffe600148c c067 MOVFF 0x67,0xfe600148e ffe6001490 c068 MOVFF 0x68,0xfe6001492 ffe6001494 c069 MOVFF 0x69,0xfe6001496 ffe6001498 c06a MOVFF 0x6a,0xfe600149a ffe600149c c06b MOVFF 0x6b,0xfe600149e ffe60014a0 c06c MOVFF 0x6c,0xfe60014a2 ffe60014a4 c06d MOVFF 0x6d,0xfe60014a6 ffe60014a8 c06e MOVFF 0x6e,0xfe60014aa ffe60014ac c06f MOVFF 0x6f,0xfe60014ae ffe60014b0 c070 MOVFF 0x70,0xfe60014b2 ffe60014b4 c071 MOVFF 0x71,0xfe60014b6 ffe60014b8 c072 MOVFF 0x72,0xfe60014ba ffe60014bc d839 RCALL 0x15300014be 6e14 MOVWF 0x14,0x00014c0 0e10 MOVLW 0x100014c2 5ee1 SUBWF 0xe1,0x1,0x00014c4 5014 MOVF 0x14,0x0,0x00014c6 0900 IORLW 0x00014c8 e101 BNZ 0x14cc0014ca d7d8 BRA 0x147c} F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.c} F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//Call main parser F:\MCP\projects\CAN\canBase\Source\CAN.c0014cc cfd9 MOVFF 0xfd9,0xfe9 canParse(cm); F:\MCP\projects\CAN\canBase\Source\CAN.c0014ce ffe90014d0 cfda MOVFF 0xfda,0xfea0014d2 ffea0014d4 cfee MOVFF 0xfee,0xfe60014d6 ffe60014d8 cfee MOVFF 0xfee,0xfe60014da ffe60014dc cfee MOVFF 0xfee,0xfe60014de ffe60014e0 cfee MOVFF 0xfee,0xfe60014e2 ffe60014e4 cfee MOVFF 0xfee,0xfe60014e6 ffe60014e8 cfee MOVFF 0xfee,0xfe60014ea ffe60014ec cfee MOVFF 0xfee,0xfe60014ee ffe60014f0 cfee MOVFF 0xfee,0xfe60014f2 ffe60014f4 cfee MOVFF 0xfee,0xfe60014f6 ffe60014f8 cfee MOVFF 0xfee,0xfe60014fa ffe60014fc cfee MOVFF 0xfee,0xfe60014fe ffe6001500 cfee MOVFF 0xfee,0xfe6001502 ffe6001504 cfee MOVFF 0xfee,0xfe6001506 ffe6001508 cfee MOVFF 0xfee,0xfe600150a ffe600150c cfee MOVFF 0xfee,0xfe600150e ffe6001510 ec77 CALL 0x1aee,0x0001512 f00d001514 6e14 MOVWF 0x14,0x0001516 0e0f MOVLW 0xf001518 5ee1 SUBWF 0xe1,0x1,0x000151a 5014 MOVF 0x14,0x0,0x000151c 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canBase\Source\CAN.c00151e 5ce1 SUBWF 0xe1,0x0,0x0001520 e202 BC 0x1526001522 6ae1 CLRF 0xe1,0x0001524 52e5 MOVF 0xe5,0x1,0x0001526 6ee1 MOVWF 0xe1,0x0001528 52e5 MOVF 0xe5,0x1,0x000152a cfe7 MOVFF 0xfe7,0xfd900152c ffd900152e 0012 RETURN 0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c/* F:\MCP\projects\CAN\canBase\Source\CAN.c* Function: canSendMessage F:\MCP\projects\CAN\canBase\Source\CAN.c* F:\MCP\projects\CAN\canBase\Source\CAN.c* Input: CAN_MESSAGE to send F:\MCP\projects\CAN\canBase\Source\CAN.c* Output: True if packet scheduled sucess, false otherwise. F:\MCP\projects\CAN\canBase\Source\CAN.c* Pre-conditions: canInit F:\MCP\projects\CAN\canBase\Source\CAN.c* Affects: .. F:\MCP\projects\CAN\canBase\Source\CAN.c* Depends: .. F:\MCP\projects\CAN\canBase\Source\CAN.c*/ F:\MCP\projects\CAN\canBase\Source\CAN.c001530 cfd9 MOVFF 0xfd9,0xfe6 BOOL canSendMessage(CAN_MESSAGE cm,CAN_PRIORITY prio) F:\MCP\projects\CAN\canBase\Source\CAN.c001532 ffe6001534 cfe1 MOVFF 0xfe1,0xfd9001536 ffd9{ F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c001538 010f MOVLB 0xf if ( TXB0CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00011; } F:\MCP\projects\CAN\canBase\Source\CAN.c00153a b740 BTFSC 0x40,0x3,0x100153c d004 BRA 0x154600153e 0e00 MOVLW 0x0001540 1477 ANDWF 0x77,0x0,0x0001542 0903 IORLW 0x3001544 6e77 MOVWF 0x77,0x0001546 010f MOVLB 0xf if ( TXB1CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00100; } F:\MCP\projects\CAN\canBase\Source\CAN.c001548 b730 BTFSC 0x30,0x3,0x100154a d004 BRA 0x155400154c 0e00 MOVLW 0x000154e 1477 ANDWF 0x77,0x0,0x0001550 0904 IORLW 0x4001552 6e77 MOVWF 0x77,0x0001554 010f MOVLB 0xf if ( TXB2CONbits.TXREQ == 0 ) { ECANCON=(ECANCON&0b00000)|0b00101; } F:\MCP\projects\CAN\canBase\Source\CAN.c001556 b720 BTFSC 0x20,0x3,0x1001558 d005 BRA 0x156400155a 0e00 MOVLW 0x000155c 1477 ANDWF 0x77,0x0,0x000155e 0905 IORLW 0x5001560 6e77 MOVWF 0x77,0x0// None of the transmit buffers were empty. F:\MCP\projects\CAN\canBase\Source\CAN.c001562 d002 BRA 0x1568 else { return FALSE;} F:\MCP\projects\CAN\canBase\Source\CAN.c001564 0e00 MOVLW 0x0001566 d0b9 BRA 0x16daF:\MCP\projects\CAN\canBase\Source\CAN.c001568 0eef MOVLW 0xef if (prio<0 || prio>3) prio = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00156a cfdb MOVFF 0xfdb,0x1400156c f01400156e 3414 RLCF 0x14,0x0,0x0001570 e20e BC 0x158e001572 0eef MOVLW 0xef001574 cfdb MOVFF 0xfdb,0x15001576 f015001578 0e03 MOVLW 0x300157a 6ee7 MOVWF 0xe7,0x000157c 1815 XORWF 0x15,0x0,0x000157e aee8 BTFSS 0xe8,0x7,0x0001580 d002 BRA 0x1586001582 3415 RLCF 0x15,0x0,0x0001584 d003 BRA 0x158c001586 50e7 MOVF 0xe7,0x0,0x0001588 80d8 BSF 0xd8,0x0,0x000158a 5415 SUBFWB 0x15,0x0,0x000158c e202 BC 0x159200158e 0eef MOVLW 0xef001590 6adb CLRF 0xdb,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Append my id and nid F:\MCP\projects\CAN\canBase\Source\CAN.c001592 0ef3 MOVLW 0xf3 cm.nid = MY_NID; F:\MCP\projects\CAN\canBase\Source\CAN.c001594 c095 MOVFF 0x95,0xfdb001596 ffdb001598 0ef4 MOVLW 0xf4 cm.sid = MY_ID; F:\MCP\projects\CAN\canBase\Source\CAN.c00159a c093 MOVFF 0x93,0xfdb00159c ffdb00159e 0ef5 MOVLW 0xf50015a0 c094 MOVFF 0x94,0xfdb0015a2 ffdbF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDH 28 27 26 25 24 23 22 21 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0SIDL 20 19 18 xx xx xx 17 16 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDH 15 14 13 12 11 10 09 08 F:\MCP\projects\CAN\canBase\Source\CAN.c//RXB0EIDL 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c//funct xx xx xx xx 28 27 26 25 F:\MCP\projects\CAN\canBase\Source\CAN.c//funcc xx xx xx xx xx xx 24 23 22 21 20 19 18 17 16 15 F:\MCP\projects\CAN\canBase\Source\CAN.c//nid xx xx 14 13 12 11 10 09 F:\MCP\projects\CAN\canBase\Source\CAN.c//sid xx xx xx xx xx xx xx 08 07 06 05 04 03 02 01 00 F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0015a4 0ef1 MOVLW 0xf1 RXB0SIDH = (BYTE)((cm.funct & 0x0F)<<4)+(BYTE)((cm.funcc & 0x03C0)>>6); F:\MCP\projects\CAN\canBase\Source\CAN.c0015a6 cfdb MOVFF 0xfdb,0x140015a8 f0140015aa 0ef2 MOVLW 0xf20015ac cfdb MOVFF 0xfdb,0x150015ae f0150015b0 0ec0 MOVLW 0xc00015b2 1614 ANDWF 0x14,0x1,0x00015b4 0e03 MOVLW 0x30015b6 1615 ANDWF 0x15,0x1,0x00015b8 0e06 MOVLW 0x60015ba 90d8 BCF 0xd8,0x0,0x00015bc 3215 RRCF 0x15,0x1,0x00015be 3214 RRCF 0x14,0x1,0x00015c0 04e8 DECF 0xe8,0x0,0x00015c2 e1fb BNZ 0x15ba0015c4 0ef0 MOVLW 0xf00015c6 50db MOVF 0xdb,0x0,0x00015c8 0b0f ANDLW 0xf0015ca 0d10 MULLW 0x100015cc 50f3 MOVF 0xf3,0x0,0x00015ce 2414 ADDWF 0x14,0x0,0x00015d0 6e61 MOVWF 0x61,0x00015d2 0e06 MOVLW 0x6 RXB0SIDL = (BYTE)((cm.funcc & 0x003F)<<2)+(BYTE)((cm.funcc & 0x0006)>>1); F:\MCP\projects\CAN\canBase\Source\CAN.c0015d4 6ee7 MOVWF 0xe7,0x00015d6 0ef1 MOVLW 0xf10015d8 cfdb MOVFF 0xfdb,0x160015da f0160015dc 0ef2 MOVLW 0xf20015de cfdb MOVFF 0xfdb,0x170015e0 f0170015e2 50e7 MOVF 0xe7,0x0,0x00015e4 1616 ANDWF 0x16,0x1,0x00015e6 6a17 CLRF 0x17,0x00015e8 90d8 BCF 0xd8,0x0,0x00015ea 3217 RRCF 0x17,0x1,0x00015ec 3216 RRCF 0x16,0x1,0x00015ee 0e3f MOVLW 0x3f0015f0 6ee7 MOVWF 0xe7,0x00015f2 0ef1 MOVLW 0xf10015f4 cfdb MOVFF 0xfdb,0x140015f6 f0140015f8 0ef2 MOVLW 0xf20015fa cfdb MOVFF 0xfdb,0x150015fc f0150015fe 50e7 MOVF 0xe7,0x0,0x0001600 1614 ANDWF 0x14,0x1,0x0001602 6a15 CLRF 0x15,0x0001604 90d8 BCF 0xd8,0x0,0x0001606 3614 RLCF 0x14,0x1,0x0001608 3615 RLCF 0x15,0x1,0x000160a 90d8 BCF 0xd8,0x0,0x000160c 3614 RLCF 0x14,0x1,0x000160e 3615 RLCF 0x15,0x1,0x0001610 5014 MOVF 0x14,0x0,0x0001612 2416 ADDWF 0x16,0x0,0x0001614 6e62 MOVWF 0x62,0x0001616 0ef4 MOVLW 0xf4 RXB0EIDH = (BYTE)((cm.funcc & 0x0001)<<7)+(BYTE)((cm.nid & 0x3F)<<1)+(BYTE)((cm.sid & 0x0100)>>8); F:\MCP\projects\CAN\canBase\Source\CAN.c001618 cfdb MOVFF 0xfdb,0x1600161a f01600161c 0ef5 MOVLW 0xf500161e cfdb MOVFF 0xfdb,0x17001620 f017001622 0e00 MOVLW 0x0001624 1616 ANDWF 0x16,0x1,0x0001626 0e01 MOVLW 0x1001628 1617 ANDWF 0x17,0x1,0x000162a c017 MOVFF 0x17,0x1600162c f01600162e 6a17 CLRF 0x17,0x0001630 0e01 MOVLW 0x1001632 6ee7 MOVWF 0xe7,0x0001634 0ef1 MOVLW 0xf1001636 cfdb MOVFF 0xfdb,0x14001638 f01400163a 0ef2 MOVLW 0xf200163c cfdb MOVFF 0xfdb,0x1500163e f015001640 50e7 MOVF 0xe7,0x0,0x0001642 1614 ANDWF 0x14,0x1,0x0001644 6a15 CLRF 0x15,0x0001646 0e07 MOVLW 0x7001648 90d8 BCF 0xd8,0x0,0x000164a 3614 RLCF 0x14,0x1,0x000164c 3615 RLCF 0x15,0x1,0x000164e 04e8 DECF 0xe8,0x0,0x0001650 e1fb BNZ 0x1648001652 0ef3 MOVLW 0xf3001654 50db MOVF 0xdb,0x0,0x0001656 0b3f ANDLW 0x3f001658 24e8 ADDWF 0xe8,0x0,0x000165a 2414 ADDWF 0x14,0x0,0x000165c 2416 ADDWF 0x16,0x0,0x000165e 6e63 MOVWF 0x63,0x0001660 0eff MOVLW 0xff RXB0EIDL = (BYTE)((cm.sid & 0x00FF)); F:\MCP\projects\CAN\canBase\Source\CAN.c001662 6ee7 MOVWF 0xe7,0x0001664 0ef4 MOVLW 0xf4001666 cfdb MOVFF 0xfdb,0x14001668 f01400166a 0ef5 MOVLW 0xf500166c cfdb MOVFF 0xfdb,0x1500166e f015001670 50e7 MOVF 0xe7,0x0,0x0001672 1614 ANDWF 0x14,0x1,0x0001674 6a15 CLRF 0x15,0x0001676 5014 MOVF 0x14,0x0,0x0001678 6e64 MOVWF 0x64,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// Data length F:\MCP\projects\CAN\canBase\Source\CAN.c00167a 6a65 CLRF 0x65,0x0 RXB0DLC = 0; F:\MCP\projects\CAN\canBase\Source\CAN.c00167c 0ef6 MOVLW 0xf6 if (cm.data_length>8) RXB0DLC=8; else RXB0DLC=cm.data_length; F:\MCP\projects\CAN\canBase\Source\CAN.c00167e 50db MOVF 0xdb,0x0,0x0001680 0808 SUBLW 0x8001682 e203 BC 0x168a001684 0e08 MOVLW 0x8001686 6e65 MOVWF 0x65,0x0001688 d003 BRA 0x169000168a 0ef6 MOVLW 0xf600168c 50db MOVF 0xdb,0x0,0x000168e 6e65 MOVWF 0x65,0x0F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// NOT Remote request F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c001690 9c65 BCF 0x65,0x6,0x0 bcf RXB0DLC, 6, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Data one bye one, for speed F:\MCP\projects\CAN\canBase\Source\CAN.c001692 0ef7 MOVLW 0xf7 RXB0D0=cm.data[0]; RXB0D1=cm.data[1]; F:\MCP\projects\CAN\canBase\Source\CAN.c001694 50db MOVF 0xdb,0x0,0x0001696 6e66 MOVWF 0x66,0x0001698 0ef8 MOVLW 0xf800169a 50db MOVF 0xdb,0x0,0x000169c 6e67 MOVWF 0x67,0x000169e 0ef9 MOVLW 0xf9 RXB0D2=cm.data[2]; RXB0D3=cm.data[3]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016a0 50db MOVF 0xdb,0x0,0x00016a2 6e68 MOVWF 0x68,0x00016a4 0efa MOVLW 0xfa0016a6 50db MOVF 0xdb,0x0,0x00016a8 6e69 MOVWF 0x69,0x00016aa 0efb MOVLW 0xfb RXB0D4=cm.data[4]; RXB0D5=cm.data[5]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016ac 50db MOVF 0xdb,0x0,0x00016ae 6e6a MOVWF 0x6a,0x00016b0 0efc MOVLW 0xfc0016b2 50db MOVF 0xdb,0x0,0x00016b4 6e6b MOVWF 0x6b,0x00016b6 0efd MOVLW 0xfd RXB0D6=cm.data[6]; RXB0D7=cm.data[7]; F:\MCP\projects\CAN\canBase\Source\CAN.c0016b8 50db MOVF 0xdb,0x0,0x00016ba 6e6c MOVWF 0x6c,0x00016bc 0efe MOVLW 0xfe0016be 50db MOVF 0xdb,0x0,0x00016c0 6e6d MOVWF 0x6d,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// set extended F:\MCP\projects\CAN\canBase\Source\CAN.c0016c2 8662 BSF 0x62,0x3,0x0 RXB0SIDLbits.EXID=1; F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c// Priority F:\MCP\projects\CAN\canBase\Source\CAN.c0016c4 0eef MOVLW 0xef RXB0CON = (RXB0CON & 0b11111100) | prio; F:\MCP\projects\CAN\canBase\Source\CAN.c0016c6 cfdb MOVFF 0xfdb,0xfe60016c8 ffe60016ca 0efc MOVLW 0xfc0016cc 1460 ANDWF 0x60,0x0,0x00016ce 52e5 MOVF 0xe5,0x1,0x00016d0 10e7 IORWF 0xe7,0x0,0x00016d2 6e60 MOVWF 0x60,0x0F:\MCP\projects\CAN\canBase\Source\CAN.c// mark as redy to transmit F:\MCP\projects\CAN\canBase\Source\CAN.c_asm F:\MCP\projects\CAN\canBase\Source\CAN.c0016d4 8660 BSF 0x60,0x3,0x0 bsf RXB0CON, 3, 0 F:\MCP\projects\CAN\canBase\Source\CAN.c_endasm F:\MCP\projects\CAN\canBase\Source\CAN.cF:\MCP\projects\CAN\canBase\Source\CAN.c0016d6 0e01 MOVLW 0x1 return TRUE; F:\MCP\projects\CAN\canBase\Source\CAN.c0016d8 d000 BRA 0x16daF:\MCP\projects\CAN\canBase\Source\CAN.c0016da 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canBase\Source\CAN.c0016dc cfe7 MOVFF 0xfe7,0xfd90016de ffd90016e0 0012 RETURN 0x0/********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Ticker module service F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c********************************************************************* F:\MCP\projects\CAN\canBase\Source\Tick.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canBase/Source/Tick.c $ F:\MCP\projects\CAN\canBase\Source\Tick.c* Last changed: $LastChangedDate: 2006-11-14 10:55:38 +0100 (ti, 14 nov 2006) $ F:\MCP\projects\CAN\canBase\Source\Tick.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canBase\Source\Tick.c* Revision: $Revision: 86 $ F:\MCP\projects\CAN\canBase\Source\Tick.c********************************************************************/ F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_INCLUDE F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#include <Tick.h> F:\MCP\projects\CAN\canBase\Source\Tick.c#include <Compiler.h> F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE_1 ((INSTR_FREQ) / (TICKS_PER_SECOND * TICK_PRESCALE_VALUE)) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if TICK_TEMP_VALUE_1 > 60000 F:\MCP\projects\CAN\canBase\Source\Tick.c#error TICK_PER_SECOND value cannot be programmed with current CLOCK_FREQ F:\MCP\projects\CAN\canBase\Source\Tick.c#error Either lower TICK_PER_SECOND or manually configure the Timer F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_TEMP_VALUE (65535 - TICK_TEMP_VALUE_1) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_HIGH ((TICK_TEMP_VALUE >> 8) & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TICK_COUNTER_LOW (TICK_TEMP_VALUE & 0xff) F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c#if (TICK_PRESCALE_VALUE == 2) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (0) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 4 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (1) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 8 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (2) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 16 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (3) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 32 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (4) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 64 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (5) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 128 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (6) F:\MCP\projects\CAN\canBase\Source\Tick.c#elif ( TICK_PRESCALE_VALUE == 256 ) F:\MCP\projects\CAN\canBase\Source\Tick.c#define TIMER_PRESCALE (7) F:\MCP\projects\CAN\canBase\Source\Tick.c#else F:\MCP\projects\CAN\canBase\Source\Tick.c#error Invalid TICK_PRESCALE_VALUE specified. F:\MCP\projects\CAN\canBase\Source\Tick.c#endif F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cTICK TickCount = 0; // 10ms/unit F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: Tick manager is initialized. F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.c#define PERIOD (INSTR_FREQ/256/1000)*TICK_PERIOD_MS F:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickInit(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001d90 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001d92 6ed6 MOVWF 0xd6,0x0001d94 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001d96 6ed7 MOVWF 0xd7,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// 16-BIT, internal timer, PSA set to 1:256 F:\MCP\projects\CAN\canBase\Source\Tick.c001d98 0e07 MOVLW 0x7 T0CON = 0b00000000 | TIMER_PRESCALE; F:\MCP\projects\CAN\canBase\Source\Tick.c001d9a 6ed5 MOVWF 0xd5,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c// Start the timer. F:\MCP\projects\CAN\canBase\Source\Tick.c001d9c 8ed5 BSF 0xd5,0x7,0x0 T0CONbits.TMR0ON = 1; F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c001d9e 84f2 BSF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001da0 8af2 BSF 0xf2,0x5,0x0 INTCONbits.TMR0IE = 1; F:\MCP\projects\CAN\canBase\Source\Tick.c001da2 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: TickGet F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: Current tick value is given, 1 tick represents approximately 10ms F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.cTICK tickGet(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c001da4 c08f MOVFF 0x8f,0x4 return TickCount; F:\MCP\projects\CAN\canBase\Source\Tick.c001da6 f004001da8 c090 MOVFF 0x90,0x5001daa f005001dac c091 MOVFF 0x91,0x6001dae f006001db0 c092 MOVFF 0x92,0x7001db2 f007001db4 d000 BRA 0x1db6001db6 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.cF:\MCP\projects\CAN\canBase\Source\Tick.c/* F:\MCP\projects\CAN\canBase\Source\Tick.c* Function: tickUpdate F:\MCP\projects\CAN\canBase\Source\Tick.c* F:\MCP\projects\CAN\canBase\Source\Tick.c* Input: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Output: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Pre-conditions: TickInit F:\MCP\projects\CAN\canBase\Source\Tick.c* Affects: none F:\MCP\projects\CAN\canBase\Source\Tick.c* Depends: none F:\MCP\projects\CAN\canBase\Source\Tick.c*/ F:\MCP\projects\CAN\canBase\Source\Tick.cvoid tickUpdate(void) F:\MCP\projects\CAN\canBase\Source\Tick.c{ F:\MCP\projects\CAN\canBase\Source\Tick.c001db8 a4f2 BTFSS 0xf2,0x2,0x0 if(INTCONbits.TMR0IF) F:\MCP\projects\CAN\canBase\Source\Tick.c001dba d00b BRA 0x1dd2{ F:\MCP\projects\CAN\canBase\Source\Tick.c001dbc 0efe MOVLW 0xfe TMR0H = TICK_COUNTER_HIGH; F:\MCP\projects\CAN\canBase\Source\Tick.c001dbe 6ed7 MOVWF 0xd7,0x0001dc0 0e79 MOVLW 0x79 TMR0L = TICK_COUNTER_LOW; F:\MCP\projects\CAN\canBase\Source\Tick.c001dc2 6ed6 MOVWF 0xd6,0x0F:\MCP\projects\CAN\canBase\Source\Tick.c001dc4 0100 MOVLB 0x0 TickCount++; F:\MCP\projects\CAN\canBase\Source\Tick.c001dc6 2b8f INCF 0x8f,0x1,0x1001dc8 0e00 MOVLW 0x0001dca 2390 ADDWFC 0x90,0x1,0x1001dcc 2391 ADDWFC 0x91,0x1,0x1001dce 2392 ADDWFC 0x92,0x1,0x1F:\MCP\projects\CAN\canBase\Source\Tick.c001dd0 94f2 BCF 0xf2,0x2,0x0 INTCONbits.TMR0IF = 0; F:\MCP\projects\CAN\canBase\Source\Tick.c} F:\MCP\projects\CAN\canBase\Source\Tick.c001dd2 0012 RETURN 0x0 } F:\MCP\projects\CAN\canBase\Source\Tick.c/********************************************************************* F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Main application F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c********************************************************************* F:\MCP\projects\CAN\canTemp\Source\Main.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canTemp/Source/Main.c $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Last changed: $LastChangedDate: 2007-02-03 16:58:13 +0100 (lö, 03 feb 2007) $ F:\MCP\projects\CAN\canTemp\Source\Main.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\Main.c* Revision: $Revision: 282 $ F:\MCP\projects\CAN\canTemp\Source\Main.c********************************************************************/ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#include <compiler.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <stackTasks.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <Tick.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <funcdefs.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#include <CAN.h> F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.c#include <adc.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c#include <blinds.h> F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cstatic void mainInit(void); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001950 cfd9 MOVFF 0xfd9,0xfe6 void main() F:\MCP\projects\CAN\canTemp\Source\Main.c001952 ffe6001954 cfe1 MOVFF 0xfe1,0xfd9001956 ffd9001958 0e0f MOVLW 0xf00195a 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Inits F:\MCP\projects\CAN\canTemp\Source\Main.c00195c d8c1 RCALL 0x1ae0 mainInit(); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c00195e ec2e CALL 0x105c,0x0 canInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c001960 f008F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.cadcInit(TRUE,0b1011); F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c001962 ec86 CALL 0x1b0c,0x0 blindsInit(); F:\MCP\projects\CAN\canTemp\Source\Main.c001964 f00d#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001966 8a82 BSF 0x82,0x5,0x0 BLINDS0P_IO=1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001a1e d7a4 BRA 0x1968 while(1) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK t = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK temperature = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic BYTE lastTemperature = TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic signed char angle = 70; F:\MCP\projects\CAN\canTemp\Source\Main.cstatic TICK blinds = 0; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001968 ecd2 CALL 0x1da4,0x0 if ((tickGet()-t)>TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c00196a f00e00196c 0100 MOVLB 0x000196e 5177 MOVF 0x77,0x0,0x1001970 5c04 SUBWF 0x4,0x0,0x0001972 6e14 MOVWF 0x14,0x0001974 5178 MOVF 0x78,0x0,0x1001976 5805 SUBWFB 0x5,0x0,0x0001978 6e15 MOVWF 0x15,0x000197a 5179 MOVF 0x79,0x0,0x100197c 5806 SUBWFB 0x6,0x0,0x000197e 6e16 MOVWF 0x16,0x0001980 517a MOVF 0x7a,0x0,0x1001982 5807 SUBWFB 0x7,0x0,0x0001984 6e17 MOVWF 0x17,0x0001986 80d8 BSF 0xd8,0x0,0x0001988 0e64 MOVLW 0x6400198a 5414 SUBFWB 0x14,0x0,0x000198c 0e00 MOVLW 0x000198e 5415 SUBFWB 0x15,0x0,0x0001990 0e00 MOVLW 0x0001992 5416 SUBFWB 0x16,0x0,0x0001994 0e00 MOVLW 0x0001996 5417 SUBFWB 0x17,0x0,0x0001998 e20b BC 0x19b0{ F:\MCP\projects\CAN\canTemp\Source\Main.c00199a 7282 BTG 0x82,0x1,0x0 LED0_IO=~LED0_IO; F:\MCP\projects\CAN\canTemp\Source\Main.c00199c ecd2 CALL 0x1da4,0x0 t = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c00199e f00e0019a0 c004 MOVFF 0x4,0x770019a2 f0770019a4 c005 MOVFF 0x5,0x780019a6 f0780019a8 c006 MOVFF 0x6,0x790019aa f0790019ac c007 MOVFF 0x7,0x7a0019ae f07a} F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c0019b0 ecd2 CALL 0x1da4,0x0 if ((tickGet()-blinds)>2*TICK_SECOND) F:\MCP\projects\CAN\canTemp\Source\Main.c0019b2 f00e0019b4 0100 MOVLB 0x00019b6 5181 MOVF 0x81,0x0,0x10019b8 5c04 SUBWF 0x4,0x0,0x00019ba 6e14 MOVWF 0x14,0x00019bc 5182 MOVF 0x82,0x0,0x10019be 5805 SUBWFB 0x5,0x0,0x00019c0 6e15 MOVWF 0x15,0x00019c2 5183 MOVF 0x83,0x0,0x10019c4 5806 SUBWFB 0x6,0x0,0x00019c6 6e16 MOVWF 0x16,0x00019c8 5184 MOVF 0x84,0x0,0x10019ca 5807 SUBWFB 0x7,0x0,0x00019cc 6e17 MOVWF 0x17,0x00019ce 80d8 BSF 0xd8,0x0,0x00019d0 0ec8 MOVLW 0xc80019d2 5414 SUBFWB 0x14,0x0,0x00019d4 0e00 MOVLW 0x00019d6 5415 SUBFWB 0x15,0x0,0x00019d8 0e00 MOVLW 0x00019da 5416 SUBFWB 0x16,0x0,0x00019dc 0e00 MOVLW 0x00019de 5417 SUBFWB 0x17,0x0,0x00019e0 e21e BC 0x1a1e{ F:\MCP\projects\CAN\canTemp\Source\Main.c0019e2 0e00 MOVLW 0x0 angle = (angle>0?-70:70); F:\MCP\projects\CAN\canTemp\Source\Main.c0019e4 6ee7 MOVWF 0xe7,0x00019e6 1980 XORWF 0x80,0x0,0x10019e8 aee8 BTFSS 0xe8,0x7,0x00019ea d002 BRA 0x19f00019ec 3580 RLCF 0x80,0x0,0x10019ee d003 BRA 0x19f60019f0 50e7 MOVF 0xe7,0x0,0x00019f2 80d8 BSF 0xd8,0x0,0x00019f4 5580 SUBFWB 0x80,0x0,0x10019f6 e202 BC 0x19fc0019f8 0eba MOVLW 0xba0019fa d001 BRA 0x19fe0019fc 0e46 MOVLW 0x460019fe 6f80 MOVWF 0x80,0x1001a00 c080 MOVFF 0x80,0xfe6 blindsTurn(angle); F:\MCP\projects\CAN\canTemp\Source\Main.c001a02 ffe6001a04 ec9a CALL 0x1b34,0x0001a06 f00d001a08 52e5 MOVF 0xe5,0x1,0x0001a0a ecd2 CALL 0x1da4,0x0 blinds = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c001a0c f00e001a0e c004 MOVFF 0x4,0x81001a10 f081001a12 c005 MOVFF 0x5,0x82001a14 f082001a16 c006 MOVFF 0x6,0x83001a18 f083001a1a c007 MOVFF 0x7,0x84001a1c f084} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.cif ((tickGet()-temperature)>TICK_SECOND*2) // Each 2 second, read temperature. F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.cif (lastTemperature==TEMPERATURE_INSIDE) lastTemperature=TEMPERATURE_OUTSIDE; else lastTemperature=TEMPERATURE_INSIDE; F:\MCP\projects\CAN\canTemp\Source\Main.cadcConvert(lastTemperature); F:\MCP\projects\CAN\canTemp\Source\Main.ctemperature = tickGet(); F:\MCP\projects\CAN\canTemp\Source\Main.c} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.cif (adcDone()) // Has temperature, send it to the bus F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.cBYTE decimal; F:\MCP\projects\CAN\canTemp\Source\Main.csigned char tenth; F:\MCP\projects\CAN\canTemp\Source\Main.ctemperatureRead(&tenth,&decimal); F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.coutCm.funct = FUNCT_SENSORS; F:\MCP\projects\CAN\canTemp\Source\Main.coutCm.funcc = (lastTemperature==TEMPERATURE_INSIDE?FUNCC_SENSORS_TEMPERATURE_INSIDE:FUNCC_SENSORS_TEMPERATURE_OUTSIDE); F:\MCP\projects\CAN\canTemp\Source\Main.coutCm.data_length = 2; F:\MCP\projects\CAN\canTemp\Source\Main.coutCm.data[1] = tenth; // signed 10 an 1 decimal. F:\MCP\projects\CAN\canTemp\Source\Main.coutCm.data[0] = decimal; // Decimal value, 0-9 F:\MCP\projects\CAN\canTemp\Source\Main.cwhile(!canSendMessage(outCm,PRIO_HIGH)); F:\MCP\projects\CAN\canTemp\Source\Main.c} F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c} F:\MCP\projects\CAN\canTemp\Source\Main.c001a20 0e0f MOVLW 0xf } F:\MCP\projects\CAN\canTemp\Source\Main.c001a22 5ce1 SUBWF 0xe1,0x0,0x0001a24 e202 BC 0x1a2a001a26 6ae1 CLRF 0xe1,0x0001a28 52e5 MOVF 0xe5,0x1,0x0001a2a 6ee1 MOVWF 0xe1,0x0001a2c 52e5 MOVF 0xe5,0x1,0x0001a2e cfe7 MOVFF 0xfe7,0xfd9001a30 ffd9001a32 0012 RETURN 0x0F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma interrupt high_isr F:\MCP\projects\CAN\canTemp\Source\Main.c001a34 cfda MOVFF 0xfda,0xfe4 void high_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c001a36 ffe4001a38 cfe2 MOVFF 0xfe2,0xfda001a3a ffda001a3c cfe9 MOVFF 0xfe9,0xfe4001a3e ffe4001a40 cfea MOVFF 0xfea,0xfe4001a42 ffe4001a44 cff6 MOVFF 0xff6,0xfe4001a46 ffe4001a48 cff7 MOVFF 0xff7,0xfe4001a4a ffe4001a4c cff5 MOVFF 0xff5,0xfe4001a4e ffe4001a50 cff3 MOVFF 0xff3,0xfe4001a52 ffe4001a54 cff4 MOVFF 0xff4,0xfe4001a56 ffe4001a58 cffa MOVFF 0xffa,0xfe4001a5a ffe4001a5c ee00 LFSR 0x0,0x0001a5e f000001a60 0e14 MOVLW 0x14001a62 04e8 DECF 0xe8,0x0,0x0001a64 e303 BNC 0x1a6c001a66 cfee MOVFF 0xfee,0xfe4001a68 ffe4001a6a d7fb BRA 0x1a62001a6c ee00 LFSR 0x0,0x14001a6e f014001a70 0e0f MOVLW 0xf001a72 04e8 DECF 0xe8,0x0,0x0001a74 e303 BNC 0x1a7c001a76 cfee MOVFF 0xfee,0xfe4001a78 ffe4001a7a d7fb BRA 0x1a72001a7c 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c001a7e ecb0 CALL 0x1160,0x0 canISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c001a80 f008F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\Main.c001a82 ec0c CALL 0x1c18,0x0 blindsISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c001a84 f00e#endif F:\MCP\projects\CAN\canTemp\Source\Main.c001a86 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c001a88 ee00 LFSR 0x0,0x22001a8a f022001a8c 0e0f MOVLW 0xf001a8e 04e8 DECF 0xe8,0x0,0x0001a90 e303 BNC 0x1a98001a92 cfe5 MOVFF 0xfe5,0xfed001a94 ffed001a96 d7fb BRA 0x1a8e001a98 ee00 LFSR 0x0,0x13001a9a f013001a9c 0e14 MOVLW 0x14001a9e 04e8 DECF 0xe8,0x0,0x0001aa0 e303 BNC 0x1aa8001aa2 cfe5 MOVFF 0xfe5,0xfed001aa4 ffed001aa6 d7fb BRA 0x1a9e001aa8 cfe5 MOVFF 0xfe5,0xffa001aaa fffa001aac cfe5 MOVFF 0xfe5,0xff4001aae fff4001ab0 cfe5 MOVFF 0xfe5,0xff3001ab2 fff3001ab4 cfe5 MOVFF 0xfe5,0xff5001ab6 fff5001ab8 cfe5 MOVFF 0xfe5,0xff7001aba fff7001abc cfe5 MOVFF 0xfe5,0xff6001abe fff6001ac0 cfe5 MOVFF 0xfe5,0xfea001ac2 ffea001ac4 cfe5 MOVFF 0xfe5,0xfe9001ac6 ffe9001ac8 cfe5 MOVFF 0xfe5,0xfda001aca ffda001acc 0011 RETFIE 0x1F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma interrupt low_isr F:\MCP\projects\CAN\canTemp\Source\Main.c001ace cfda MOVFF 0xfda,0xfe4 void low_isr(void) F:\MCP\projects\CAN\canTemp\Source\Main.c001ad0 ffe4001ad2 cfe2 MOVFF 0xfe2,0xfda001ad4 ffda001ad6 52e6 MOVF 0xe6,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.c#ifdef USE_ADC F:\MCP\projects\CAN\canTemp\Source\Main.cadcISR(); F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.c001ad8 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c001ada cfe5 MOVFF 0xfe5,0xfda001adc ffda001ade 0011 RETFIE 0x1F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c/* F:\MCP\projects\CAN\canTemp\Source\Main.c* Function: mainInit F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Input: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Output: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Affects: Se code F:\MCP\projects\CAN\canTemp\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\Main.c*/ F:\MCP\projects\CAN\canTemp\Source\Main.cvoid mainInit() F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c001ae0 9294 BCF 0x94,0x1,0x0 LED0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c001ae2 9894 BCF 0x94,0x4,0x0 BLINDS0_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.c001ae4 9a94 BCF 0x94,0x5,0x0 BLINDS0P_TRIS=0; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable Interrupts F:\MCP\projects\CAN\canTemp\Source\Main.c001ae6 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIEH = 1; F:\MCP\projects\CAN\canTemp\Source\Main.c001ae8 8cf2 BSF 0xf2,0x6,0x0 INTCONbits.GIEL = 1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Enable interrupt prirority F:\MCP\projects\CAN\canTemp\Source\Main.c001aea 8ed0 BSF 0xd0,0x7,0x0 RCONbits.IPEN=1; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001aec 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c/* F:\MCP\projects\CAN\canTemp\Source\Main.c* Function: canParse F:\MCP\projects\CAN\canTemp\Source\Main.c* F:\MCP\projects\CAN\canTemp\Source\Main.c* Input: Received can message F:\MCP\projects\CAN\canTemp\Source\Main.c* Output: none F:\MCP\projects\CAN\canTemp\Source\Main.c* Pre-conditions: canInit and received packet. F:\MCP\projects\CAN\canTemp\Source\Main.c* Affects: Sensors/actuators/etc. See code. F:\MCP\projects\CAN\canTemp\Source\Main.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\Main.c*/ F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001aee cfd9 MOVFF 0xfd9,0xfe6 void canParse(CAN_MESSAGE cm) F:\MCP\projects\CAN\canTemp\Source\Main.c001af0 ffe6001af2 cfe1 MOVFF 0xfe1,0xfd9001af4 ffd9001af6 0e0f MOVLW 0xf001af8 26e1 ADDWF 0xe1,0x1,0x0{ F:\MCP\projects\CAN\canTemp\Source\Main.cCAN_MESSAGE outCm; F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c001afa 5ce1 SUBWF 0xe1,0x0,0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c001afc e202 BC 0x1b02001afe 6ae1 CLRF 0xe1,0x0001b00 52e5 MOVF 0xe5,0x1,0x0001b02 6ee1 MOVWF 0xe1,0x0001b04 52e5 MOVF 0xe5,0x1,0x0001b06 cfe7 MOVFF 0xfe7,0xfd9001b08 ffd9001b0a 0012 RETURN 0x0F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c// Below are mandantory when using bootloader F:\MCP\projects\CAN\canTemp\Source\Main.c// define DEBUG_MODE to use without bootloader. F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#ifndef DEBUG_MODE F:\MCP\projects\CAN\canTemp\Source\Main.cextern void _startup (void); F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _RESET_INTERRUPT_VECTOR = 0x001000 F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _reset (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c001000 efea GOTO 0x1dd4 _asm goto _startup _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c001002 f00e001004 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.c#endif F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _HIGH_INTERRUPT_VECTOR = 0x001008 F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _high_ISR (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c001008 ef1a GOTO 0x1a34 _asm GOTO high_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00100a f00d00100c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.cF:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code _LOW_INTERRUPT_VECTOR = 0x001018 F:\MCP\projects\CAN\canTemp\Source\Main.cvoid _low_ISR (void) F:\MCP\projects\CAN\canTemp\Source\Main.c{ F:\MCP\projects\CAN\canTemp\Source\Main.c001018 ef67 GOTO 0x1ace _asm GOTO low_isr _endasm F:\MCP\projects\CAN\canTemp\Source\Main.c00101a f00d00101c 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\Main.c#pragma code F:\MCP\projects\CAN\canTemp\Source\Main.c/********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Functions for reading and writing to EEPROM. F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************* F:\MCP\projects\CAN\Include\EEAccess.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/EEAccess.c $ F:\MCP\projects\CAN\Include\EEAccess.c* Last changed: $LastChangedDate: 2006-11-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\Include\EEAccess.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\EEAccess.c* Revision: $Revision: 139 $ F:\MCP\projects\CAN\Include\EEAccess.c********************************************************************/ F:\MCP\projects\CAN\Include\EEAccess.c#include <p18cxxx.h> F:\MCP\projects\CAN\Include\EEAccess.c#include <EEaccess.h> F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EERead F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to read from. F:\MCP\projects\CAN\Include\EEAccess.c* Output: Byte read. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c001c46 cfd9 MOVFF 0xfd9,0xfe6 BYTE EERead(WORD addr) F:\MCP\projects\CAN\Include\EEAccess.c001c48 ffe6001c4a cfe1 MOVFF 0xfe1,0xfd9001c4c ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001c4e 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001c50 cfdb MOVFF 0xfdb,0x14001c52 f014001c54 0efe MOVLW 0xfe001c56 cfdb MOVFF 0xfdb,0x15001c58 f015001c5a c015 MOVFF 0x15,0x14001c5c f014001c5e 6a15 CLRF 0x15,0x0001c60 5014 MOVF 0x14,0x0,0x0001c62 6eaa MOVWF 0xaa,0x0001c64 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001c66 6ee7 MOVWF 0xe7,0x0001c68 0efd MOVLW 0xfd001c6a cfdb MOVFF 0xfdb,0x14001c6c f014001c6e 0efe MOVLW 0xfe001c70 cfdb MOVFF 0xfdb,0x15001c72 f015001c74 50e7 MOVF 0xe7,0x0,0x0001c76 1614 ANDWF 0x14,0x1,0x0001c78 6a15 CLRF 0x15,0x0001c7a 5014 MOVF 0x14,0x0,0x0001c7c 6ea9 MOVWF 0xa9,0x0001c7e 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001c80 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001c82 80a6 BSF 0xa6,0x0,0x0 EECON1bits.RD=1; F:\MCP\projects\CAN\Include\EEAccess.c001c84 50a8 MOVF 0xa8,0x0,0x0 return EEDATA; F:\MCP\projects\CAN\Include\EEAccess.c001c86 d000 BRA 0x1c88001c88 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001c8a cfe7 MOVFF 0xfe7,0xfd9001c8c ffd9001c8e 0012 RETURN 0x0F:\MCP\projects\CAN\Include\EEAccess.cF:\MCP\projects\CAN\Include\EEAccess.c/* F:\MCP\projects\CAN\Include\EEAccess.c* Function: EEWrite F:\MCP\projects\CAN\Include\EEAccess.c* F:\MCP\projects\CAN\Include\EEAccess.c* Input: WORD address to write to and BYTE data to write. F:\MCP\projects\CAN\Include\EEAccess.c* Output: none. F:\MCP\projects\CAN\Include\EEAccess.c* Pre-conditions: none F:\MCP\projects\CAN\Include\EEAccess.c* Affects: none. F:\MCP\projects\CAN\Include\EEAccess.c* Depends: none. F:\MCP\projects\CAN\Include\EEAccess.c*/ F:\MCP\projects\CAN\Include\EEAccess.c001c90 cfd9 MOVFF 0xfd9,0xfe6 void EEWrite(WORD addr,BYTE data) F:\MCP\projects\CAN\Include\EEAccess.c001c92 ffe6001c94 cfe1 MOVFF 0xfe1,0xfd9001c96 ffd9{ F:\MCP\projects\CAN\Include\EEAccess.c001c98 98a1 BCF 0xa1,0x4,0x0 PIR2bits.EEIF=0; F:\MCP\projects\CAN\Include\EEAccess.c001c9a 0efd MOVLW 0xfd EEADRH=(BYTE)(addr>>8); F:\MCP\projects\CAN\Include\EEAccess.c001c9c cfdb MOVFF 0xfdb,0x14001c9e f014001ca0 0efe MOVLW 0xfe001ca2 cfdb MOVFF 0xfdb,0x15001ca4 f015001ca6 c015 MOVFF 0x15,0x14001ca8 f014001caa 6a15 CLRF 0x15,0x0001cac 5014 MOVF 0x14,0x0,0x0001cae 6eaa MOVWF 0xaa,0x0001cb0 0eff MOVLW 0xff EEADR=(BYTE)(addr & 0xFF); F:\MCP\projects\CAN\Include\EEAccess.c001cb2 6ee7 MOVWF 0xe7,0x0001cb4 0efd MOVLW 0xfd001cb6 cfdb MOVFF 0xfdb,0x14001cb8 f014001cba 0efe MOVLW 0xfe001cbc cfdb MOVFF 0xfdb,0x15001cbe f015001cc0 50e7 MOVF 0xe7,0x0,0x0001cc2 1614 ANDWF 0x14,0x1,0x0001cc4 6a15 CLRF 0x15,0x0001cc6 5014 MOVF 0x14,0x0,0x0001cc8 6ea9 MOVWF 0xa9,0x0001cca 0efc MOVLW 0xfc EEDATA=data; F:\MCP\projects\CAN\Include\EEAccess.c001ccc 50db MOVF 0xdb,0x0,0x0001cce 6ea8 MOVWF 0xa8,0x0001cd0 9ea6 BCF 0xa6,0x7,0x0 EECON1bits.EEPGD=0; F:\MCP\projects\CAN\Include\EEAccess.c001cd2 9ca6 BCF 0xa6,0x6,0x0 EECON1bits.CFGS=0; F:\MCP\projects\CAN\Include\EEAccess.c001cd4 84a6 BSF 0xa6,0x2,0x0 EECON1bits.WREN=1; F:\MCP\projects\CAN\Include\EEAccess.c001cd6 9ef2 BCF 0xf2,0x7,0x0 INTCONbits.GIE=0; F:\MCP\projects\CAN\Include\EEAccess.c001cd8 0e55 MOVLW 0x55 EECON2=0x55; F:\MCP\projects\CAN\Include\EEAccess.c001cda 6ea7 MOVWF 0xa7,0x0001cdc 0eaa MOVLW 0xaa EECON2=0xAA; F:\MCP\projects\CAN\Include\EEAccess.c001cde 6ea7 MOVWF 0xa7,0x0001ce0 82a6 BSF 0xa6,0x1,0x0 EECON1bits.WR=1; F:\MCP\projects\CAN\Include\EEAccess.c001ce2 8ef2 BSF 0xf2,0x7,0x0 INTCONbits.GIE=1; F:\MCP\projects\CAN\Include\EEAccess.c001ce4 a8a1 BTFSS 0xa1,0x4,0x0 while(!PIR2bits.EEIF); F:\MCP\projects\CAN\Include\EEAccess.c001ce6 d7fe BRA 0x1ce4001ce8 94a6 BCF 0xa6,0x2,0x0 EECON1bits.WREN=0; F:\MCP\projects\CAN\Include\EEAccess.c001cea 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\Include\EEAccess.c001cec cfe7 MOVFF 0xfe7,0xfd9001cee ffd9001cf0 0012 RETURN 0x0/********************************************************************* F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Functions for reading ADC F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c********************************************************************* F:\MCP\projects\CAN\Include\adc.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/Include/adc.c $ F:\MCP\projects\CAN\Include\adc.c* Last changed: $LastChangedDate: 2006-11-20 21:31:03 +0100 (må, 20 nov 2006) $ F:\MCP\projects\CAN\Include\adc.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\Include\adc.c* Revision: $Revision: 139 $ F:\MCP\projects\CAN\Include\adc.c********************************************************************/ F:\MCP\projects\CAN\Include\adc.c#include <adc.h> F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c#ifdef USE_ADC F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cstatic unsigned long TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.cstatic unsigned int TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cBOOL TEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcInit F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: True or false to use external voltage reference or not. portCfg is portconfiguration. F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cvoid adcInit(BOOL useExtRef,BYTE portCfg) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c// Setup ADC to use low interrupt prior and external ref or not. F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cADCON1 = 0b00000000 | ((1 & useExtRef)<<4) | (0xF & portCfg); F:\MCP\projects\CAN\Include\adc.cADCON0 = 0b00000000; F:\MCP\projects\CAN\Include\adc.cADCON2 = 0b10101011; F:\MCP\projects\CAN\Include\adc.c//useExtRef F:\MCP\projects\CAN\Include\adc.cADCON0bits.ADON = 1; F:\MCP\projects\CAN\Include\adc.cPIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.cPIE1bits.ADIE = 1; F:\MCP\projects\CAN\Include\adc.cIPR1bits.ADIP = 0; // Low priority F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcISR F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: ADC interrupt rotune. Need to be called from LOW ISR. F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cvoid adcISR(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.cif (PIE1bits.ADIE && PIR1bits.ADIF) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.cPIR1bits.ADIF = 0; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cTEMP_VALUE+=((int)ADRESH)<<8 | ADRESL; F:\MCP\projects\CAN\Include\adc.cTEMP_COUNT++; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cif (TEMP_COUNT>=TEMP_SAMPLES) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.cTEMP_VALUE = TEMP_VALUE/TEMP_COUNT; F:\MCP\projects\CAN\Include\adc.cTEMP_DONE = TRUE; F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.celse F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.cDelay10TCYx(100); F:\MCP\projects\CAN\Include\adc.cADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcConvert F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: Channel to start convert. Between 0 and 15 F:\MCP\projects\CAN\Include\adc.c* Output: none. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cBOOL adcConvert(BYTE channel) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.cif (channel>15) return FALSE; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cTEMP_VALUE = 0; F:\MCP\projects\CAN\Include\adc.cTEMP_COUNT = 0; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cADCON0 = (channel << 2) | (ADCON0 & 0b11000011); F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cTEMP_DONE = FALSE; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cADCON0bits.GO = 1; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.creturn TRUE; F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcRead F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: Raw read data. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cint adcRead(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.cTEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.creturn TEMP_VALUE; F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: temperatureRead F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: XX.Y C, where tenth is XX and decimal is Y F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cvoid temperatureRead(signed char *tenth, BYTE *decimal) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.c// assuming 2.5V ref and TC47 F:\MCP\projects\CAN\Include\adc.csigned int i = 0, v11,v01,tfloat; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.ctfloat =((TEMP_VALUE * 39)>>4) - 499; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cv11 = tfloat/10; F:\MCP\projects\CAN\Include\adc.cv01 = tfloat-v11*10; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cif (v01>=0 && v01<=2) v01 = 0; F:\MCP\projects\CAN\Include\adc.celse if (v01>=3 && v01<=7) v01 = 5; F:\MCP\projects\CAN\Include\adc.celse { v01 = 0; v11++;} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.ctenth = (signed char *)v11; F:\MCP\projects\CAN\Include\adc.cdecimal = (BYTE *)v01; F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cTEMP_DONE=FALSE; F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c/* F:\MCP\projects\CAN\Include\adc.c* Function: adcDone F:\MCP\projects\CAN\Include\adc.c* F:\MCP\projects\CAN\Include\adc.c* Input: none. F:\MCP\projects\CAN\Include\adc.c* Output: If adc convertion is done or not. F:\MCP\projects\CAN\Include\adc.c* Pre-conditions: none F:\MCP\projects\CAN\Include\adc.c* Affects: none. F:\MCP\projects\CAN\Include\adc.c* Depends: none. F:\MCP\projects\CAN\Include\adc.c*/ F:\MCP\projects\CAN\Include\adc.cBOOL adcDone(void) F:\MCP\projects\CAN\Include\adc.c{ F:\MCP\projects\CAN\Include\adc.creturn TEMP_DONE; F:\MCP\projects\CAN\Include\adc.c} F:\MCP\projects\CAN\Include\adc.cF:\MCP\projects\CAN\Include\adc.c#endif F:\MCP\projects\CAN\Include\adc.c/********************************************************************* F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Functions for controlling blinds F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c********************************************************************* F:\MCP\projects\CAN\canTemp\Source\blinds.c* FileName: $HeadURL: http://svn.arune.se/svn/HomeAutomation/trunk/EmbeddedSoftware/PIC/canTemp/Source/blinds.c $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* Last changed: $LastChangedDate: 2007-02-03 16:58:13 +0100 (lö, 03 feb 2007) $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* By: $LastChangedBy: johboh $ F:\MCP\projects\CAN\canTemp\Source\blinds.c* Revision: $Revision: 282 $ F:\MCP\projects\CAN\canTemp\Source\blinds.c********************************************************************/ F:\MCP\projects\CAN\canTemp\Source\blinds.c#include <blinds.h> F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c#ifdef USE_BLINDS F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.cstatic unsigned int timerVal = 50536; F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Function: blindsInit F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.cvoid blindsInit() F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c// setup timer one on 0.5ms. F:\MCP\projects\CAN\canTemp\Source\blinds.c// 16 bit write, system clock, prescale 2 bit, oscillator off, F:\MCP\projects\CAN\canTemp\Source\blinds.c001b0c 0ec1 MOVLW 0xc1 T1CON = 0b11000001; F:\MCP\projects\CAN\canTemp\Source\blinds.c001b0e 6ecd MOVWF 0xcd,0x0001b10 0e00 MOVLW 0x0 TMR1H=((timerVal&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c001b12 0100 MOVLB 0x0001b14 1596 ANDWF 0x96,0x0,0x1001b16 6e14 MOVWF 0x14,0x0001b18 0eff MOVLW 0xff001b1a 1597 ANDWF 0x97,0x0,0x1001b1c 6e15 MOVWF 0x15,0x0001b1e c015 MOVFF 0x15,0x14001b20 f014001b22 6a15 CLRF 0x15,0x0001b24 5014 MOVF 0x14,0x0,0x0001b26 6ecf MOVWF 0xcf,0x0001b28 5196 MOVF 0x96,0x0,0x1 TMR1L=(timerVal&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c001b2a 6ece MOVWF 0xce,0x0001b2c 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c001b2e 809d BSF 0x9d,0x0,0x0 PIE1bits.TMR1IE = 1; F:\MCP\projects\CAN\canTemp\Source\blinds.c001b30 809f BSF 0x9f,0x0,0x0 IPR1bits.TMR1IP = 1; // high prior? F:\MCP\projects\CAN\canTemp\Source\blinds.c001b32 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Function: blindsTurn F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: Angle to turn to. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.c001b34 cfd9 MOVFF 0xfd9,0xfe6 void blindsTurn(signed char angle) F:\MCP\projects\CAN\canTemp\Source\blinds.c001b36 ffe6001b38 cfe1 MOVFF 0xfe1,0xfd9001b3a ffd9{ F:\MCP\projects\CAN\canTemp\Source\blinds.c// 65536-TIME/0,0000001 F:\MCP\projects\CAN\canTemp\Source\blinds.c// -90 0.5 ms = 60536 (5000) F:\MCP\projects\CAN\canTemp\Source\blinds.c// 0 1.5 ms = 50536 (15000) F:\MCP\projects\CAN\canTemp\Source\blinds.c// 90 2.5 ms = 40536 (25000) F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c001b3c 0efe MOVLW 0xfe if (angle<-90) timerVal=60536; F:\MCP\projects\CAN\canTemp\Source\blinds.c001b3e cfdb MOVFF 0xfdb,0x14001b40 f014001b42 0ea6 MOVLW 0xa6001b44 6ee7 MOVWF 0xe7,0x0001b46 1814 XORWF 0x14,0x0,0x0001b48 aee8 BTFSS 0xe8,0x7,0x0001b4a d002 BRA 0x1b50001b4c 34e7 RLCF 0xe7,0x0,0x0001b4e d002 BRA 0x1b54001b50 50e7 MOVF 0xe7,0x0,0x0001b52 5c14 SUBWF 0x14,0x0,0x0001b54 e206 BC 0x1b62001b56 0100 MOVLB 0x0001b58 0e78 MOVLW 0x78001b5a 6f96 MOVWF 0x96,0x1001b5c 0eec MOVLW 0xec001b5e 6f97 MOVWF 0x97,0x1001b60 d057 BRA 0x1c10 else if (angle>90) timerVal=40536; F:\MCP\projects\CAN\canTemp\Source\blinds.c001b62 0efe MOVLW 0xfe001b64 cfdb MOVFF 0xfdb,0x14001b66 f014001b68 0e5a MOVLW 0x5a001b6a 6ee7 MOVWF 0xe7,0x0001b6c 1814 XORWF 0x14,0x0,0x0001b6e aee8 BTFSS 0xe8,0x7,0x0001b70 d002 BRA 0x1b76001b72 3414 RLCF 0x14,0x0,0x0001b74 d003 BRA 0x1b7c001b76 50e7 MOVF 0xe7,0x0,0x0001b78 80d8 BSF 0xd8,0x0,0x0001b7a 5414 SUBFWB 0x14,0x0,0x0001b7c e206 BC 0x1b8a001b7e 0100 MOVLB 0x0001b80 0e58 MOVLW 0x58001b82 6f96 MOVWF 0x96,0x1001b84 0e9e MOVLW 0x9e001b86 6f97 MOVWF 0x97,0x1001b88 d043 BRA 0x1c10 else F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001b8a 0e78 MOVLW 0x78 timerVal=60536-(unsigned int)((90+(signed int)angle)*111.111); F:\MCP\projects\CAN\canTemp\Source\blinds.c001b8c 6e17 MOVWF 0x17,0x0001b8e 0eec MOVLW 0xec001b90 6e18 MOVWF 0x18,0x0001b92 6a19 CLRF 0x19,0x0001b94 0efe MOVLW 0xfe001b96 cfdb MOVFF 0xfdb,0x21001b98 f021001b9a 6a22 CLRF 0x22,0x0001b9c be21 BTFSC 0x21,0x7,0x0001b9e 6822 SETF 0x22,0x0001ba0 0e5a MOVLW 0x5a001ba2 2621 ADDWF 0x21,0x1,0x0001ba4 0e00 MOVLW 0x0001ba6 2222 ADDWFC 0x22,0x1,0x0001ba8 c021 MOVFF 0x21,0x6001baa f006001bac c022 MOVFF 0x22,0x7001bae f007001bb0 ec73 CALL 0x16e6,0x0001bb2 f00b001bb4 c005 MOVFF 0x5,0x1d001bb6 f01d001bb8 c006 MOVFF 0x6,0x1e001bba f01e001bbc c007 MOVFF 0x7,0x1f001bbe f01f001bc0 c008 MOVFF 0x8,0x20001bc2 f020001bc4 0ed5 MOVLW 0xd5001bc6 6e0a MOVWF 0xa,0x0001bc8 0e38 MOVLW 0x38001bca 6e0b MOVWF 0xb,0x0001bcc 0ede MOVLW 0xde001bce 6e0c MOVWF 0xc,0x0001bd0 0e42 MOVLW 0x42001bd2 6e0d MOVWF 0xd,0x0001bd4 c01d MOVFF 0x1d,0x5001bd6 f005001bd8 c01e MOVFF 0x1e,0x6001bda f006001bdc c01f MOVFF 0x1f,0x7001bde f007001be0 c020 MOVFF 0x20,0x8001be2 f008001be4 ec86 CALL 0x170c,0x0001be6 f00b001be8 ecf3 CALL 0x17e6,0x0001bea f00b001bec c006 MOVFF 0x6,0x1a001bee f01a001bf0 c007 MOVFF 0x7,0x1b001bf2 f01b001bf4 6a1c CLRF 0x1c,0x0001bf6 501a MOVF 0x1a,0x0,0x0001bf8 5c17 SUBWF 0x17,0x0,0x0001bfa 6e14 MOVWF 0x14,0x0001bfc 501b MOVF 0x1b,0x0,0x0001bfe 5818 SUBWFB 0x18,0x0,0x0001c00 6e15 MOVWF 0x15,0x0001c02 501c MOVF 0x1c,0x0,0x0001c04 5819 SUBWFB 0x19,0x0,0x0001c06 6e16 MOVWF 0x16,0x0001c08 c014 MOVFF 0x14,0x96001c0a f096001c0c c015 MOVFF 0x15,0x97001c0e f097} F:\MCP\projects\CAN\canTemp\Source\blinds.c001c10 52e5 MOVF 0xe5,0x1,0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.c001c12 cfe7 MOVFF 0xfe7,0xfd9001c14 ffd9001c16 0012 RETURN 0x0F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c/* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Function: blindsISR F:\MCP\projects\CAN\canTemp\Source\blinds.c* F:\MCP\projects\CAN\canTemp\Source\blinds.c* Input: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Output: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Pre-conditions: none F:\MCP\projects\CAN\canTemp\Source\blinds.c* Affects: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c* Depends: none. F:\MCP\projects\CAN\canTemp\Source\blinds.c*/ F:\MCP\projects\CAN\canTemp\Source\blinds.cvoid blindsISR(void) F:\MCP\projects\CAN\canTemp\Source\blinds.c{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001c18 509e MOVF 0x9e,0x0,0x0 if (PIR1bits.TMR1IF == 1 && PIE1bits.TMR1IE == 1) F:\MCP\projects\CAN\canTemp\Source\blinds.c001c1a 0b01 ANDLW 0x1001c1c e013 BZ 0x1c44001c1e 509d MOVF 0x9d,0x0,0x0001c20 0b01 ANDLW 0x1001c22 e010 BZ 0x1c44{ F:\MCP\projects\CAN\canTemp\Source\blinds.c001c24 0e00 MOVLW 0x0 TMR1H=((timerVal&0xFF00)>>8); F:\MCP\projects\CAN\canTemp\Source\blinds.c001c26 0100 MOVLB 0x0001c28 1596 ANDWF 0x96,0x0,0x1001c2a 6e14 MOVWF 0x14,0x0001c2c 0eff MOVLW 0xff001c2e 1597 ANDWF 0x97,0x0,0x1001c30 6e15 MOVWF 0x15,0x0001c32 c015 MOVFF 0x15,0x14001c34 f014001c36 6a15 CLRF 0x15,0x0001c38 5014 MOVF 0x14,0x0,0x0001c3a 6ecf MOVWF 0xcf,0x0001c3c 5196 MOVF 0x96,0x0,0x1 TMR1L=(timerVal&0xFF); F:\MCP\projects\CAN\canTemp\Source\blinds.c001c3e 6ece MOVWF 0xce,0x0F:\MCP\projects\CAN\canTemp\Source\blinds.c001c40 7882 BTG 0x82,0x4,0x0 BLINDS0_IO=~BLINDS0_IO; F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c001c42 909e BCF 0x9e,0x0,0x0 PIR1bits.TMR1IF = 0; F:\MCP\projects\CAN\canTemp\Source\blinds.c} F:\MCP\projects\CAN\canTemp\Source\blinds.c001c44 0012 RETURN 0x0 } F:\MCP\projects\CAN\canTemp\Source\blinds.cF:\MCP\projects\CAN\canTemp\Source\blinds.c#endif F:\MCP\projects\CAN\canTemp\Source\blinds.c