Compare commits
	
		
			44 Commits
		
	
	
		
			57b19e59d9
			...
			Race
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| c7c67d2931 | |||
| 1fa34dea8a | |||
|  | 4d10355dd4 | ||
| d667b7d01e | |||
| c5403fe7f9 | |||
| b7aad73c25 | |||
| 8f1b0c2c13 | |||
| 5c555f6ee1 | |||
| 8d389cdea2 | |||
| cc6a8fc39a | |||
| 5da1775718 | |||
| 84630eb6fd | |||
| 7750978f18 | |||
| 44d4d1210c | |||
| 0329c762a0 | |||
| abbeda177d | |||
| ad9e73f2eb | |||
| 47bc51ac68 | |||
| 628bbd7825 | |||
| 8cec88d658 | |||
| e0b94c5250 | |||
| 32f1bd73b4 | |||
| 6edca8bb82 | |||
| 38b5f2d4e1 | |||
| 319ae576ad | |||
| 4e492fb10b | |||
| 0f7f078440 | |||
| 447c9d8801 | |||
| 7bdc3d10c6 | |||
| 79334b5c89 | |||
| 682dca2bb1 | |||
| f45fd4ae7e | |||
| 473d71ff6b | |||
| 3f1672996d | |||
| 3cd456a154 | |||
| a3d6c9ae6c | |||
| c846a12edb | |||
| 24f63b261b | |||
| 11c95d9fd6 | |||
| 242cf4d0da | |||
| 448b5e66ad | |||
| 4987fbabd0 | |||
|  | 70127bbb8d | ||
| 4c1ed6ba61 | 
| @@ -29,7 +29,32 @@ typedef union { | ||||
|     uint16_t full; | ||||
| } BYTES_2; | ||||
|  | ||||
| void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
| typedef union{ | ||||
|     uint16_t data; | ||||
|     struct{ | ||||
|         uint8_t data[2]; | ||||
|     }byteSplit;   | ||||
|     struct{ | ||||
|         unsigned b0:1; | ||||
|         unsigned b1:1; | ||||
|         unsigned b2:1; | ||||
|         unsigned b3:1; | ||||
|         unsigned b4:1; | ||||
|         unsigned b5:1; | ||||
|         unsigned b6:1; | ||||
|         unsigned b7:1; | ||||
|         unsigned b8:1; | ||||
|         unsigned b9:1; | ||||
|         unsigned b10:1; | ||||
|         unsigned b11:1; | ||||
|         unsigned b12:1; | ||||
|         unsigned b13:1; | ||||
|         unsigned b14:1; | ||||
|         unsigned b15:1; | ||||
|     }bitSplit; | ||||
| } BITFIELD16; | ||||
|  | ||||
| void CM_processIncome(uint8_t idSender, uint8_t idMsg, bool rtr, uint32_t data){ | ||||
|     BYTES_4 incomeData; | ||||
|     incomeData.full = data; | ||||
|     BYTES_4 revertData; | ||||
| @@ -37,6 +62,8 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|     revertData.separate.byte1 = incomeData.separate.byte2; | ||||
|     revertData.separate.byte2 = incomeData.separate.byte1; | ||||
|     revertData.separate.byte3 = incomeData.separate.byte0; | ||||
|     BITFIELD16 bField; | ||||
|     bField.data = (uint16_t) data; | ||||
|      | ||||
|     switch(idSender){ | ||||
|          | ||||
| @@ -59,21 +86,21 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|              | ||||
|             if(idMsg == 0x1) { // CONTROL_SPEED_FACTOR | ||||
|                 //  valHH   valH    valL    valLL | ||||
|                 KART_CST.CONTROL_SPEED_FACTOR = data; | ||||
|                 KART_CST.CONTROL_SPEED_FACTOR = revertData.full; | ||||
|                 MEM_write_4_byte(MEMADD_CONTROL_SPEED_FACTOR, KART_CST.CONTROL_SPEED_FACTOR); | ||||
|                  | ||||
|             } | ||||
|              | ||||
|             if(idMsg == 0x2) { // CONTROL_POWER_FACTOR | ||||
|                 //  valHH   valH    valL    valLL | ||||
|                 KART_CST.CONTROL_POWER_FACTOR = data; | ||||
|                 KART_CST.CONTROL_POWER_FACTOR = revertData.full; | ||||
|                 MEM_write_4_byte(MEMADD_CONTROL_POWER_FACTOR, KART_CST.CONTROL_POWER_FACTOR); | ||||
|                  | ||||
|                 CAN_Send(0, 5, KART_CST.CONTROL_POWER_FACTOR);  | ||||
|             } | ||||
|              | ||||
|             if(idMsg == 0x3) { // CONTROL_STEERING_FACTOR | ||||
|                 //  valHH   valH    valL    valLL | ||||
|                 KART_CST.CONTROL_STEERING_FACTOR = data; | ||||
|                 KART_CST.CONTROL_STEERING_FACTOR = revertData.full; | ||||
|                 MEM_write_4_byte(MEMADD_CONTROL_STEERING_FACTOR, KART_CST.CONTROL_STEERING_FACTOR); | ||||
|                  | ||||
|             } | ||||
| @@ -97,7 +124,7 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|                 // TODO set alive times | ||||
|                 // start alives | ||||
|                 CM_DISPLAY_SETUP(NULL); | ||||
|                 CM_STEERING_SETUP(NULL); | ||||
|                 CM_STEERING_SETUP(&ALWAYS0); | ||||
|                  | ||||
|             } | ||||
|              | ||||
| @@ -129,7 +156,7 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|                  | ||||
|                 ALIVE_setAliveTime(&drive()->myChecker, KART_CST.DRIVE_ALIVE_TIME); | ||||
|                 ALIVE_emitStart(&drive()->myChecker, 0, 0); | ||||
|                 CM_DRIVE_SETUP(NULL); | ||||
|                 CM_DRIVE_SETUP(&ALWAYSFALSE); | ||||
|                  | ||||
|             } | ||||
|              | ||||
| @@ -150,6 +177,14 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|                  | ||||
|             } | ||||
|              | ||||
|             if(idMsg == 0x9) { // CONTROL_PARAM_MAX_CHANGES | ||||
|                 //  maxChangeSteering   maxChangeDrive  -   - | ||||
|                 KART_CST.CONTROL_PARAM_MAX_CHANGE_STEERING = incomeData.separate.byte0; | ||||
|                 KART_CST.CONTROL_PARAM_MAX_CHANGE_DRIVE = incomeData.separate.byte1; | ||||
|                 MEM_write_1_byte(MEMADD_CONTROL_PARAM_MAX_CHANGE_STEERING, KART_CST.CONTROL_PARAM_MAX_CHANGE_STEERING); | ||||
|                 MEM_write_1_byte(MEMADD_CONTROL_PARAM_MAX_CHANGE_DRIVE, KART_CST.CONTROL_PARAM_MAX_CHANGE_DRIVE); | ||||
|             } | ||||
|  | ||||
|             break; | ||||
|              | ||||
|              | ||||
| @@ -161,6 +196,9 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|                 //  posX    posY    button  - | ||||
|                 calcTorque(incomeData.separate.byte1); | ||||
|                 calcPosition(incomeData.separate.byte0); | ||||
|                 eKart.button = (bool) incomeData.separate.byte2; | ||||
|                 STEERING_emitPollDir(steering()); | ||||
|                  | ||||
|                  | ||||
|             } | ||||
|              | ||||
| @@ -188,7 +226,12 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|             if(idMsg == 0xF) { // DISPLAY_ALIVE | ||||
|                 //  powerMode   -   -   - | ||||
|                 // TODO display say ALIVE | ||||
|                  | ||||
|                 eKart.powerMode = incomeData.separate.byte0; | ||||
|                 if (eKart.powerMode == 0) { | ||||
|                     CM_HEADLIGHTS(&ALWAYSFALSE); | ||||
|                 } else { | ||||
|                     CM_HEADLIGHTS(&ALWAYSTRUE); | ||||
|                 } | ||||
|             } | ||||
|             break; | ||||
|              | ||||
| @@ -225,6 +268,7 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|             if(idMsg == 0x1) { // STEERING_GET_CENTER | ||||
|                 //  valHH   valH    valL    valLL | ||||
|                 eKart.center = revertData.full; | ||||
|                 ALIVE_emitReady(&steering()->myChecker, 0, 0); | ||||
|             } | ||||
|              | ||||
|             if(idMsg == 0x2) { // STEERING_GET_POSITION | ||||
| @@ -232,9 +276,26 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|                  | ||||
|             } | ||||
|              | ||||
|             if(idMsg == 0xE) { // DRIVE_BRAKE | ||||
|                 //  status  -   -   - | ||||
|                 eKart.brake = incomeData.separate.byte0; | ||||
|             } | ||||
|              | ||||
|             if(idMsg == 0xF) { // STEERING_ALIVE | ||||
|                 //  statusH statusL -   - | ||||
|                 // TODO steering say ALIVE with his status | ||||
|                 ALIVE_ISALIVE(&steering()->myChecker); | ||||
|                 if(steering()->myChecker.state == STAL_DEAD) { | ||||
|                     KART_CST.STEERING_ALIVE_TIME = MEM_read_1_byte(MEMADD_STEERING_ALIVE_TIME); | ||||
|                     ALIVE_emitResurrect(&steering()->myChecker, 500, 0); | ||||
|                     ALIVE_emitBorn(&steering()->myChecker, 1000, 0); | ||||
|                     //ALIVE_emitReady(&steering()->myChecker, 5000, 0); | ||||
|                 } | ||||
|                 if(bField.bitSplit.b4) { | ||||
|                     if (steering()->myChecker.state == STAL_BORN){ | ||||
|                         ALIVE_emitReady(&steering()->myChecker, 1000, 0); | ||||
|                     } | ||||
|                 } | ||||
|                  | ||||
|                  | ||||
|             } | ||||
|             break; | ||||
| @@ -244,6 +305,15 @@ void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data){ | ||||
|          * SUPPLY * | ||||
|          **********/ | ||||
|         case 6: | ||||
|             if(idMsg == 0x4) { | ||||
|                 DRIVE_startBehaviour(drive()); | ||||
|                 STEERING_startBehaviour(steering()); | ||||
|  | ||||
|                 ALIVE_startBehaviourChecker(ALjoy()); | ||||
|                 ALIVE_emitBorn(ALjoy(), 100, 0); | ||||
|                 ALIVE_emitReady(ALjoy(), 200, 0); | ||||
|             } | ||||
|              | ||||
|             if(idMsg == 0xF) { // BATTERY_ALIVE | ||||
|                 //  -   -	-	- | ||||
|                 // TODO battery say ALIVE | ||||
| @@ -330,7 +400,7 @@ void CM_STEERING_SETUP(void* p) { | ||||
|     //  reset/init  homing  setCenter   aliveTime | ||||
|     // TODO not working have to fix it | ||||
|     BYTES_4 tmpData; | ||||
|     uint8_t choice = (uint8_t) p; | ||||
|     uint8_t choice = *(uint8_t*) p; | ||||
|     switch (choice) { | ||||
|         case 1: | ||||
|             tmpData.separate.byte0 = 1; | ||||
| @@ -378,3 +448,9 @@ void CM_SUPPLY_SETUP(void* p) { | ||||
|     supply.separate.byte3 = KART_CST.BATTERY_ALIVE_TIME; | ||||
|     CAN_Send(6, 0, supply.full); | ||||
| } | ||||
|  | ||||
| void CM_HEADLIGHTS(void* p) { | ||||
|     //  status  -   -   - | ||||
|     bool status = *((bool*) p); | ||||
|     CAN_send_1_byte(0, 4, status); | ||||
| } | ||||
|   | ||||
| @@ -12,19 +12,6 @@ | ||||
| #include <stdbool.h>        // usage of boolean types | ||||
| #include "../mcc_generated_files/mcc.h" | ||||
|  | ||||
| /* | ||||
| S   R   M | ||||
| 1   0   F   CONTROL_ALIVE       -               -                   -                   - | ||||
| 1	2	0	JOY_SETUP           Mode            Param1              Param2              aliveTime | ||||
| 1	3	0	DISPLAY_SETUP       reset           -                   -                   aliveTime | ||||
| 1	3	2	DISPLAY_SPEED       valH            valL                -                   - | ||||
| 1	3	3	DISPLAY_DIRECTION   direction       -                   -                   - | ||||
| 1	4	0	DRIVE_SETUP         Reset/init      speedTime           stopTime            aliveTime | ||||
| 1	4	1	DRIVE_POWER         valH            valL                -                   - | ||||
| 1	5	0	STEERING_SETUP      Reset/init      homing              setCenter           aliveTime | ||||
| 1	5	1	STEERING_SET        valHH           valH                valL                valLL | ||||
| 1	6	0	SETUP_CONTROL       batteryVoltTime batteryCurrentTime  batteryEnergyTime   aliveTime | ||||
| */ | ||||
|  | ||||
| /** | ||||
|  * Process an incoming message | ||||
| @@ -32,7 +19,7 @@ S   R   M | ||||
|  * @param idMsg is of the message | ||||
|  * @param data data of the message | ||||
|  */ | ||||
| void CM_processIncome(uint8_t idSender, uint8_t idMsg, uint32_t data); | ||||
| void CM_processIncome(uint8_t idSender, uint8_t idMsg, bool rtr, uint32_t data); | ||||
|  | ||||
| /** | ||||
|  * Send alive message from controller | ||||
| @@ -101,6 +88,12 @@ void CM_STEERING_SET(void* p); | ||||
|  */ | ||||
| void CM_SUPPLY_SETUP(void* p); | ||||
|  | ||||
| /** | ||||
|  * Send headlights on or off | ||||
|  * @param p true if on, false if off; | ||||
|  */ | ||||
| void CM_HEADLIGHTS(void* p); | ||||
|  | ||||
|  | ||||
| #endif	/* CAN_MESSAGE_H */ | ||||
|  | ||||
|   | ||||
| @@ -43,6 +43,15 @@ | ||||
| #define MEMADD_BATTERY_CURRENT_TIME         0x1B | ||||
| #define MEMADD_BATTERY_ENERGY_TIME          0x1C | ||||
| #define MEMADD_BATTERY_ALIVE_TIME           0x1D | ||||
| #define MEMADD_CONTROL_PARAM_MAX_CHANGE_STEERING 0x1E | ||||
| #define MEMADD_CONTROL_PARAM_MAX_CHANGE_DRIVE 0x1F | ||||
|  | ||||
| const bool ALWAYSTRUE = true; | ||||
| const bool ALWAYSFALSE = false; | ||||
| const uint8_t ALWAYS0 = 0; | ||||
| const uint8_t ALWAYS1 = 1; | ||||
| const uint8_t ALWAYS2 = 2; | ||||
| const uint8_t ALWAYS3 = 3; | ||||
|  | ||||
| typedef struct { | ||||
|     uint8_t     CONTROL_STEERING_MODE; | ||||
| @@ -65,6 +74,9 @@ typedef struct { | ||||
|     uint8_t     BATTERY_CURRENT_TIME; | ||||
|     uint8_t     BATTERY_ENERGY_TIME; | ||||
|     uint8_t     BATTERY_ALIVE_TIME; | ||||
|     uint8_t     CONTROL_PARAM_MAX_CHANGE_STEERING; | ||||
|     uint8_t     CONTROL_PARAM_MAX_CHANGE_DRIVE; | ||||
|  | ||||
| } KART_CST_TYPE; | ||||
| KART_CST_TYPE KART_CST; | ||||
|  | ||||
| @@ -72,10 +84,30 @@ typedef struct { | ||||
|     int16_t torque;     //  | ||||
|     uint32_t center;    //  | ||||
|     uint32_t position;  //  | ||||
|     bool button; | ||||
|     uint8_t speed;      // 100m/h | ||||
|     bool brake; | ||||
|     uint8_t powerMode; // 0: eco - 1: normal - 2: race | ||||
|     /* | ||||
|      * 0 - ECO MODE | ||||
|      * Eco mod limit to 1/2 of the maximal current.  | ||||
|      * Position is 1/2 of the maximal angle | ||||
|      *  | ||||
|      * 1 - NORMAL MODE | ||||
|      * Standard ramp for normal mode | ||||
|      * Position is limited to 3/4 of the maximal  | ||||
|      *  | ||||
|      * 2 - RACE MODE | ||||
|      *  | ||||
|      *  | ||||
|      */ | ||||
| } KART_VAR_TYPE; | ||||
| KART_VAR_TYPE eKart; | ||||
|  | ||||
| uint8_t rampTorque[101]; | ||||
| uint8_t rampPosition[101]; | ||||
|  | ||||
|  | ||||
|  | ||||
| #endif	/* CAR_H */ | ||||
|  | ||||
|   | ||||
| @@ -8,11 +8,13 @@ | ||||
| #include "drive.h" | ||||
| #include "car.h" | ||||
| #include "can_message.h" | ||||
| //#include "steering.h" | ||||
| //#include "factory/factory.h" | ||||
|  | ||||
| void DRIVE_init(DRIVE* me){ | ||||
|     me->state = STDR_INIT; | ||||
|     ALIVE_init(&me->myChecker); | ||||
|     ALIVE_onSetup(&me->myChecker, CM_DRIVE_SETUP, NULL); | ||||
|     ALIVE_init(&me->myChecker, 2); | ||||
|     ALIVE_onSetup(&me->myChecker, CM_DRIVE_SETUP, &ALWAYSTRUE); | ||||
|     ALIVE_onWait(&me->myChecker, DRIVE_emitStart, me); | ||||
|     ALIVE_onDead(&me->myChecker, DRIVE_emitStop, me); | ||||
|     ALIVE_onBorn(&me->myChecker, DRIVE_emitResurrect, me); | ||||
| @@ -22,7 +24,7 @@ void DRIVE_init(DRIVE* me){ | ||||
| } | ||||
|  | ||||
| void DRIVE_startBehaviour(DRIVE* me){ | ||||
|     POST(me, &DRIVE_processEvent, evDRinit, 0, 0); | ||||
|     POST(me, &DRIVE_processEvent, evDRinit, 3000, 0); | ||||
| } | ||||
|  | ||||
| bool DRIVE_processEvent(Event* ev) { | ||||
| @@ -31,6 +33,8 @@ bool DRIVE_processEvent(Event* ev) { | ||||
|     DRIVE_STATES oldState = me->state; | ||||
|     evIDT evid = Event_getId(ev); | ||||
|     uint64_t data = Event_getData(ev); | ||||
| //    STEERING_STATES steeringState = steering()->state; | ||||
|  | ||||
|      | ||||
|     switch (me->state) {        // onState | ||||
|         case STDR_INIT: | ||||
| @@ -55,14 +59,16 @@ bool DRIVE_processEvent(Event* ev) { | ||||
|             } | ||||
|              | ||||
|             if (ev->id == evDRpollTorque) { | ||||
|                 //if(steeringState == STST_RUN) { | ||||
|                     CM_DRIVE_POWER(&eKart.torque); | ||||
|                     if (KART_CST.DRIVE_STOP_TIME == 0) KART_CST.DRIVE_STOP_TIME = 1; | ||||
|                     DRIVE_emitPollTorque(me, KART_CST.DRIVE_STOP_TIME*5, 0); | ||||
|                 //} | ||||
|             } | ||||
|              | ||||
|             if (ev->id == evDRpollSpeed) { | ||||
|                 CM_DISPLAY_SPEED(&eKart.speed); | ||||
|             } | ||||
|              | ||||
|             DRIVE_emitPollTorque(me, KART_CST.DRIVE_STOP_TIME*9, 0); | ||||
|             break; | ||||
|          | ||||
|         case STDR_DEAD: | ||||
| @@ -98,6 +104,8 @@ bool DRIVE_processEvent(Event* ev) { | ||||
|                 break; | ||||
|              | ||||
|             case STDR_RUN: | ||||
|                 if (KART_CST.DRIVE_STOP_TIME == 0) KART_CST.DRIVE_STOP_TIME = 1; | ||||
|                 DRIVE_emitPollTorque(me, KART_CST.DRIVE_STOP_TIME*5, 0); | ||||
|                 if (me->run.f != NULL) { | ||||
|                     me->run.f(me->run.p); | ||||
|                 } | ||||
|   | ||||
| @@ -11,7 +11,7 @@ | ||||
| #include "../middleware/alive.h" | ||||
|  | ||||
| typedef enum { | ||||
|     STDR_INIT, | ||||
|     STDR_INIT = 100, | ||||
|     STDR_WAIT, | ||||
|     STDR_RUN, | ||||
|     STDR_DEAD | ||||
|   | ||||
| @@ -7,6 +7,7 @@ | ||||
|  | ||||
| #include "eeprom.h" | ||||
| #include "../app/car.h" | ||||
| #include "../middleware/can_interface.h" | ||||
|  | ||||
| typedef union { | ||||
|     struct { | ||||
| @@ -21,18 +22,18 @@ typedef union { | ||||
|  | ||||
| void MEM_init(){ | ||||
|     uint8_t check = MEM_read_1_byte(0x0); | ||||
|     if(check != 0x2A){ | ||||
|     if(check != 0x42){ | ||||
|         KART_CST.CONTROL_STEERING_MODE   =   0; | ||||
|         KART_CST.CONTROL_ALIVE_TIME      =   50; | ||||
|         KART_CST.CONTROL_SPEED_FACTOR    =   111111; | ||||
|         KART_CST.CONTROL_POWER_FACTOR    =   10000; | ||||
|         KART_CST.CONTROL_STEERING_FACTOR =   400000000; | ||||
|         KART_CST.CONTROL_ALIVE_TIME      =   10; | ||||
|         KART_CST.CONTROL_SPEED_FACTOR    =   111111;    //     111'111 | ||||
|         KART_CST.CONTROL_POWER_FACTOR    =   10000;     //      10'000 | ||||
|         KART_CST.CONTROL_STEERING_FACTOR =   5600240;   //   5'600'024 | ||||
|         KART_CST.CONTROL_MAX_SPEED_FW    =   50; | ||||
|         KART_CST.CONTROL_MAX_SPEED_BW    =   25; | ||||
|          | ||||
|         KART_CST.JOYSTICK_MODE           =   0; | ||||
|         KART_CST.JOYSTICK_PARAM1         =   5; | ||||
|         KART_CST.JOYSTICK_PARAM2         =   1; | ||||
|         KART_CST.JOYSTICK_MODE           =   0; // mode 0 is time based, mode 1 is change based | ||||
|         KART_CST.JOYSTICK_PARAM1         =   5; // for mode 0, values are send every param1*10ms | ||||
|         KART_CST.JOYSTICK_PARAM2         =   1; // for mode 0, values need to change param2 at least for sending | ||||
|         KART_CST.JOYSTICK_ALIVE_TIME     =   25; | ||||
|          | ||||
|         KART_CST.DISPLAY_ALIVE_TIME      =  100; | ||||
| @@ -48,6 +49,9 @@ void MEM_init(){ | ||||
|         KART_CST.BATTERY_ENERGY_TIME     =   50; | ||||
|         KART_CST.BATTERY_ALIVE_TIME      =   50; | ||||
|          | ||||
|         KART_CST.CONTROL_PARAM_MAX_CHANGE_STEERING = 10; | ||||
|         KART_CST.CONTROL_PARAM_MAX_CHANGE_DRIVE = 10; | ||||
|          | ||||
|         MEM_write_1_byte(MEMADD_CONTROL_STEERING_MODE, KART_CST.CONTROL_STEERING_MODE); | ||||
|         MEM_write_1_byte(MEMADD_CONTROL_ALIVE_TIME, KART_CST.CONTROL_ALIVE_TIME); | ||||
|         MEM_write_4_byte(MEMADD_CONTROL_SPEED_FACTOR, KART_CST.CONTROL_SPEED_FACTOR); | ||||
| @@ -74,13 +78,16 @@ void MEM_init(){ | ||||
|         MEM_write_1_byte(MEMADD_BATTERY_ENERGY_TIME, KART_CST.BATTERY_ENERGY_TIME); | ||||
|         MEM_write_1_byte(MEMADD_BATTERY_ALIVE_TIME, KART_CST.BATTERY_ALIVE_TIME); | ||||
|          | ||||
|         MEM_write_1_byte(0x0, 0x2A); | ||||
|         MEM_write_1_byte(MEMADD_CONTROL_PARAM_MAX_CHANGE_DRIVE, KART_CST.CONTROL_PARAM_MAX_CHANGE_DRIVE); | ||||
|         MEM_write_1_byte(MEMADD_CONTROL_PARAM_MAX_CHANGE_STEERING, KART_CST.CONTROL_PARAM_MAX_CHANGE_STEERING); | ||||
|          | ||||
|         MEM_write_1_byte(0x0, 0x42); | ||||
|     } else { | ||||
|         KART_CST.CONTROL_STEERING_MODE = MEM_read_1_byte(MEMADD_CONTROL_STEERING_MODE); | ||||
|         KART_CST.CONTROL_ALIVE_TIME = MEM_read_1_byte(MEMADD_CONTROL_ALIVE_TIME); | ||||
|         KART_CST.CONTROL_SPEED_FACTOR = MEM_read_1_byte(MEMADD_CONTROL_SPEED_FACTOR); | ||||
|         KART_CST.CONTROL_POWER_FACTOR = MEM_read_1_byte(MEMADD_CONTROL_POWER_FACTOR); | ||||
|         KART_CST.CONTROL_STEERING_FACTOR = MEM_read_1_byte(MEMADD_CONTROL_STEERING_FACTOR); | ||||
|         KART_CST.CONTROL_SPEED_FACTOR = MEM_read_4_byte(MEMADD_CONTROL_SPEED_FACTOR); | ||||
|         KART_CST.CONTROL_POWER_FACTOR = MEM_read_4_byte(MEMADD_CONTROL_POWER_FACTOR); | ||||
|         KART_CST.CONTROL_STEERING_FACTOR = MEM_read_4_byte(MEMADD_CONTROL_STEERING_FACTOR); | ||||
|         KART_CST.CONTROL_MAX_SPEED_FW = MEM_read_1_byte(MEMADD_CONTROL_MAX_SPEED_FW); | ||||
|         KART_CST.CONTROL_MAX_SPEED_BW = MEM_read_1_byte(MEMADD_CONTROL_MAX_SPEED_BW); | ||||
|          | ||||
| @@ -102,6 +109,9 @@ void MEM_init(){ | ||||
|         KART_CST.BATTERY_ENERGY_TIME = MEM_read_1_byte(MEMADD_BATTERY_ENERGY_TIME); | ||||
|         KART_CST.BATTERY_ALIVE_TIME = MEM_read_1_byte(MEMADD_BATTERY_ALIVE_TIME); | ||||
|          | ||||
|         KART_CST.CONTROL_PARAM_MAX_CHANGE_DRIVE = MEM_read_1_byte(MEMADD_CONTROL_PARAM_MAX_CHANGE_DRIVE); | ||||
|         KART_CST.CONTROL_PARAM_MAX_CHANGE_STEERING = MEM_read_1_byte(MEMADD_CONTROL_PARAM_MAX_CHANGE_STEERING); | ||||
|          | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -5,24 +5,6 @@ | ||||
| static Factory theFactory; | ||||
|  | ||||
| //all the getters | ||||
| LED* l1() { | ||||
|     return &theFactory.l1_; | ||||
| } | ||||
| LED* l2()  { | ||||
|     return &theFactory.l2_; | ||||
| } | ||||
| LED* l3()  { | ||||
|     return &theFactory.l3_; | ||||
| } | ||||
| LED* l4()  { | ||||
|     return &theFactory.l4_; | ||||
| } | ||||
| LED* l5()  { | ||||
|     return &theFactory.l5_; | ||||
| } | ||||
| LED* l6()  { | ||||
|     return &theFactory.l6_; | ||||
| } | ||||
| LED* l7()  { | ||||
|     return &theFactory.l7_; | ||||
| } | ||||
| @@ -30,10 +12,6 @@ LED* l8()  { | ||||
|     return &theFactory.l8_; | ||||
| } | ||||
|  | ||||
| BLINKER* b1() { | ||||
|     return &theFactory.b1_; | ||||
| } | ||||
|  | ||||
| ALIVE* ALcontroller(){ | ||||
|     return &theFactory.ALcontroller_; | ||||
| } | ||||
| @@ -46,40 +24,30 @@ DRIVE* drive(){ | ||||
|     return &theFactory.drive_; | ||||
| } | ||||
|  | ||||
| STEERING* steering(){ | ||||
|     return &theFactory.steering_; | ||||
| } | ||||
|  | ||||
|  | ||||
| //initialize all objects | ||||
| void Factory_init() { | ||||
|     LED_init(l1(), 1); | ||||
|     LED_init(l2(), 2); | ||||
|     LED_init(l3(), 3); | ||||
|     LED_init(l4(), 4); | ||||
|     LED_init(l5(), 5); | ||||
|     LED_init(l6(), 6); | ||||
|     LED_init(l7(), 7); | ||||
|     LED_init(l8(), 8); | ||||
|  | ||||
|     LED_initHW(l1()); | ||||
|     LED_initHW(l2()); | ||||
|     LED_initHW(l3()); | ||||
|     LED_initHW(l4()); | ||||
|     LED_initHW(l5()); | ||||
|     LED_initHW(l6()); | ||||
|     LED_initHW(l7()); | ||||
|     LED_initHW(l8()); | ||||
|  | ||||
|     BLINKER_init(b1()); | ||||
|  | ||||
|     CAN_init(); | ||||
|     CAN_setSender(1); | ||||
|     LED_off(l1()); | ||||
|      | ||||
|     MEM_init(); | ||||
|     initRamp(); | ||||
|      | ||||
|     ALIVE_init(ALcontroller()); | ||||
|     ALIVE_init(ALcontroller(), 5); | ||||
|     ALIVE_setAliveTime(ALcontroller(), KART_CST.CONTROL_ALIVE_TIME); | ||||
|      | ||||
|     ALIVE_init(ALjoy()); | ||||
|     ALIVE_init(ALjoy(), 1); | ||||
|     DRIVE_init(drive()); | ||||
|     STEERING_init(steering()); | ||||
| } | ||||
|  | ||||
| //connect objects if required | ||||
| @@ -89,30 +57,32 @@ void Factory_build() { | ||||
|      | ||||
|     ALIVE_onAlive(ALcontroller(), CM_CONTROLLER_ALIVE, NULL); | ||||
|      | ||||
|     //BLINKER_onOn(b1(), LED_on, l6()); | ||||
|     //BLINKER_onOff(b1(), LED_off, l6()); | ||||
|      | ||||
|     ALIVE_onSetup(ALjoy(), CM_JOY_SETUP, NULL); | ||||
|     //ALIVE_onSetup(ALjoy(), CM_JOY_SETUP, NULL); | ||||
|     ALIVE_setAliveTime(ALjoy(), KART_CST.JOYSTICK_ALIVE_TIME); | ||||
|     ALIVE_onBorn(ALjoy(), LED_on, l1()); | ||||
|     ALIVE_onDead(ALjoy(), LED_off, l1()); | ||||
|     //ALIVE_onBorn(ALjoy(), LED_on, l1()); | ||||
|     ALIVE_onDead(ALjoy(), deadJoystick, NULL); | ||||
|      | ||||
|     DRIVE_onRun(drive(), LED_on, l2()); | ||||
|     DRIVE_onDead(drive(), LED_off, l2()); | ||||
|     //DRIVE_onRun(drive(), LED_on, l2()); | ||||
|     //DRIVE_onDead(drive(), LED_off, l2()); | ||||
|      | ||||
|     //STEERING_onRun(steering(), LED_on, l3()); | ||||
|     //STEERING_onDead(steering(), LED_off, l3()); | ||||
|      | ||||
| } | ||||
|  | ||||
| //start all state machines | ||||
| void Factory_start() { | ||||
|     CAN_startBehaviour(); | ||||
|          | ||||
|     DRIVE_startBehaviour(drive()); | ||||
|      | ||||
|     ALIVE_startBehaviourSender(ALcontroller()); | ||||
|      | ||||
| /*         | ||||
|     DRIVE_startBehaviour(drive()); | ||||
|     STEERING_startBehaviour(steering()); | ||||
|      | ||||
|     ALIVE_startBehaviourChecker(ALjoy()); | ||||
|     ALIVE_emitBorn(ALjoy(), 100, 0); | ||||
|     ALIVE_emitReady(ALjoy(), 200, 0); | ||||
|      | ||||
| */     | ||||
|      | ||||
|      | ||||
| } | ||||
|   | ||||
| @@ -16,6 +16,8 @@ | ||||
| #include "../can_message.h" | ||||
| #include "../eeprom.h" | ||||
| #include "../drive.h" | ||||
| #include "../steering.h" | ||||
| #include "../kartculator.h" | ||||
| #include "../../board/led/led.h" | ||||
| #include "../../board/button/button.h" | ||||
| #include "../../middleware/alive.h" | ||||
| @@ -24,20 +26,13 @@ | ||||
|  | ||||
|  | ||||
| typedef struct { | ||||
|     LED l1_; | ||||
|     LED l2_; | ||||
|     LED l3_; | ||||
|     LED l4_; | ||||
|     LED l5_; | ||||
|     LED l6_; | ||||
|     LED l7_; | ||||
|     LED l8_; | ||||
|      | ||||
|     BLINKER b1_; | ||||
|      | ||||
|     ALIVE ALcontroller_; | ||||
|     ALIVE ALjoy_; | ||||
|     DRIVE drive_; | ||||
|     STEERING steering_; | ||||
|  | ||||
| } Factory; | ||||
|  | ||||
| @@ -47,20 +42,13 @@ void Factory_build(); | ||||
| void Factory_start(); | ||||
|  | ||||
| //these are global getters for our objects | ||||
| LED* l1(); | ||||
| LED* l2(); | ||||
| LED* l3(); | ||||
| LED* l4(); | ||||
| LED* l5(); | ||||
| LED* l6(); | ||||
| LED* l7(); | ||||
| LED* l8(); | ||||
|  | ||||
| BLINKER* b1(); | ||||
|  | ||||
| ALIVE* ALcontroller(); | ||||
| ALIVE* ALjoy(); | ||||
| DRIVE* drive(); | ||||
| STEERING* steering(); | ||||
|  | ||||
|  | ||||
| #endif | ||||
| @@ -7,17 +7,264 @@ | ||||
|  | ||||
| #include "kartculator.h" | ||||
|  | ||||
| void deadJoystick(void* p){ | ||||
|     eKart.torque = 0; | ||||
|     eKart.position = eKart.center; | ||||
| } | ||||
|  | ||||
| void initRamp() { | ||||
|     rampTorque[0] = 0; | ||||
|     rampTorque[1] = 3; | ||||
|     rampTorque[2] = 5; | ||||
|     rampTorque[3] = 7; | ||||
|     rampTorque[4] = 10; | ||||
|     rampTorque[5] = 12; | ||||
|     rampTorque[6] = 14; | ||||
|     rampTorque[7] = 16; | ||||
|     rampTorque[8] = 18; | ||||
|     rampTorque[9] = 20; | ||||
|     rampTorque[10] = 22; | ||||
|     rampTorque[11] = 24; | ||||
|     rampTorque[12] = 25; | ||||
|     rampTorque[13] = 27; | ||||
|     rampTorque[14] = 28; | ||||
|     rampTorque[15] = 30; | ||||
|     rampTorque[16] = 31; | ||||
|     rampTorque[17] = 33; | ||||
|     rampTorque[18] = 34; | ||||
|     rampTorque[19] = 36; | ||||
|     rampTorque[20] = 37; | ||||
|     rampTorque[21] = 38; | ||||
|     rampTorque[22] = 39; | ||||
|     rampTorque[23] = 40; | ||||
|     rampTorque[24] = 41; | ||||
|     rampTorque[25] = 42; | ||||
|     rampTorque[26] = 43; | ||||
|     rampTorque[27] = 44; | ||||
|     rampTorque[28] = 45; | ||||
|     rampTorque[29] = 46; | ||||
|     rampTorque[30] = 47; | ||||
|     rampTorque[31] = 47; | ||||
|     rampTorque[32] = 48; | ||||
|     rampTorque[33] = 49; | ||||
|     rampTorque[34] = 50; | ||||
|     rampTorque[35] = 50; | ||||
|     rampTorque[36] = 51; | ||||
|     rampTorque[37] = 51; | ||||
|     rampTorque[38] = 52; | ||||
|     rampTorque[39] = 53; | ||||
|     rampTorque[40] = 53; | ||||
|     rampTorque[41] = 53; | ||||
|     rampTorque[42] = 54; | ||||
|     rampTorque[43] = 54; | ||||
|     rampTorque[44] = 55; | ||||
|     rampTorque[45] = 55; | ||||
|     rampTorque[46] = 56; | ||||
|     rampTorque[47] = 56; | ||||
|     rampTorque[48] = 56; | ||||
|     rampTorque[49] = 57; | ||||
|     rampTorque[50] = 57; | ||||
|     rampTorque[51] = 58; | ||||
|     rampTorque[52] = 58; | ||||
|     rampTorque[53] = 58; | ||||
|     rampTorque[54] = 59; | ||||
|     rampTorque[55] = 59; | ||||
|     rampTorque[56] = 59; | ||||
|     rampTorque[57] = 60; | ||||
|     rampTorque[58] = 60; | ||||
|     rampTorque[59] = 60; | ||||
|     rampTorque[60] = 61; | ||||
|     rampTorque[61] = 61; | ||||
|     rampTorque[62] = 62; | ||||
|     rampTorque[63] = 62; | ||||
|     rampTorque[64] = 62; | ||||
|     rampTorque[65] = 63; | ||||
|     rampTorque[66] = 63; | ||||
|     rampTorque[67] = 64; | ||||
|     rampTorque[68] = 64; | ||||
|     rampTorque[69] = 65; | ||||
|     rampTorque[70] = 65; | ||||
|     rampTorque[71] = 66; | ||||
|     rampTorque[72] = 67; | ||||
|     rampTorque[73] = 67; | ||||
|     rampTorque[74] = 68; | ||||
|     rampTorque[75] = 69; | ||||
|     rampTorque[76] = 69; | ||||
|     rampTorque[77] = 70; | ||||
|     rampTorque[78] = 71; | ||||
|     rampTorque[79] = 72; | ||||
|     rampTorque[80] = 72; | ||||
|     rampTorque[81] = 73; | ||||
|     rampTorque[82] = 74; | ||||
|     rampTorque[83] = 75; | ||||
|     rampTorque[84] = 76; | ||||
|     rampTorque[85] = 77; | ||||
|     rampTorque[86] = 78; | ||||
|     rampTorque[87] = 80; | ||||
|     rampTorque[88] = 81; | ||||
|     rampTorque[89] = 82; | ||||
|     rampTorque[90] = 83; | ||||
|     rampTorque[91] = 85; | ||||
|     rampTorque[92] = 86; | ||||
|     rampTorque[93] = 88; | ||||
|     rampTorque[94] = 89; | ||||
|     rampTorque[95] = 91; | ||||
|     rampTorque[96] = 93; | ||||
|     rampTorque[97] = 94; | ||||
|     rampTorque[98] = 96; | ||||
|     rampTorque[99] = 98; | ||||
|     rampTorque[100] = 100; | ||||
|  | ||||
|     rampPosition[0] = 0; | ||||
|     rampPosition[1] = 0; | ||||
|     rampPosition[2] = 0; | ||||
|     rampPosition[3] = 0; | ||||
|     rampPosition[4] = 0; | ||||
|     rampPosition[5] = 1; | ||||
|     rampPosition[6] = 1; | ||||
|     rampPosition[7] = 1; | ||||
|     rampPosition[8] = 2; | ||||
|     rampPosition[9] = 2; | ||||
|     rampPosition[10] = 3; | ||||
|     rampPosition[11] = 3; | ||||
|     rampPosition[12] = 4; | ||||
|     rampPosition[13] = 5; | ||||
|     rampPosition[14] = 5; | ||||
|     rampPosition[15] = 6; | ||||
|     rampPosition[16] = 7; | ||||
|     rampPosition[17] = 8; | ||||
|     rampPosition[18] = 9; | ||||
|     rampPosition[19] = 9; | ||||
|     rampPosition[20] = 10; | ||||
|     rampPosition[21] = 11; | ||||
|     rampPosition[22] = 12; | ||||
|     rampPosition[23] = 13; | ||||
|     rampPosition[24] = 15; | ||||
|     rampPosition[25] = 16; | ||||
|     rampPosition[26] = 17; | ||||
|     rampPosition[27] = 18; | ||||
|     rampPosition[28] = 19; | ||||
|     rampPosition[29] = 20; | ||||
|     rampPosition[30] = 22; | ||||
|     rampPosition[31] = 23; | ||||
|     rampPosition[32] = 24; | ||||
|     rampPosition[33] = 25; | ||||
|     rampPosition[34] = 27; | ||||
|     rampPosition[35] = 28; | ||||
|     rampPosition[36] = 30; | ||||
|     rampPosition[37] = 31; | ||||
|     rampPosition[38] = 32; | ||||
|     rampPosition[39] = 34; | ||||
|     rampPosition[40] = 35; | ||||
|     rampPosition[41] = 37; | ||||
|     rampPosition[42] = 38; | ||||
|     rampPosition[43] = 40; | ||||
|     rampPosition[44] = 41; | ||||
|     rampPosition[45] = 43; | ||||
|     rampPosition[46] = 44; | ||||
|     rampPosition[47] = 46; | ||||
|     rampPosition[48] = 47; | ||||
|     rampPosition[49] = 49; | ||||
|     rampPosition[50] = 50; | ||||
|     rampPosition[51] = 51; | ||||
|     rampPosition[52] = 53; | ||||
|     rampPosition[53] = 54; | ||||
|     rampPosition[54] = 56; | ||||
|     rampPosition[55] = 57; | ||||
|     rampPosition[56] = 59; | ||||
|     rampPosition[57] = 60; | ||||
|     rampPosition[58] = 62; | ||||
|     rampPosition[59] = 63; | ||||
|     rampPosition[60] = 65; | ||||
|     rampPosition[61] = 66; | ||||
|     rampPosition[62] = 68; | ||||
|     rampPosition[63] = 69; | ||||
|     rampPosition[64] = 70; | ||||
|     rampPosition[65] = 72; | ||||
|     rampPosition[66] = 73; | ||||
|     rampPosition[67] = 75; | ||||
|     rampPosition[68] = 76; | ||||
|     rampPosition[69] = 77; | ||||
|     rampPosition[70] = 78; | ||||
|     rampPosition[71] = 80; | ||||
|     rampPosition[72] = 81; | ||||
|     rampPosition[73] = 82; | ||||
|     rampPosition[74] = 83; | ||||
|     rampPosition[75] = 84; | ||||
|     rampPosition[76] = 85; | ||||
|     rampPosition[77] = 87; | ||||
|     rampPosition[78] = 88; | ||||
|     rampPosition[79] = 89; | ||||
|     rampPosition[80] = 90; | ||||
|     rampPosition[81] = 91; | ||||
|     rampPosition[82] = 91; | ||||
|     rampPosition[83] = 92; | ||||
|     rampPosition[84] = 93; | ||||
|     rampPosition[85] = 94; | ||||
|     rampPosition[86] = 95; | ||||
|     rampPosition[87] = 95; | ||||
|     rampPosition[88] = 96; | ||||
|     rampPosition[89] = 97; | ||||
|     rampPosition[90] = 97; | ||||
|     rampPosition[91] = 98; | ||||
|     rampPosition[92] = 98; | ||||
|     rampPosition[93] = 99; | ||||
|     rampPosition[94] = 99; | ||||
|     rampPosition[95] = 99; | ||||
|     rampPosition[96] = 100; | ||||
|     rampPosition[97] = 100; | ||||
|     rampPosition[98] = 100; | ||||
|     rampPosition[99] = 100; | ||||
|     rampPosition[100] = 100; | ||||
|  | ||||
|  | ||||
| } | ||||
|  | ||||
| void calcTorque(uint8_t joy_pos) { | ||||
|     int32_t calcTorque; | ||||
|     calcTorque = (int8_t) joy_pos;                  // joystick position | ||||
|      | ||||
|     // if mode race, use special curve for torque | ||||
|     if(eKart.powerMode == 2) { | ||||
|         if(calcTorque >= 0) { | ||||
|             calcTorque = rampTorque[calcTorque]; | ||||
|         } else { | ||||
|             calcTorque *= -1; | ||||
|             calcTorque = rampTorque[calcTorque]; | ||||
|             calcTorque *= -1; | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     calcTorque *= KART_CST.CONTROL_POWER_FACTOR;    // convert by power factor | ||||
|     calcTorque /= 1000;                             // torque define by joystick | ||||
|      | ||||
|     if(eKart.button) { | ||||
|         calcTorque *= 1150; | ||||
|         calcTorque /= 1000; | ||||
|     } | ||||
|     eKart.torque = (int16_t) calcTorque; | ||||
| } | ||||
|  | ||||
| void calcPosition(uint8_t joy_pos){ | ||||
|     int32_t calcPosition; | ||||
|     calcPosition = (int8_t) joy_pos; | ||||
|     calcPosition *= -1;     // change left and right | ||||
|      | ||||
|     // if mode race, use special curve for steering | ||||
|     if (eKart.powerMode == 2) { | ||||
|         if(calcPosition >= 0) { | ||||
|             calcPosition = rampPosition[calcPosition]; | ||||
|         } else { | ||||
|             calcPosition *= -1; | ||||
|             calcPosition = rampPosition[calcPosition]; | ||||
|             calcPosition *= -1; | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     calcPosition *= (int32_t) KART_CST.CONTROL_STEERING_FACTOR; | ||||
|     calcPosition /= 1000; | ||||
|     calcPosition += eKart.center; | ||||
|     eKart.position = (uint32_t) calcPosition; | ||||
| } | ||||
|  | ||||
| void calcSpeed(int32_t rpm) { | ||||
| @@ -27,7 +274,7 @@ void calcSpeed(int32_t rpm) { | ||||
|     } else { | ||||
|         calcSpeed = -rpm; | ||||
|     } | ||||
|     calcSpeed *= 1000; | ||||
|     calcSpeed *= 2000; | ||||
|     calcSpeed /= KART_CST.CONTROL_SPEED_FACTOR; | ||||
|     eKart.speed = (uint8_t) calcSpeed; | ||||
| } | ||||
|   | ||||
| @@ -13,6 +13,8 @@ | ||||
| #include "../mcc_generated_files/mcc.h" | ||||
| #include "car.h" | ||||
|  | ||||
| void initRamp(); | ||||
| void deadJoystick(void* p); | ||||
| void calcTorque(uint8_t joy_pos); | ||||
| void calcPosition(uint8_t joy_pos); | ||||
| void calcSpeed(int32_t rpm); | ||||
|   | ||||
							
								
								
									
										173
									
								
								306-controller_interface.X/app/steering.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								306-controller_interface.X/app/steering.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,173 @@ | ||||
| /** | ||||
|  * @author R<>mi Heredero | ||||
|  * @version 1.0.0 | ||||
|  * @date September 2023 | ||||
|  * @file steering.c | ||||
|  */ | ||||
|  | ||||
| #include "steering.h" | ||||
| #include "can_message.h" | ||||
| #include "car.h" | ||||
| //#include "drive.h" | ||||
|  | ||||
| void alive_born(void* p){ | ||||
|     STEERING* me = (STEERING*) p; | ||||
|     STEERING_emitResurrect(me); | ||||
|     //CM_STEERING_SETUP(&ALWAYS3); | ||||
| } | ||||
|  | ||||
| void STEERING_init(STEERING* me){ | ||||
|     me->state = STST_INIT; | ||||
|     ALIVE_init(&me->myChecker, 3); | ||||
|     ALIVE_onSetup(&me->myChecker, CM_STEERING_SETUP, &ALWAYS2); | ||||
|     ALIVE_onWait(&me->myChecker, STEERING_emitStart, me); | ||||
|     ALIVE_onDead(&me->myChecker, STEERING_emitStop, me); | ||||
|     ALIVE_onBorn(&me->myChecker, alive_born, me); | ||||
|     me->wait.f = NULL; | ||||
|     me->run.f = NULL; | ||||
|     me->dead.f = NULL; | ||||
|     eKart.center = 560024; | ||||
| } | ||||
|  | ||||
| void STEERING_startBehaviour(STEERING* me){ | ||||
|     POST(me, &STEERING_processEvent, evSTinit, 3000, 0); | ||||
| } | ||||
|  | ||||
| bool STEERING_processEvent(Event* ev) { | ||||
|     bool processed = false; | ||||
|     STEERING* me = (STEERING*)Event_getTarget(ev); | ||||
|     STEERING_STATES oldState = me->state; | ||||
|     evIDT evid = Event_getId(ev); | ||||
|     uint64_t data = Event_getData(ev); | ||||
|      | ||||
|     switch (me->state) {        // onState | ||||
|         case STST_INIT: | ||||
|             if (ev->id == evSTinit) { | ||||
|                 me->state = STST_WAIT; | ||||
|                 ALIVE_startBehaviourChecker(&me->myChecker); // Start alive checker | ||||
|             } | ||||
|             break; | ||||
|          | ||||
|         case STST_WAIT: | ||||
|             if (ev->id == evSTstart) { | ||||
|                 me->state = STST_RUN; | ||||
|             } | ||||
| //            ALIVE_setAliveTime(&me->myChecker, KART_CST.STEERING_ALIVE_TIME); | ||||
| //            ALIVE_emitBorn(&me->myChecker, 500, 0); | ||||
| //            ALIVE_emitReady(&me->myChecker, 1000, 0); | ||||
|             break; | ||||
|          | ||||
|         case STST_RUN: | ||||
|             if (ev->id == evSTstop) { | ||||
|                 me->state = STST_DEAD; | ||||
|             } | ||||
|              | ||||
|             if (ev->id == evSTpollDir) { | ||||
|                 //if(drive()->state == STDR_RUN) { | ||||
|                     CM_STEERING_SET(&eKart.position); | ||||
|                 //} | ||||
|             } | ||||
|             break; | ||||
|          | ||||
|         case STST_DEAD: | ||||
|             if (ev->id == evSTresurrect) { | ||||
|                 me->state = STST_WAIT; | ||||
|             } | ||||
|             break; | ||||
|     } | ||||
|  | ||||
|     if(oldState != me->state){ | ||||
|         switch (oldState) {     // onExit | ||||
|             case STST_INIT: | ||||
|                 break; | ||||
|              | ||||
|             case STST_WAIT: | ||||
|                 break; | ||||
|              | ||||
|             case STST_RUN: | ||||
|                 break; | ||||
|              | ||||
|             case STST_DEAD: | ||||
|                 break; | ||||
|         } | ||||
|  | ||||
|         switch (me->state) {    // onEntry | ||||
|             case STST_INIT: | ||||
|                 break; | ||||
|              | ||||
|             case STST_WAIT: | ||||
|                 if (me->wait.f != NULL) { | ||||
|                     me->wait.f(me->wait.p); | ||||
|                 } | ||||
|                 ALIVE_setAliveTime(&me->myChecker, KART_CST.STEERING_ALIVE_TIME); | ||||
|                 ALIVE_emitBorn(&me->myChecker, 500, 0); | ||||
|                 break; | ||||
|              | ||||
|             case STST_RUN: | ||||
|                 if (me->run.f != NULL) { | ||||
|                     me->run.f(me->run.p); | ||||
|                 } | ||||
|                 break; | ||||
|              | ||||
|             case STST_DEAD: | ||||
|                 if (me->dead.f != NULL) { | ||||
|                     me->dead.f(me->dead.p); | ||||
|                 } | ||||
|                 break; | ||||
|         } | ||||
|  | ||||
|         processed = true; | ||||
|     } | ||||
|     return processed; | ||||
| } | ||||
|  | ||||
| /************* | ||||
|  * Callbacks * | ||||
|  *************/ | ||||
|  | ||||
| void STEERING_onWait(STEERING* me, STEERING_CALLBACK_FUNCTION f, void* p) { | ||||
|     me->wait.f = f; | ||||
|     me->wait.p = p; | ||||
| } | ||||
|  | ||||
| void STEERING_onRun(STEERING* me, STEERING_CALLBACK_FUNCTION f, void* p) { | ||||
|     me->run.f = f; | ||||
|     me->run.p = p; | ||||
| } | ||||
|  | ||||
| void STEERING_onDead(STEERING* me, STEERING_CALLBACK_FUNCTION f, void* p) { | ||||
|     me->dead.f = f; | ||||
|     me->dead.p = p; | ||||
| } | ||||
|  | ||||
| /************ | ||||
|  * EMITTERS * | ||||
|  ************/ | ||||
|  | ||||
| void STEERING_emitStart(void* p) { | ||||
|     STEERING* me = (STEERING*) p; | ||||
|     POST(me, &STEERING_processEvent, evSTstart, 0, 0); | ||||
| } | ||||
|  | ||||
| void STEERING_emitStop(void* p) { | ||||
|     STEERING* me = (STEERING*) p; | ||||
|     POST(me, &STEERING_processEvent, evSTstop, 0, 0); | ||||
| } | ||||
|  | ||||
| void STEERING_emitResurrect(void* p) { | ||||
|     STEERING* me = (STEERING*) p; | ||||
|     POST(me, &STEERING_processEvent, evSTresurrect, 0, 0); | ||||
| } | ||||
|  | ||||
| void STEERING_emitPollDir(void* p) { | ||||
|     STEERING* me = (STEERING*) p; | ||||
|     POST(me, &STEERING_processEvent, evSTpollDir, 0, 0); | ||||
| } | ||||
|  | ||||
| /*********** | ||||
|  * SETTERS * | ||||
|  ***********/ | ||||
|  | ||||
| void STEERING_setMyChecker(STEERING* me, ALIVE v) { | ||||
|     me->myChecker = v; | ||||
| } | ||||
							
								
								
									
										124
									
								
								306-controller_interface.X/app/steering.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								306-controller_interface.X/app/steering.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | ||||
| /** | ||||
|  * @author R<>mi Heredero | ||||
|  * @version 1.0.0 | ||||
|  * @date September 2023 | ||||
|  * @file steering.h | ||||
|  */ | ||||
| #ifndef STEERING_H | ||||
| #define STEERING_H | ||||
|  | ||||
| #include "../xf/xf.h" | ||||
| #include "../middleware/alive.h" | ||||
|  | ||||
| typedef enum { | ||||
|     STST_INIT = 110, | ||||
|     STST_WAIT, | ||||
|     STST_RUN, | ||||
|     STST_DEAD | ||||
| } STEERING_STATES; | ||||
|  | ||||
| typedef enum { | ||||
|     evSTinit = 110, | ||||
|     evSTstart, | ||||
|     evSTstop, | ||||
|     evSTresurrect, | ||||
|     evSTpollDir | ||||
| } STEERING_EVENTS; | ||||
|  | ||||
| typedef void (*STEERING_CALLBACK_FUNCTION)(void*); | ||||
| typedef struct { | ||||
|     STEERING_CALLBACK_FUNCTION f; // function | ||||
|     void* p; // param(s) | ||||
| } STEERING_CALLBACK; | ||||
|  | ||||
| typedef struct { | ||||
|     STEERING_STATES state; | ||||
|     ALIVE myChecker; | ||||
|     STEERING_CALLBACK wait; | ||||
|     STEERING_CALLBACK run; | ||||
|     STEERING_CALLBACK dead; | ||||
| } STEERING; | ||||
|  | ||||
| /** | ||||
|  * Initialize the STEERING | ||||
|  * @param me the STEERING itself | ||||
|  */ | ||||
| void STEERING_init(STEERING* me); | ||||
|  | ||||
| /** | ||||
|  * Start the STEERING state machine | ||||
|  * @param me the STEERING itself | ||||
|  */ | ||||
| void STEERING_startBehaviour(STEERING* me); | ||||
|  | ||||
| /** | ||||
|  * Process the event | ||||
|  * @param ev the event to process | ||||
|  * @return true if the event is processed | ||||
|  */ | ||||
| bool STEERING_processEvent(Event* ev); | ||||
|  | ||||
| /************* | ||||
|  * Callbacks * | ||||
|  *************/ | ||||
|  | ||||
| /** | ||||
|  * Set the callback function to call when the STEERING is entering state wait | ||||
|  * @param me the STEERING itself | ||||
|  * @param f the function to call | ||||
|  * @param p the param(s) to pass to the function | ||||
|  */ | ||||
| void STEERING_onWait(STEERING* me, STEERING_CALLBACK_FUNCTION f, void* p); | ||||
|  | ||||
| /** | ||||
|  * Set the callback function to call when the STEERING is entering state run | ||||
|  * @param me the STEERING itself | ||||
|  * @param f the function to call | ||||
|  * @param p the param(s) to pass to the function | ||||
|  */ | ||||
| void STEERING_onRun(STEERING* me, STEERING_CALLBACK_FUNCTION f, void* p); | ||||
|  | ||||
| /** | ||||
|  * Set the callback function to call when the STEERING is entering state dead | ||||
|  * @param me the STEERING itself | ||||
|  * @param f the function to call | ||||
|  * @param p the param(s) to pass to the function | ||||
|  */ | ||||
| void STEERING_onDead(STEERING* me, STEERING_CALLBACK_FUNCTION f, void* p); | ||||
|  | ||||
| /************ | ||||
|  * EMITTERS * | ||||
|  ************/ | ||||
|  | ||||
| /** | ||||
|  * Emit the start event | ||||
|  * @param p the STEERING itself | ||||
|  */ | ||||
| void STEERING_emitStart(void* p); | ||||
|  | ||||
| /** | ||||
|  * Emit the stop event | ||||
|  * @param p the STEERING itself | ||||
|  */ | ||||
| void STEERING_emitStop(void* p); | ||||
|  | ||||
| /** | ||||
|  * Emit the resurrect event | ||||
|  * @param p the STEERING itself | ||||
|  */ | ||||
| void STEERING_emitResurrect(void* p); | ||||
|  | ||||
| /** | ||||
|  * Emit the pollDir event | ||||
|  * @param me the STEERING itself | ||||
|  * @param t time to wait in ms before triggering event | ||||
|  * @param data data to put on the event for XF | ||||
|  */ | ||||
| void STEERING_emitPollDir(void* p); | ||||
|  | ||||
| /*********** | ||||
|  * SETTERS * | ||||
|  ***********/ | ||||
|  | ||||
|  | ||||
| #endif | ||||
| @@ -2,38 +2,27 @@ | ||||
| #include "xf/xf.h" | ||||
| #include "app/factory/factory.h" | ||||
|  | ||||
| /* | ||||
|  * the main function | ||||
|  */ | ||||
| void main(void) | ||||
| { | ||||
|     // Initialize the device | ||||
|      | ||||
|     SYSTEM_Initialize(); | ||||
|  | ||||
|  | ||||
|     // Disable the Global Interrupts | ||||
|     // INTERRUPT_GlobalInterruptDisable(); | ||||
|      | ||||
|     // initialize the XF | ||||
|     XF_init(); | ||||
|      | ||||
|     // produce the system | ||||
|     Factory_init(); | ||||
|     Factory_build(); | ||||
|     Factory_start(); | ||||
|     //WWDT_SoftEnable(); | ||||
|      | ||||
|     // let the XF timers handling become the TMR0 interrupt handler | ||||
|     // this means that the XF timers are always decremented when the  | ||||
|     // TMR0 is interrupting. Important: Set the TICKINTERVAL define in  | ||||
|     //the xf.h file to the same value as the TMR0 value.  | ||||
|     TMR0_SetInterruptHandler(XF_decrementAndQueueTimers); | ||||
|     // Enable the Global Interrupts | ||||
|      | ||||
|     INTERRUPT_GlobalInterruptEnable(); | ||||
|  | ||||
|     while (1) | ||||
|     { | ||||
|         //handle the next event if there is any in the queue | ||||
|          | ||||
|         WWDT_TimerClear(); | ||||
|         XF_executeOnce(); | ||||
|         //maybe sleep a short while to save energy | ||||
|          | ||||
|     } | ||||
| } | ||||
| @@ -73,8 +73,8 @@ | ||||
| #pragma config XINST = OFF    // Extended Instruction Set Enable bit->Extended Instruction Set and Indexed Addressing Mode disabled | ||||
|  | ||||
| // CONFIG3L | ||||
| #pragma config WDTCPS = WDTCPS_31    // WDT Period selection bits->Divider ratio 1:65536; software control of WDTPS | ||||
| #pragma config WDTE = OFF    // WDT operating mode->WDT Disabled; SWDTEN is ignored | ||||
| #pragma config WDTCPS = WDTCPS_6    // WDT Period selection bits->Divider ratio 1:2048 | ||||
| #pragma config WDTE = SWDTEN    // WDT operating mode->WDT enabled/disabled by SWDTEN bit | ||||
|  | ||||
| // CONFIG3H | ||||
| #pragma config WDTCWS = WDTCWS_7    // WDT Window Select bits->window always open (100%); software control; keyed access not required | ||||
|   | ||||
| @@ -53,6 +53,7 @@ void SYSTEM_Initialize(void) | ||||
|     PMD_Initialize(); | ||||
|     PIN_MANAGER_Initialize(); | ||||
|     OSCILLATOR_Initialize(); | ||||
|     WWDT_Initialize(); | ||||
|     TMR0_Initialize(); | ||||
|     ECAN_Initialize(); | ||||
| } | ||||
| @@ -92,6 +93,50 @@ void PMD_Initialize(void) | ||||
| } | ||||
|  | ||||
|  | ||||
| void WWDT_Initialize(void) | ||||
| { | ||||
|     // Initializes the WWDT to the default states configured in the MCC GUI | ||||
|     WDTCON0 = WDTCPS; | ||||
|     WDTCON1 = WDTCWS|WDTCCS; | ||||
|      | ||||
| } | ||||
|  | ||||
| void WWDT_SoftEnable(void) | ||||
| { | ||||
|     // WWDT software enable.  | ||||
|     WDTCON0bits.SEN=1; | ||||
| } | ||||
|  | ||||
| void WWDT_SoftDisable(void) | ||||
| { | ||||
|     // WWDT software disable. | ||||
|     WDTCON0bits.SEN=0; | ||||
| } | ||||
|  | ||||
| bool WWDT_TimeOutStatusGet(void) | ||||
| { | ||||
|     // Return the status of WWDT time out reset. | ||||
|     return (PCON0bits.nRWDT); | ||||
| } | ||||
|  | ||||
| bool WWDT_WindowViolationStatusGet(void) | ||||
| { | ||||
|    // Return the status of WWDT window violation reset. | ||||
|     return (PCON0bits.nWDTWV);  | ||||
| }   | ||||
|  | ||||
| void WWDT_TimerClear(void) | ||||
| { | ||||
|     // Disable the interrupt,read back the WDTCON0 reg for arming,  | ||||
|     // clearing the WWDT and enable the interrupt. | ||||
|     uint8_t readBack=0; | ||||
|      | ||||
|     bool state = GIE; | ||||
|     GIE = 0; | ||||
|     readBack = WDTCON0; | ||||
|     CLRWDT(); | ||||
|     GIE = state; | ||||
| } | ||||
| /** | ||||
|  End of File | ||||
| */ | ||||
|   | ||||
| @@ -57,6 +57,9 @@ | ||||
| #include "tmr0.h" | ||||
| #include "ecan.h" | ||||
|  | ||||
| #define WDTCWS  7 | ||||
| #define WDTCCS  48 | ||||
| #define WDTCPS  12 | ||||
|  | ||||
|  | ||||
| /** | ||||
| @@ -98,6 +101,84 @@ void OSCILLATOR_Initialize(void); | ||||
|  */ | ||||
| void PMD_Initialize(void); | ||||
|  | ||||
| /** | ||||
|  * @Param | ||||
|     none | ||||
|  * @Returns | ||||
|     none | ||||
|  * @Description | ||||
|     Initializes the WWDT to the default states configured in the | ||||
|  *                  MCC GUI | ||||
|  * @Example | ||||
|     WWDT_Initialize(); | ||||
|  */ | ||||
| void WWDT_Initialize(void); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * @Param | ||||
|     none | ||||
|  * @Returns | ||||
|     none | ||||
|  * @Description | ||||
|    Enable the WWDT by setting the SEN bit. | ||||
|  * @Example | ||||
|     WWDT_SoftEnable(); | ||||
|  */ | ||||
| void WWDT_SoftEnable(void); | ||||
|  | ||||
| /** | ||||
|  * @Param | ||||
|     none | ||||
|  * @Returns | ||||
|     none | ||||
|  * @Description | ||||
|    Disable the WWDT by clearing the SEN bit. | ||||
|  * @Example | ||||
|     WWDT_SoftDisable(); | ||||
|  */ | ||||
| void WWDT_SoftDisable(void); | ||||
|  | ||||
| /** | ||||
|  * @Param | ||||
|     none | ||||
|  * @Returns | ||||
|     none | ||||
|  * @Description | ||||
|    Disable the interrupt, arm the WWDT by reading back the WDTCON0 register | ||||
|  * clear the WWDT and enable the interrupt. | ||||
|  * @Example | ||||
|     WWDT_TimerClear(); | ||||
|  */ | ||||
| void WWDT_TimerClear(void); | ||||
|  | ||||
| /** | ||||
|  * @Param | ||||
|     none | ||||
|  * @Returns | ||||
|    High --> WWDT reset has not occurred.  | ||||
|  * Low  --> WWDT reset has  occurred. | ||||
|  * @Description | ||||
|     Returns the status of whether the WWDT reset has occurred or not. | ||||
|  * @Example | ||||
|     if(WWDT_TimeOutStatusGet()) | ||||
|  */ | ||||
| bool WWDT_TimeOutStatusGet(void); | ||||
|  | ||||
| /** | ||||
|  * @Param | ||||
|     none | ||||
|  * @Returns | ||||
|    High --> WWDT window violation reset has not occurred.  | ||||
|  * Low  --> WWDT window violation reset has  occurred. | ||||
|  * @Description | ||||
|     Returns the status of, whether the WWDT window violation  | ||||
|  *  reset has occurred or not. | ||||
|  * @Example | ||||
|     if(WWDT_WindowViolationStatusGet()) | ||||
|  */ | ||||
| bool WWDT_WindowViolationStatusGet(void); | ||||
|        | ||||
|  | ||||
| #endif	/* MCC_H */ | ||||
| /** | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|  | ||||
| #include "alive.h" | ||||
|  | ||||
| void ALIVE_init(ALIVE* me){ | ||||
| void ALIVE_init(ALIVE* me, uint8_t led){ | ||||
|     me->state = STAL_INIT; | ||||
|     me->isAlive = false; | ||||
|     me->checker = false; | ||||
| @@ -20,14 +20,23 @@ void ALIVE_init(ALIVE* me){ | ||||
|     me->dead.f = NULL; | ||||
|     me->alive.f = NULL; | ||||
|     me->break_cb.f = NULL; | ||||
|     LED_init(&me->debugLed, led); | ||||
|     LED_initHW(&me->debugLed); | ||||
|     BLINKER_init(&me->debugBlinker); | ||||
|     BLINKER_setTimeOn(&me->debugBlinker, 50); | ||||
|     BLINKER_setTimeOff(&me->debugBlinker, 50); | ||||
|     BLINKER_onOn(&me->debugBlinker, LED_on, &me->debugLed); | ||||
|     BLINKER_onOff(&me->debugBlinker, LED_off, &me->debugLed); | ||||
| } | ||||
|  | ||||
| void ALIVE_startBehaviourChecker(ALIVE* me){ | ||||
|     POST(me, &ALIVE_processEvent, evALinitChecker, 0, 0); | ||||
|     BLINKER_startBehaviour(&me->debugBlinker); | ||||
|     POST(me, &ALIVE_processEvent, evALinitChecker, 10, 0); | ||||
| } | ||||
|  | ||||
| void ALIVE_startBehaviourSender(ALIVE* me){ | ||||
|     POST(me, &ALIVE_processEvent, evALinitSender, 0, 0); | ||||
|     BLINKER_startBehaviour(&me->debugBlinker); | ||||
|     POST(me, &ALIVE_processEvent, evALinitSender, 10, 0); | ||||
| } | ||||
|  | ||||
| bool ALIVE_processEvent(Event* ev) { | ||||
| @@ -39,6 +48,7 @@ bool ALIVE_processEvent(Event* ev) { | ||||
|      | ||||
|     switch (me->state) {        // onState | ||||
|         case STAL_INIT: | ||||
|             LED_on(&me->debugLed); | ||||
|             if (ev->id == evALinitChecker) { | ||||
|                 me->state = STAL_SETUP; | ||||
|             } | ||||
| @@ -57,7 +67,7 @@ bool ALIVE_processEvent(Event* ev) { | ||||
|         case STAL_BORN: | ||||
|             if (ev->id == evALready) { | ||||
|                 me->state = STAL_WAIT; | ||||
|                 ALIVE_emitPoll(me, me->aliveTime*10, 0); | ||||
|                 ALIVE_emitPoll(me, me->aliveTime*20, 0); | ||||
|             } | ||||
|             break; | ||||
|          | ||||
| @@ -70,7 +80,7 @@ bool ALIVE_processEvent(Event* ev) { | ||||
|                     } | ||||
|                 } else if (me->isAlive){ | ||||
|                     me->state = STAL_WAIT; | ||||
|                     ALIVE_emitPoll(me, me->aliveTime*10, 0); | ||||
|                     ALIVE_emitPoll(me, me->aliveTime*20, 0); | ||||
|                 } else { | ||||
|                     me->state = STAL_DEAD; | ||||
|                 } | ||||
| @@ -95,7 +105,7 @@ bool ALIVE_processEvent(Event* ev) { | ||||
|                         me->state = STAL_BREAK; | ||||
|                     } | ||||
|                 } else { | ||||
|                     ALIVE_emitPoll(me, me->aliveTime*10, 0); | ||||
|                     ALIVE_emitPoll(me, me->aliveTime*20, 0); | ||||
|                 } | ||||
|             } | ||||
|             break; | ||||
| @@ -125,12 +135,14 @@ bool ALIVE_processEvent(Event* ev) { | ||||
|                 break; | ||||
|              | ||||
|             case STAL_WAIT: | ||||
|                 BLINKER_endBlink(&me->debugBlinker); | ||||
|                 break; | ||||
|              | ||||
|             case STAL_DEAD: | ||||
|                 break; | ||||
|              | ||||
|             case STAL_ALIVE: | ||||
|                 BLINKER_endBlink(&me->debugBlinker); | ||||
|                 break; | ||||
|              | ||||
|             case STAL_BREAK: | ||||
| @@ -155,6 +167,8 @@ bool ALIVE_processEvent(Event* ev) { | ||||
|                 break; | ||||
|              | ||||
|             case STAL_WAIT: | ||||
|                 LED_off(&me->debugLed); | ||||
|                 BLINKER_emitBlink(&me->debugBlinker, 0); | ||||
|                 if (me->wait.f != NULL) { | ||||
|                     me->wait.f(me->wait.p); | ||||
|                 } | ||||
| @@ -167,6 +181,8 @@ bool ALIVE_processEvent(Event* ev) { | ||||
|                 break; | ||||
|              | ||||
|             case STAL_ALIVE: | ||||
|                 LED_off(&me->debugLed); | ||||
|                 BLINKER_emitBlink(&me->debugBlinker, 0); | ||||
|                 me->sender = true; | ||||
|                 break; | ||||
|              | ||||
|   | ||||
| @@ -8,9 +8,11 @@ | ||||
| #define ALIVE_H | ||||
|  | ||||
| #include "../xf/xf.h" | ||||
| #include "../board/led/led.h" | ||||
| #include "../middleware/blinker.h" | ||||
|  | ||||
| typedef enum { | ||||
|     STAL_INIT, | ||||
|     STAL_INIT = 20, | ||||
|     STAL_SETUP, | ||||
|     STAL_BORN, | ||||
|     STAL_WAIT, | ||||
| @@ -20,7 +22,7 @@ typedef enum { | ||||
| } ALIVE_STATES; | ||||
|  | ||||
| typedef enum { | ||||
|     evALinitChecker = 15, | ||||
|     evALinitChecker = 20, | ||||
|     evALinitSender, | ||||
|     evALborn, | ||||
|     evALready, | ||||
| @@ -37,6 +39,8 @@ typedef struct { | ||||
|  | ||||
| typedef struct { | ||||
|     ALIVE_STATES state; | ||||
|     LED debugLed; | ||||
|     BLINKER debugBlinker; | ||||
|     bool isAlive; | ||||
|     bool checker; | ||||
|     bool sender; | ||||
| @@ -54,7 +58,7 @@ typedef struct { | ||||
|  * Initialize the ALIVE | ||||
|  * @param me the ALIVE itself | ||||
|  */ | ||||
| void ALIVE_init(ALIVE* me); | ||||
| void ALIVE_init(ALIVE* me, uint8_t led); | ||||
|  | ||||
| /** | ||||
|  * Start the ALIVE state machine for checker part | ||||
|   | ||||
| @@ -53,7 +53,7 @@ bool BLINKER_processEvent(Event* ev) { | ||||
|          | ||||
|         case STBL_ON: | ||||
|             if (me->nBlinkIsOn) { | ||||
|                 me->remainBlinks--; | ||||
|                 me->remainBlinks = (me->remainBlinks) - 1; | ||||
|             } | ||||
|             if (evid == evBLtimer) { | ||||
|                 me->state = STBL_OFF; | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| /** | ||||
|  * @author R<>mi Heredero | ||||
|  * @author R<>mi Heredero | ||||
|  * @version 1.0.0 | ||||
|  * @date August 2023 | ||||
|  * @file can_interface.c | ||||
| @@ -34,12 +34,11 @@ typedef union { | ||||
|         uint8_t byte2; | ||||
|         uint8_t byte3; | ||||
|     } separate; | ||||
|     struct { | ||||
|         uint32_t bytes; | ||||
|     } full; | ||||
|     uint32_t full; | ||||
| } CAN_4_BYTES; | ||||
|  | ||||
| void CAN_init(){ | ||||
|     CAN_myself.state = STCA_INIT; | ||||
|     CAN_myself.receiveCan = NULL; | ||||
|     CAN_myself.sender = 0; | ||||
| } | ||||
| @@ -55,6 +54,12 @@ bool CAN_processEvent(Event* ev) { | ||||
|     evIDT evid = Event_getId(ev); | ||||
|      | ||||
|     uint64_t data = Event_getData(ev); | ||||
|     CAN_4_BYTES tmpData; | ||||
|     uCAN_MSG canMsg; | ||||
|     uint32_t canData = (uint32_t) data; | ||||
|     uint8_t idMsg; | ||||
|     uint8_t idRecipient; | ||||
|     uint8_t idSender; | ||||
|      | ||||
|          | ||||
|     switch (me->state) {        // onState | ||||
| @@ -69,26 +74,40 @@ bool CAN_processEvent(Event* ev) { | ||||
|             // New message arrive | ||||
|             if (ev->id == evCAnewMsg) { | ||||
|                 if (me->receiveCan != NULL) { | ||||
|                     uint32_t canData = (uint32_t) data; | ||||
|                     data = data>>32; | ||||
|  | ||||
|                     CAN_4_BYTES tmpData; | ||||
|                     tmpData.full.bytes = data; | ||||
|                     uint8_t idMsg = tmpData.separate.byte0; | ||||
|                     tmpData.full = data; | ||||
|                     idMsg = tmpData.separate.byte0; | ||||
|                     idMsg = idMsg >> 4; | ||||
|                     idMsg = idMsg & 0xF; | ||||
|                     uint8_t idRecipient = tmpData.separate.byte1; | ||||
|                     idRecipient = tmpData.separate.byte1; | ||||
|                     idRecipient = idRecipient & 0xF; | ||||
|                     uint8_t idSender = tmpData.separate.byte1; | ||||
|                     idSender = tmpData.separate.byte1; | ||||
|                     idSender = idSender >> 4; | ||||
|  | ||||
|                     me->receiveCan(idSender, idMsg, canData); | ||||
|                     me->receiveCan(idSender, idMsg, false, canData); | ||||
|                 } | ||||
|             } | ||||
|              | ||||
|             if (ev->id == evCAnewRTR) { | ||||
|                 if (me->receiveCan != NULL) { | ||||
|                     data = data>>32; | ||||
|  | ||||
|                     tmpData.full = data; | ||||
|                     idMsg = tmpData.separate.byte0; | ||||
|                     idMsg = idMsg >> 4; | ||||
|                     idMsg = idMsg & 0xF; | ||||
|                     idRecipient = tmpData.separate.byte1; | ||||
|                     idRecipient = idRecipient & 0xF; | ||||
|                     idSender = tmpData.separate.byte1; | ||||
|                     idSender = idSender >> 4; | ||||
|  | ||||
|                     me->receiveCan(idSender, idMsg, true, canData); | ||||
|                 } | ||||
|             } | ||||
|              | ||||
|             // Send a message | ||||
|             if (ev->id == evCAsend) { | ||||
|                 uCAN_MSG canMsg; | ||||
|             if (ev->id == evCAsend4) { | ||||
|                 canMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B;    // standard | ||||
|                 canMsg.frame.dlc = 4;                               // 4 bytes to send | ||||
|                 canMsg.frame.rtr = 0;                               // no remote frame | ||||
| @@ -103,6 +122,70 @@ bool CAN_processEvent(Event* ev) { | ||||
|                 canMsg.frame.id = (uint32_t) data; | ||||
|                 CAN_transmit(&canMsg); | ||||
|             } | ||||
|              | ||||
|             if (ev->id == evCAsend2) { | ||||
|                 canMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B;    // standard | ||||
|                 canMsg.frame.dlc = 2;                               // 4 bytes to send | ||||
|                 canMsg.frame.rtr = 0;                               // no remote frame | ||||
|                 canMsg.frame.data0 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data1 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data2 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data3 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.id = (uint32_t) data; | ||||
|                 CAN_transmit(&canMsg); | ||||
|             } | ||||
|              | ||||
|             if (ev->id == evCAsend1) { | ||||
|                 canMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B;    // standard | ||||
|                 canMsg.frame.dlc = 1;                               // 4 bytes to send | ||||
|                 canMsg.frame.rtr = 0;                               // no remote frame | ||||
|                 canMsg.frame.data0 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data1 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data2 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data3 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.id = (uint32_t) data; | ||||
|                 CAN_transmit(&canMsg); | ||||
|             } | ||||
|              | ||||
|             if (ev->id == evCAsend0) { | ||||
|                 canMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B;    // standard | ||||
|                 canMsg.frame.dlc = 0;                               // 4 bytes to send | ||||
|                 canMsg.frame.rtr = 0;                               // no remote frame | ||||
|                 canMsg.frame.data0 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data1 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data2 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data3 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.id = (uint32_t) data; | ||||
|                 CAN_transmit(&canMsg); | ||||
|             } | ||||
|              | ||||
|             if (ev->id == evCAsendRTR) { | ||||
|                 canMsg.frame.idType = dSTANDARD_CAN_MSG_ID_2_0B;    // standard | ||||
|                 canMsg.frame.dlc = 0;                               // 4 bytes to send | ||||
|                 canMsg.frame.rtr = 1;                               // no remote frame | ||||
|                 canMsg.frame.data0 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data1 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data2 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.data3 = (uint8_t) data; | ||||
|                 data = data >> 8; | ||||
|                 canMsg.frame.id = (uint32_t) data; | ||||
|                 CAN_transmit(&canMsg); | ||||
|             } | ||||
|             break; | ||||
|     } | ||||
|  | ||||
| @@ -153,7 +236,11 @@ void CAN_newMsg() { | ||||
|     data = data | canMsg.frame.data1; | ||||
|     data = data<<8; | ||||
|     data = data | canMsg.frame.data0; | ||||
|     if(canMsg.frame.rtr) { | ||||
|         POST(&CAN_myself, &CAN_processEvent, evCAnewRTR, 0, data); | ||||
|     } else { | ||||
|         POST(&CAN_myself, &CAN_processEvent, evCAnewMsg, 0, data); | ||||
|     } | ||||
| } | ||||
|  | ||||
| void CAN_Send(uint8_t idRecipient, uint8_t idMsg, uint32_t data) { | ||||
| @@ -161,7 +248,50 @@ void CAN_Send(uint8_t idRecipient, uint8_t idMsg, uint32_t data) { | ||||
|     tmpData = (tmpData<<4) | idRecipient; | ||||
|     tmpData = (tmpData<<4) | idMsg; | ||||
|     tmpData = (tmpData<<32) | data; | ||||
|     POST(&CAN_myself, &CAN_processEvent, evCAsend, 0, tmpData); | ||||
|     POST(&CAN_myself, &CAN_processEvent, evCAsend4, 0, tmpData); | ||||
| } | ||||
|  | ||||
| void CAN_send_4_bytes(uint8_t idRecipient, uint8_t idMsg, uint8_t byte0, uint8_t byte1, uint8_t byte2, uint8_t byte3) { | ||||
|     uint64_t tmpData = CAN_myself.sender; | ||||
|     tmpData = (tmpData<<4) | idRecipient; | ||||
|     tmpData = (tmpData<<4) | idMsg; | ||||
|     tmpData = (tmpData<<8) | byte3; | ||||
|     tmpData = (tmpData<<8) | byte2; | ||||
|     tmpData = (tmpData<<8) | byte1; | ||||
|     tmpData = (tmpData<<8) | byte0; | ||||
|     POST(&CAN_myself, &CAN_processEvent, evCAsend4, 0, tmpData); | ||||
| } | ||||
|  | ||||
| void CAN_send_2_bytes(uint8_t idRecipient, uint8_t idMsg, uint16_t data) { | ||||
|     uint64_t tmpData = CAN_myself.sender; | ||||
|     tmpData = (tmpData<<4) | idRecipient; | ||||
|     tmpData = (tmpData<<4) | idMsg; | ||||
|     tmpData = (tmpData<<32) | data; | ||||
|     POST(&CAN_myself, &CAN_processEvent, evCAsend2, 0, tmpData); | ||||
| } | ||||
|  | ||||
| void CAN_send_1_byte(uint8_t idRecipient, uint8_t idMsg, uint8_t data) { | ||||
|     uint64_t tmpData = CAN_myself.sender; | ||||
|     tmpData = (tmpData<<4) | idRecipient; | ||||
|     tmpData = (tmpData<<4) | idMsg; | ||||
|     tmpData = (tmpData<<32) | data; | ||||
|     POST(&CAN_myself, &CAN_processEvent, evCAsend1, 0, tmpData); | ||||
| } | ||||
|  | ||||
| void CAN_send_0_byte(uint8_t idRecipient, uint8_t idMsg) { | ||||
|     uint64_t tmpData = CAN_myself.sender; | ||||
|     tmpData = (tmpData<<4) | idRecipient; | ||||
|     tmpData = (tmpData<<4) | idMsg; | ||||
|     tmpData = tmpData<<32; | ||||
|     POST(&CAN_myself, &CAN_processEvent, evCAsend0, 0, tmpData); | ||||
| } | ||||
|  | ||||
| void CAN_send_rtr(uint8_t idRecipient, uint8_t idMsg) { | ||||
|     uint64_t tmpData = CAN_myself.sender; | ||||
|     tmpData = (tmpData<<4) | idRecipient; | ||||
|     tmpData = (tmpData<<4) | idMsg; | ||||
|     tmpData = tmpData<<32; | ||||
|     POST(&CAN_myself, &CAN_processEvent, evCAsendRTR, 0, tmpData); | ||||
| } | ||||
|  | ||||
| /*********** | ||||
|   | ||||
| @@ -10,17 +10,22 @@ | ||||
| #include "../xf/xf.h" | ||||
|  | ||||
| typedef enum { | ||||
|     STCA_INIT, | ||||
|     STCA_INIT = 10, | ||||
|     STCA_PROCESS | ||||
| } CAN_STATES; | ||||
|  | ||||
| typedef enum { | ||||
|     evCAinit = 10, | ||||
|     evCAnewMsg, | ||||
|     evCAsend | ||||
|     evCAnewRTR, | ||||
|     evCAsend4, | ||||
|     evCAsend2, | ||||
|     evCAsend1, | ||||
|     evCAsend0, | ||||
|     evCAsendRTR | ||||
| } CAN_EVENTS; | ||||
|  | ||||
| typedef void (*CAN_CALLBACK)(uint8_t, uint8_t, uint32_t); | ||||
| typedef void (*CAN_CALLBACK)(uint8_t, uint8_t, bool, uint32_t); | ||||
|  | ||||
| typedef struct { | ||||
|     CAN_STATES state; | ||||
| @@ -78,6 +83,12 @@ void CAN_newMsg(); | ||||
|  */ | ||||
| void CAN_Send(uint8_t idRecipient, uint8_t idMsg, uint32_t data); | ||||
|  | ||||
| void CAN_send_4_bytes(uint8_t idRecipient, uint8_t idMsg, uint8_t byte0, uint8_t byte1, uint8_t byte2, uint8_t byte3); | ||||
| void CAN_send_2_bytes(uint8_t idRecipient, uint8_t idMsg, uint16_t data); | ||||
| void CAN_send_1_byte(uint8_t idRecipient, uint8_t idMsg, uint8_t data); | ||||
| void CAN_send_0_byte(uint8_t idRecipient, uint8_t idMsg); | ||||
| void CAN_send_rtr(uint8_t idRecipient, uint8_t idMsg); | ||||
|  | ||||
| /*********** | ||||
|  * SETTERS * | ||||
|  ***********/ | ||||
|   | ||||
| @@ -51,17 +51,17 @@ OBJECTDIR=build/${CND_CONF}/${IMAGE_TYPE} | ||||
| DISTDIR=dist/${CND_CONF}/${IMAGE_TYPE} | ||||
|  | ||||
| # Source Files Quoted if spaced | ||||
| SOURCEFILES_QUOTED_IF_SPACED=app/factory/factory.c app/can_message.c app/kartculator.c app/eeprom.c app/drive.c board/led/led.c mcc_generated_files/interrupt_manager.c mcc_generated_files/tmr0.c mcc_generated_files/pin_manager.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/ecan.c mcc_generated_files/memory.c middleware/can_interface.c middleware/alive.c middleware/blinker.c xf/event.c xf/xf.c main.c | ||||
| SOURCEFILES_QUOTED_IF_SPACED=app/factory/factory.c app/can_message.c app/kartculator.c app/eeprom.c app/drive.c app/steering.c board/led/led.c mcc_generated_files/interrupt_manager.c mcc_generated_files/tmr0.c mcc_generated_files/pin_manager.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/ecan.c mcc_generated_files/memory.c middleware/can_interface.c middleware/alive.c middleware/blinker.c xf/event.c xf/xf.c main.c | ||||
|  | ||||
| # Object Files Quoted if spaced | ||||
| OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/app/factory/factory.p1 ${OBJECTDIR}/app/can_message.p1 ${OBJECTDIR}/app/kartculator.p1 ${OBJECTDIR}/app/eeprom.p1 ${OBJECTDIR}/app/drive.p1 ${OBJECTDIR}/board/led/led.p1 ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 ${OBJECTDIR}/mcc_generated_files/tmr0.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/ecan.p1 ${OBJECTDIR}/mcc_generated_files/memory.p1 ${OBJECTDIR}/middleware/can_interface.p1 ${OBJECTDIR}/middleware/alive.p1 ${OBJECTDIR}/middleware/blinker.p1 ${OBJECTDIR}/xf/event.p1 ${OBJECTDIR}/xf/xf.p1 ${OBJECTDIR}/main.p1 | ||||
| POSSIBLE_DEPFILES=${OBJECTDIR}/app/factory/factory.p1.d ${OBJECTDIR}/app/can_message.p1.d ${OBJECTDIR}/app/kartculator.p1.d ${OBJECTDIR}/app/eeprom.p1.d ${OBJECTDIR}/app/drive.p1.d ${OBJECTDIR}/board/led/led.p1.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d ${OBJECTDIR}/mcc_generated_files/ecan.p1.d ${OBJECTDIR}/mcc_generated_files/memory.p1.d ${OBJECTDIR}/middleware/can_interface.p1.d ${OBJECTDIR}/middleware/alive.p1.d ${OBJECTDIR}/middleware/blinker.p1.d ${OBJECTDIR}/xf/event.p1.d ${OBJECTDIR}/xf/xf.p1.d ${OBJECTDIR}/main.p1.d | ||||
| OBJECTFILES_QUOTED_IF_SPACED=${OBJECTDIR}/app/factory/factory.p1 ${OBJECTDIR}/app/can_message.p1 ${OBJECTDIR}/app/kartculator.p1 ${OBJECTDIR}/app/eeprom.p1 ${OBJECTDIR}/app/drive.p1 ${OBJECTDIR}/app/steering.p1 ${OBJECTDIR}/board/led/led.p1 ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 ${OBJECTDIR}/mcc_generated_files/tmr0.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/ecan.p1 ${OBJECTDIR}/mcc_generated_files/memory.p1 ${OBJECTDIR}/middleware/can_interface.p1 ${OBJECTDIR}/middleware/alive.p1 ${OBJECTDIR}/middleware/blinker.p1 ${OBJECTDIR}/xf/event.p1 ${OBJECTDIR}/xf/xf.p1 ${OBJECTDIR}/main.p1 | ||||
| POSSIBLE_DEPFILES=${OBJECTDIR}/app/factory/factory.p1.d ${OBJECTDIR}/app/can_message.p1.d ${OBJECTDIR}/app/kartculator.p1.d ${OBJECTDIR}/app/eeprom.p1.d ${OBJECTDIR}/app/drive.p1.d ${OBJECTDIR}/app/steering.p1.d ${OBJECTDIR}/board/led/led.p1.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d ${OBJECTDIR}/mcc_generated_files/ecan.p1.d ${OBJECTDIR}/mcc_generated_files/memory.p1.d ${OBJECTDIR}/middleware/can_interface.p1.d ${OBJECTDIR}/middleware/alive.p1.d ${OBJECTDIR}/middleware/blinker.p1.d ${OBJECTDIR}/xf/event.p1.d ${OBJECTDIR}/xf/xf.p1.d ${OBJECTDIR}/main.p1.d | ||||
|  | ||||
| # Object Files | ||||
| OBJECTFILES=${OBJECTDIR}/app/factory/factory.p1 ${OBJECTDIR}/app/can_message.p1 ${OBJECTDIR}/app/kartculator.p1 ${OBJECTDIR}/app/eeprom.p1 ${OBJECTDIR}/app/drive.p1 ${OBJECTDIR}/board/led/led.p1 ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 ${OBJECTDIR}/mcc_generated_files/tmr0.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/ecan.p1 ${OBJECTDIR}/mcc_generated_files/memory.p1 ${OBJECTDIR}/middleware/can_interface.p1 ${OBJECTDIR}/middleware/alive.p1 ${OBJECTDIR}/middleware/blinker.p1 ${OBJECTDIR}/xf/event.p1 ${OBJECTDIR}/xf/xf.p1 ${OBJECTDIR}/main.p1 | ||||
| OBJECTFILES=${OBJECTDIR}/app/factory/factory.p1 ${OBJECTDIR}/app/can_message.p1 ${OBJECTDIR}/app/kartculator.p1 ${OBJECTDIR}/app/eeprom.p1 ${OBJECTDIR}/app/drive.p1 ${OBJECTDIR}/app/steering.p1 ${OBJECTDIR}/board/led/led.p1 ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 ${OBJECTDIR}/mcc_generated_files/tmr0.p1 ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 ${OBJECTDIR}/mcc_generated_files/device_config.p1 ${OBJECTDIR}/mcc_generated_files/mcc.p1 ${OBJECTDIR}/mcc_generated_files/ecan.p1 ${OBJECTDIR}/mcc_generated_files/memory.p1 ${OBJECTDIR}/middleware/can_interface.p1 ${OBJECTDIR}/middleware/alive.p1 ${OBJECTDIR}/middleware/blinker.p1 ${OBJECTDIR}/xf/event.p1 ${OBJECTDIR}/xf/xf.p1 ${OBJECTDIR}/main.p1 | ||||
|  | ||||
| # Source Files | ||||
| SOURCEFILES=app/factory/factory.c app/can_message.c app/kartculator.c app/eeprom.c app/drive.c board/led/led.c mcc_generated_files/interrupt_manager.c mcc_generated_files/tmr0.c mcc_generated_files/pin_manager.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/ecan.c mcc_generated_files/memory.c middleware/can_interface.c middleware/alive.c middleware/blinker.c xf/event.c xf/xf.c main.c | ||||
| SOURCEFILES=app/factory/factory.c app/can_message.c app/kartculator.c app/eeprom.c app/drive.c app/steering.c board/led/led.c mcc_generated_files/interrupt_manager.c mcc_generated_files/tmr0.c mcc_generated_files/pin_manager.c mcc_generated_files/device_config.c mcc_generated_files/mcc.c mcc_generated_files/ecan.c mcc_generated_files/memory.c middleware/can_interface.c middleware/alive.c middleware/blinker.c xf/event.c xf/xf.c main.c | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -92,7 +92,7 @@ ${OBJECTDIR}/app/factory/factory.p1: app/factory/factory.c  nbproject/Makefile-$ | ||||
| 	@${MKDIR} "${OBJECTDIR}/app/factory"  | ||||
| 	@${RM} ${OBJECTDIR}/app/factory/factory.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/factory/factory.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/factory/factory.p1 app/factory/factory.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/factory/factory.p1 app/factory/factory.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/factory/factory.d ${OBJECTDIR}/app/factory/factory.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/factory/factory.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -100,7 +100,7 @@ ${OBJECTDIR}/app/can_message.p1: app/can_message.c  nbproject/Makefile-${CND_CON | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/can_message.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/can_message.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/can_message.p1 app/can_message.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/can_message.p1 app/can_message.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/can_message.d ${OBJECTDIR}/app/can_message.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/can_message.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -108,7 +108,7 @@ ${OBJECTDIR}/app/kartculator.p1: app/kartculator.c  nbproject/Makefile-${CND_CON | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/kartculator.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/kartculator.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/kartculator.p1 app/kartculator.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/kartculator.p1 app/kartculator.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/kartculator.d ${OBJECTDIR}/app/kartculator.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/kartculator.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -116,7 +116,7 @@ ${OBJECTDIR}/app/eeprom.p1: app/eeprom.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/eeprom.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/eeprom.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/eeprom.p1 app/eeprom.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/eeprom.p1 app/eeprom.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/eeprom.d ${OBJECTDIR}/app/eeprom.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/eeprom.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -124,15 +124,23 @@ ${OBJECTDIR}/app/drive.p1: app/drive.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/drive.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/drive.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/drive.p1 app/drive.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/drive.p1 app/drive.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/drive.d ${OBJECTDIR}/app/drive.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/drive.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| ${OBJECTDIR}/app/steering.p1: app/steering.c  nbproject/Makefile-${CND_CONF}.mk  | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/steering.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/steering.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/steering.p1 app/steering.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/steering.d ${OBJECTDIR}/app/steering.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/steering.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| ${OBJECTDIR}/board/led/led.p1: board/led/led.c  nbproject/Makefile-${CND_CONF}.mk  | ||||
| 	@${MKDIR} "${OBJECTDIR}/board/led"  | ||||
| 	@${RM} ${OBJECTDIR}/board/led/led.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/board/led/led.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/board/led/led.p1 board/led/led.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/board/led/led.p1 board/led/led.c  | ||||
| 	@-${MV} ${OBJECTDIR}/board/led/led.d ${OBJECTDIR}/board/led/led.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/board/led/led.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -140,7 +148,7 @@ ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1: mcc_generated_files/inter | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 mcc_generated_files/interrupt_manager.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 mcc_generated_files/interrupt_manager.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -148,7 +156,7 @@ ${OBJECTDIR}/mcc_generated_files/tmr0.p1: mcc_generated_files/tmr0.c  nbproject/ | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/tmr0.p1 mcc_generated_files/tmr0.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/tmr0.p1 mcc_generated_files/tmr0.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/tmr0.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -156,7 +164,7 @@ ${OBJECTDIR}/mcc_generated_files/pin_manager.p1: mcc_generated_files/pin_manager | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 mcc_generated_files/pin_manager.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 mcc_generated_files/pin_manager.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/pin_manager.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -164,7 +172,7 @@ ${OBJECTDIR}/mcc_generated_files/device_config.p1: mcc_generated_files/device_co | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/device_config.p1 mcc_generated_files/device_config.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/device_config.p1 mcc_generated_files/device_config.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/device_config.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/device_config.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -172,7 +180,7 @@ ${OBJECTDIR}/mcc_generated_files/mcc.p1: mcc_generated_files/mcc.c  nbproject/Ma | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/mcc.p1 mcc_generated_files/mcc.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/mcc.p1 mcc_generated_files/mcc.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/mcc.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/mcc.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -180,7 +188,7 @@ ${OBJECTDIR}/mcc_generated_files/ecan.p1: mcc_generated_files/ecan.c  nbproject/ | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/ecan.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/ecan.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/ecan.p1 mcc_generated_files/ecan.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/ecan.p1 mcc_generated_files/ecan.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/ecan.d ${OBJECTDIR}/mcc_generated_files/ecan.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/ecan.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -188,7 +196,7 @@ ${OBJECTDIR}/mcc_generated_files/memory.p1: mcc_generated_files/memory.c  nbproj | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/memory.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/memory.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/memory.p1 mcc_generated_files/memory.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/memory.p1 mcc_generated_files/memory.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/memory.d ${OBJECTDIR}/mcc_generated_files/memory.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/memory.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -196,7 +204,7 @@ ${OBJECTDIR}/middleware/can_interface.p1: middleware/can_interface.c  nbproject/ | ||||
| 	@${MKDIR} "${OBJECTDIR}/middleware"  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/can_interface.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/can_interface.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/middleware/can_interface.p1 middleware/can_interface.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/middleware/can_interface.p1 middleware/can_interface.c  | ||||
| 	@-${MV} ${OBJECTDIR}/middleware/can_interface.d ${OBJECTDIR}/middleware/can_interface.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/middleware/can_interface.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -204,7 +212,7 @@ ${OBJECTDIR}/middleware/alive.p1: middleware/alive.c  nbproject/Makefile-${CND_C | ||||
| 	@${MKDIR} "${OBJECTDIR}/middleware"  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/alive.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/alive.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/middleware/alive.p1 middleware/alive.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/middleware/alive.p1 middleware/alive.c  | ||||
| 	@-${MV} ${OBJECTDIR}/middleware/alive.d ${OBJECTDIR}/middleware/alive.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/middleware/alive.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -212,7 +220,7 @@ ${OBJECTDIR}/middleware/blinker.p1: middleware/blinker.c  nbproject/Makefile-${C | ||||
| 	@${MKDIR} "${OBJECTDIR}/middleware"  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/blinker.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/blinker.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/middleware/blinker.p1 middleware/blinker.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/middleware/blinker.p1 middleware/blinker.c  | ||||
| 	@-${MV} ${OBJECTDIR}/middleware/blinker.d ${OBJECTDIR}/middleware/blinker.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/middleware/blinker.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -220,7 +228,7 @@ ${OBJECTDIR}/xf/event.p1: xf/event.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}/xf"  | ||||
| 	@${RM} ${OBJECTDIR}/xf/event.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/xf/event.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/xf/event.p1 xf/event.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/xf/event.p1 xf/event.c  | ||||
| 	@-${MV} ${OBJECTDIR}/xf/event.d ${OBJECTDIR}/xf/event.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/xf/event.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -228,7 +236,7 @@ ${OBJECTDIR}/xf/xf.p1: xf/xf.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}/xf"  | ||||
| 	@${RM} ${OBJECTDIR}/xf/xf.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/xf/xf.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/xf/xf.p1 xf/xf.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/xf/xf.p1 xf/xf.c  | ||||
| 	@-${MV} ${OBJECTDIR}/xf/xf.d ${OBJECTDIR}/xf/xf.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/xf/xf.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -236,7 +244,7 @@ ${OBJECTDIR}/main.p1: main.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}"  | ||||
| 	@${RM} ${OBJECTDIR}/main.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/main.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/main.p1 main.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c  -D__DEBUG=1  -mdebugger=pickit3   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/main.p1 main.c  | ||||
| 	@-${MV} ${OBJECTDIR}/main.d ${OBJECTDIR}/main.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/main.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -245,7 +253,7 @@ ${OBJECTDIR}/app/factory/factory.p1: app/factory/factory.c  nbproject/Makefile-$ | ||||
| 	@${MKDIR} "${OBJECTDIR}/app/factory"  | ||||
| 	@${RM} ${OBJECTDIR}/app/factory/factory.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/factory/factory.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/factory/factory.p1 app/factory/factory.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/factory/factory.p1 app/factory/factory.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/factory/factory.d ${OBJECTDIR}/app/factory/factory.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/factory/factory.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -253,7 +261,7 @@ ${OBJECTDIR}/app/can_message.p1: app/can_message.c  nbproject/Makefile-${CND_CON | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/can_message.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/can_message.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/can_message.p1 app/can_message.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/can_message.p1 app/can_message.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/can_message.d ${OBJECTDIR}/app/can_message.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/can_message.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -261,7 +269,7 @@ ${OBJECTDIR}/app/kartculator.p1: app/kartculator.c  nbproject/Makefile-${CND_CON | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/kartculator.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/kartculator.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/kartculator.p1 app/kartculator.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/kartculator.p1 app/kartculator.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/kartculator.d ${OBJECTDIR}/app/kartculator.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/kartculator.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -269,7 +277,7 @@ ${OBJECTDIR}/app/eeprom.p1: app/eeprom.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/eeprom.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/eeprom.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/eeprom.p1 app/eeprom.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/eeprom.p1 app/eeprom.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/eeprom.d ${OBJECTDIR}/app/eeprom.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/eeprom.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -277,15 +285,23 @@ ${OBJECTDIR}/app/drive.p1: app/drive.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/drive.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/drive.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/app/drive.p1 app/drive.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/drive.p1 app/drive.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/drive.d ${OBJECTDIR}/app/drive.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/drive.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| ${OBJECTDIR}/app/steering.p1: app/steering.c  nbproject/Makefile-${CND_CONF}.mk  | ||||
| 	@${MKDIR} "${OBJECTDIR}/app"  | ||||
| 	@${RM} ${OBJECTDIR}/app/steering.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/app/steering.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/app/steering.p1 app/steering.c  | ||||
| 	@-${MV} ${OBJECTDIR}/app/steering.d ${OBJECTDIR}/app/steering.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/app/steering.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| ${OBJECTDIR}/board/led/led.p1: board/led/led.c  nbproject/Makefile-${CND_CONF}.mk  | ||||
| 	@${MKDIR} "${OBJECTDIR}/board/led"  | ||||
| 	@${RM} ${OBJECTDIR}/board/led/led.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/board/led/led.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/board/led/led.p1 board/led/led.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/board/led/led.p1 board/led/led.c  | ||||
| 	@-${MV} ${OBJECTDIR}/board/led/led.d ${OBJECTDIR}/board/led/led.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/board/led/led.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -293,7 +309,7 @@ ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1: mcc_generated_files/inter | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 mcc_generated_files/interrupt_manager.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1 mcc_generated_files/interrupt_manager.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.d ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/interrupt_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -301,7 +317,7 @@ ${OBJECTDIR}/mcc_generated_files/tmr0.p1: mcc_generated_files/tmr0.c  nbproject/ | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/tmr0.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/tmr0.p1 mcc_generated_files/tmr0.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/tmr0.p1 mcc_generated_files/tmr0.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/tmr0.d ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/tmr0.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -309,7 +325,7 @@ ${OBJECTDIR}/mcc_generated_files/pin_manager.p1: mcc_generated_files/pin_manager | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 mcc_generated_files/pin_manager.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/pin_manager.p1 mcc_generated_files/pin_manager.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/pin_manager.d ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/pin_manager.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -317,7 +333,7 @@ ${OBJECTDIR}/mcc_generated_files/device_config.p1: mcc_generated_files/device_co | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/device_config.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/device_config.p1 mcc_generated_files/device_config.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/device_config.p1 mcc_generated_files/device_config.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/device_config.d ${OBJECTDIR}/mcc_generated_files/device_config.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/device_config.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -325,7 +341,7 @@ ${OBJECTDIR}/mcc_generated_files/mcc.p1: mcc_generated_files/mcc.c  nbproject/Ma | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/mcc.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/mcc.p1 mcc_generated_files/mcc.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/mcc.p1 mcc_generated_files/mcc.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/mcc.d ${OBJECTDIR}/mcc_generated_files/mcc.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/mcc.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -333,7 +349,7 @@ ${OBJECTDIR}/mcc_generated_files/ecan.p1: mcc_generated_files/ecan.c  nbproject/ | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/ecan.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/ecan.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/ecan.p1 mcc_generated_files/ecan.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/ecan.p1 mcc_generated_files/ecan.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/ecan.d ${OBJECTDIR}/mcc_generated_files/ecan.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/ecan.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -341,7 +357,7 @@ ${OBJECTDIR}/mcc_generated_files/memory.p1: mcc_generated_files/memory.c  nbproj | ||||
| 	@${MKDIR} "${OBJECTDIR}/mcc_generated_files"  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/memory.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/mcc_generated_files/memory.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/memory.p1 mcc_generated_files/memory.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/mcc_generated_files/memory.p1 mcc_generated_files/memory.c  | ||||
| 	@-${MV} ${OBJECTDIR}/mcc_generated_files/memory.d ${OBJECTDIR}/mcc_generated_files/memory.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/mcc_generated_files/memory.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -349,7 +365,7 @@ ${OBJECTDIR}/middleware/can_interface.p1: middleware/can_interface.c  nbproject/ | ||||
| 	@${MKDIR} "${OBJECTDIR}/middleware"  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/can_interface.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/can_interface.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/middleware/can_interface.p1 middleware/can_interface.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/middleware/can_interface.p1 middleware/can_interface.c  | ||||
| 	@-${MV} ${OBJECTDIR}/middleware/can_interface.d ${OBJECTDIR}/middleware/can_interface.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/middleware/can_interface.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -357,7 +373,7 @@ ${OBJECTDIR}/middleware/alive.p1: middleware/alive.c  nbproject/Makefile-${CND_C | ||||
| 	@${MKDIR} "${OBJECTDIR}/middleware"  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/alive.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/alive.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/middleware/alive.p1 middleware/alive.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/middleware/alive.p1 middleware/alive.c  | ||||
| 	@-${MV} ${OBJECTDIR}/middleware/alive.d ${OBJECTDIR}/middleware/alive.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/middleware/alive.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -365,7 +381,7 @@ ${OBJECTDIR}/middleware/blinker.p1: middleware/blinker.c  nbproject/Makefile-${C | ||||
| 	@${MKDIR} "${OBJECTDIR}/middleware"  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/blinker.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/middleware/blinker.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/middleware/blinker.p1 middleware/blinker.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/middleware/blinker.p1 middleware/blinker.c  | ||||
| 	@-${MV} ${OBJECTDIR}/middleware/blinker.d ${OBJECTDIR}/middleware/blinker.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/middleware/blinker.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -373,7 +389,7 @@ ${OBJECTDIR}/xf/event.p1: xf/event.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}/xf"  | ||||
| 	@${RM} ${OBJECTDIR}/xf/event.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/xf/event.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/xf/event.p1 xf/event.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/xf/event.p1 xf/event.c  | ||||
| 	@-${MV} ${OBJECTDIR}/xf/event.d ${OBJECTDIR}/xf/event.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/xf/event.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -381,7 +397,7 @@ ${OBJECTDIR}/xf/xf.p1: xf/xf.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}/xf"  | ||||
| 	@${RM} ${OBJECTDIR}/xf/xf.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/xf/xf.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/xf/xf.p1 xf/xf.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/xf/xf.p1 xf/xf.c  | ||||
| 	@-${MV} ${OBJECTDIR}/xf/xf.d ${OBJECTDIR}/xf/xf.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/xf/xf.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -389,7 +405,7 @@ ${OBJECTDIR}/main.p1: main.c  nbproject/Makefile-${CND_CONF}.mk | ||||
| 	@${MKDIR} "${OBJECTDIR}"  | ||||
| 	@${RM} ${OBJECTDIR}/main.p1.d  | ||||
| 	@${RM} ${OBJECTDIR}/main.p1  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o ${OBJECTDIR}/main.p1 main.c  | ||||
| 	${MP_CC} $(MP_EXTRA_CC_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -c   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -DXPRJ_default=$(CND_CONF)  -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits $(COMPARISON_BUILD)  -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     -o ${OBJECTDIR}/main.p1 main.c  | ||||
| 	@-${MV} ${OBJECTDIR}/main.d ${OBJECTDIR}/main.p1.d  | ||||
| 	@${FIXDEPS} ${OBJECTDIR}/main.p1.d $(SILENT) -rsi ${MP_CC_DIR}../   | ||||
| 	 | ||||
| @@ -412,13 +428,13 @@ endif | ||||
| ifeq ($(TYPE_IMAGE), DEBUG_RUN) | ||||
| ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk     | ||||
| 	@${MKDIR} ${DISTDIR}  | ||||
| 	${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.map  -D__DEBUG=1  -mdebugger=pickit3  -DXPRJ_default=$(CND_CONF)  -Wl,--defsym=__MPLAB_BUILD=1   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto        $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      | ||||
| 	${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.map  -D__DEBUG=1  -mdebugger=pickit3  -DXPRJ_default=$(CND_CONF)  -Wl,--defsym=__MPLAB_BUILD=1   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto        $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      | ||||
| 	@${RM} ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.hex  | ||||
| 	 | ||||
| else | ||||
| ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${OUTPUT_SUFFIX}: ${OBJECTFILES}  nbproject/Makefile-${CND_CONF}.mk    | ||||
| 	@${MKDIR} ${DISTDIR}  | ||||
| 	${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.map  -DXPRJ_default=$(CND_CONF)  -Wl,--defsym=__MPLAB_BUILD=1   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      | ||||
| 	${MP_CC} $(MP_EXTRA_LD_PRE) -mcpu=$(MP_PROCESSOR_OPTION) -Wl,-Map=${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.map  -DXPRJ_default=$(CND_CONF)  -Wl,--defsym=__MPLAB_BUILD=1   -mdfp="${DFP_DIR}/xc8"  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file  -ginhx32 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits -std=c99 -gdwarf-3 -mstack=reentrant:auto:auto:auto     $(COMPARISON_BUILD) -Wl,--memorysummary,${DISTDIR}/memoryfile.xml -o ${DISTDIR}/306-controller_interface.X.${IMAGE_TYPE}.${DEBUGGABLE_SUFFIX}  ${OBJECTFILES_QUOTED_IF_SPACED}      | ||||
| 	 | ||||
| endif | ||||
|  | ||||
|   | ||||
| @@ -34,4 +34,4 @@ MP_CC_DIR="C:\Program Files\Microchip\xc8\v2.41\bin" | ||||
| MP_AS_DIR="C:\Program Files\Microchip\xc8\v2.41\bin" | ||||
| MP_LD_DIR="C:\Program Files\Microchip\xc8\v2.41\bin" | ||||
| MP_AR_DIR="C:\Program Files\Microchip\xc8\v2.41\bin" | ||||
| DFP_DIR=C:/Users/remi.heredero/.mchp_packs/Microchip/PIC18F-K_DFP/1.7.134 | ||||
| DFP_DIR=C:/Program Files/Microchip/MPLABX/v6.15/packs/Microchip/PIC18F-K_DFP/1.11.281 | ||||
|   | ||||
| @@ -11,6 +11,7 @@ | ||||
|         <itemPath>app/kartculator.h</itemPath> | ||||
|         <itemPath>app/eeprom.h</itemPath> | ||||
|         <itemPath>app/drive.h</itemPath> | ||||
|         <itemPath>app/steering.h</itemPath> | ||||
|       </logicalFolder> | ||||
|       <logicalFolder name="board" displayName="board" projectFiles="true"> | ||||
|         <itemPath>board/led/led.h</itemPath> | ||||
| @@ -50,6 +51,7 @@ | ||||
|         <itemPath>app/kartculator.c</itemPath> | ||||
|         <itemPath>app/eeprom.c</itemPath> | ||||
|         <itemPath>app/drive.c</itemPath> | ||||
|         <itemPath>app/steering.c</itemPath> | ||||
|       </logicalFolder> | ||||
|       <logicalFolder name="board" displayName="board" projectFiles="true"> | ||||
|         <itemPath>board/led/led.c</itemPath> | ||||
| @@ -101,7 +103,7 @@ | ||||
|         <platform>3</platform> | ||||
|       </toolsSet> | ||||
|       <packs> | ||||
|         <pack name="PIC18F-K_DFP" vendor="Microchip" version="1.7.134"/> | ||||
|         <pack name="PIC18F-K_DFP" vendor="Microchip" version="1.11.281"/> | ||||
|       </packs> | ||||
|       <ScriptingSettings> | ||||
|       </ScriptingSettings> | ||||
| @@ -245,7 +247,7 @@ | ||||
|         <property key="programoptions.preservedataflash" value="false"/> | ||||
|         <property key="programoptions.preservedataflash.ranges" | ||||
|                   value="${programoptions.preservedataflash.ranges}"/> | ||||
|         <property key="programoptions.preserveeeprom" value="true"/> | ||||
|         <property key="programoptions.preserveeeprom" value="false"/> | ||||
|         <property key="programoptions.preserveeeprom.ranges" value="310000-3103ff"/> | ||||
|         <property key="programoptions.preserveprogram.ranges" value=""/> | ||||
|         <property key="programoptions.preserveprogramrange" value="false"/> | ||||
| @@ -269,6 +271,7 @@ | ||||
|         <property key="debugoptions.useswbreakpoints" value="false"/> | ||||
|         <property key="event.recorder.enabled" value="false"/> | ||||
|         <property key="event.recorder.scvd.files" value=""/> | ||||
|         <property key="firmware.download.all" value="false"/> | ||||
|         <property key="hwtoolclock.frcindebug" value="false"/> | ||||
|         <property key="lastid" value=""/> | ||||
|         <property key="memories.aux" value="false"/> | ||||
| @@ -292,7 +295,7 @@ | ||||
|         <property key="programoptions.preservedataflash" value="false"/> | ||||
|         <property key="programoptions.preservedataflash.ranges" | ||||
|                   value="${programoptions.preservedataflash.ranges}"/> | ||||
|         <property key="programoptions.preserveeeprom" value="true"/> | ||||
|         <property key="programoptions.preserveeeprom" value="false"/> | ||||
|         <property key="programoptions.preserveeeprom.ranges" value="310000-3103ff"/> | ||||
|         <property key="programoptions.preserveprogram.ranges" value=""/> | ||||
|         <property key="programoptions.preserveprogramrange" value="false"/> | ||||
| @@ -322,7 +325,7 @@ | ||||
|         <property key="stack-size-high" value="auto"/> | ||||
|         <property key="stack-size-low" value="auto"/> | ||||
|         <property key="stack-size-main" value="auto"/> | ||||
|         <property key="stack-type" value="compiled"/> | ||||
|         <property key="stack-type" value="reentrant"/> | ||||
|         <property key="user-pack-device-support" value=""/> | ||||
|         <property key="wpo-lto" value="false"/> | ||||
|       </XC8-config-global> | ||||
|   | ||||
							
								
								
									
										0
									
								
								306-controller_interface.X/queuelogs/debugtool
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								306-controller_interface.X/queuelogs/debugtool
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -27,7 +27,7 @@ typedef struct Timer_        // timer structure | ||||
| /*----------------------------------------------------------------------------*/ | ||||
| /* depending on usage, change MAXTIMER and MAXEVENT                           */ | ||||
| /*----------------------------------------------------------------------------*/ | ||||
| #define MAXTIMER 15          // number of timers in our system | ||||
| #define MAXTIMER 25          // number of timers in our system | ||||
| #define MAXEVENT 20         // number of events in our system  | ||||
|  | ||||
| #define NULLTIMER 0         // no value for time | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								UML/can.pdf
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								UML/can.pdf
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										14
									
								
								UML/can.puml
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								UML/can.puml
									
									
									
									
									
								
							| @@ -4,8 +4,8 @@ actor CAN_BUS as bus | ||||
| participant interrupt as ISR | ||||
| queue XF as xf | ||||
| participant ecan as ecan | ||||
| participant can_interface as can | ||||
| control can_message as msg | ||||
| participant canInterface as can | ||||
| control canMessageController as msg | ||||
|  | ||||
|  | ||||
| bus -\\ ISR ++  : can message | ||||
| @@ -14,14 +14,14 @@ can -> ecan : read | ||||
| ecan --> can : message | ||||
| can -> xf : POST XF | ||||
| destroy ISR | ||||
|     group clock xf [every 10ms] | ||||
| xf o-> can : receiveCan | ||||
| can -> msg : processIncome | ||||
|     group TICK XF | ||||
| xf o-> can : receiveCan() | ||||
| can -> msg : processIncoming() | ||||
| msg -> can : create message | ||||
| can -> xf : POST XF | ||||
|     end | ||||
|     group clock xf [every 10ms] | ||||
| xf o-> can : sendCan | ||||
|     group TICK XF | ||||
| xf o-> can : sendCan() | ||||
| can -> ecan : write | ||||
| ecan -\\ bus : can message | ||||
|     end | ||||
|   | ||||
							
								
								
									
										47
									
								
								UML/can.uxf
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								UML/can.uxf
									
									
									
									
									
								
							| @@ -5,9 +5,9 @@ | ||||
|     <id>UMLNote</id> | ||||
|     <coordinates> | ||||
|       <x>645</x> | ||||
|       <y>255</y> | ||||
|       <w>675</w> | ||||
|       <h>525</h> | ||||
|       <y>75</y> | ||||
|       <w>750</w> | ||||
|       <h>765</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>_*How to use CAN interface*_ | ||||
|  | ||||
| @@ -23,19 +23,30 @@ CAN_setSender(idSender); | ||||
| CAN_startBehaviour(); | ||||
|  | ||||
| *Somewhere for process input can message:* | ||||
| void receiveCan(uint8_t idSender, uint8_t idMsg, uint32_t canData) { | ||||
| void receiveCan(uint8_t idSender, uint8_t idMsg, bool rtr, uint32_t canData) { | ||||
|     ..... | ||||
| } | ||||
|  | ||||
| *For send can message: * | ||||
| CAN_sendCanMsg(uint8_t idRecipient, uint8_t idMsg, uint32_t data);</panel_attributes> | ||||
| CAN_Send(uint8_t idRecipient, uint8_t idMsg, uint32_t data); | ||||
| CAN_send_4_bytes( | ||||
|         uint8_t idRecipient, | ||||
|         uint8_t idMsg, | ||||
|         uint8_t byte0, | ||||
|         uint8_t byte1, | ||||
|         uint8_t byte2, | ||||
|         uint8_t byte3); | ||||
| CAN_send_2_bytes(uint8_t idRecipient, uint8_t idMsg, uint16_t data); | ||||
| CAN_send_1_byte(uint8_t idRecipient, uint8_t idMsg, uint8_t data); | ||||
| CAN_send_0_byte(uint8_t idRecipient, uint8_t idMsg); | ||||
| CAN_send_rtr(uint8_t idRecipient, uint8_t idMsg);</panel_attributes> | ||||
|     <additional_attributes/> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>Relation</id> | ||||
|     <coordinates> | ||||
|       <x>360</x> | ||||
|       <y>330</y> | ||||
|       <x>375</x> | ||||
|       <y>255</y> | ||||
|       <w>90</w> | ||||
|       <h>135</h> | ||||
|     </coordinates> | ||||
| @@ -47,8 +58,8 @@ evInit | ||||
|   <element> | ||||
|     <id>UMLSpecialState</id> | ||||
|     <coordinates> | ||||
|       <x>360</x> | ||||
|       <y>315</y> | ||||
|       <x>375</x> | ||||
|       <y>240</y> | ||||
|       <w>30</w> | ||||
|       <h>30</h> | ||||
|     </coordinates> | ||||
| @@ -58,37 +69,37 @@ evInit | ||||
|   <element> | ||||
|     <id>UMLState</id> | ||||
|     <coordinates> | ||||
|       <x>240</x> | ||||
|       <y>435</y> | ||||
|       <x>255</x> | ||||
|       <y>360</y> | ||||
|       <w>270</w> | ||||
|       <h>90</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>STCA_PROCESS</panel_attributes> | ||||
|     <panel_attributes>PROCESS</panel_attributes> | ||||
|     <additional_attributes/> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>Relation</id> | ||||
|     <coordinates> | ||||
|       <x>450</x> | ||||
|       <y>465</y> | ||||
|       <x>465</x> | ||||
|       <y>390</y> | ||||
|       <w>180</w> | ||||
|       <h>180</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>lt=-> | ||||
| m1=evCAsend | ||||
| m1=evSend | ||||
| m1=\n/sendCan()</panel_attributes> | ||||
|     <additional_attributes>10.0;40.0;10.0;100.0;100.0;100.0;100.0;10.0;40.0;10.0</additional_attributes> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>Relation</id> | ||||
|     <coordinates> | ||||
|       <x>135</x> | ||||
|       <y>465</y> | ||||
|       <x>150</x> | ||||
|       <y>390</y> | ||||
|       <w>300</w> | ||||
|       <h>180</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>lt=-> | ||||
| m1= evCAnewMsg | ||||
| m1= evNewMsg | ||||
| m1= \n/receiveCan() | ||||
| </panel_attributes> | ||||
|     <additional_attributes>100.0;40.0;100.0;100.0;10.0;100.0;10.0;10.0;70.0;10.0</additional_attributes> | ||||
|   | ||||
| @@ -64,8 +64,8 @@ m1= evPollTorque\n/sendTorque | ||||
|     </coordinates> | ||||
|     <panel_attributes>WAIT | ||||
| -- | ||||
| ALIVE_emitBorn(ALjoy(), 0, 0); | ||||
| ALIVE_emitReady(ALjoy(), 100, 0); | ||||
| ALIVE_emitBorn(ALdrive(), 0, 0); | ||||
| ALIVE_emitReady(ALdrive(), 100, 0); | ||||
| setAliveTime</panel_attributes> | ||||
|     <additional_attributes/> | ||||
|   </element> | ||||
|   | ||||
							
								
								
									
										124
									
								
								UML/steering.uxf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								UML/steering.uxf
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,124 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <diagram program="umlet" version="15.0.0"> | ||||
|   <zoom_level>15</zoom_level> | ||||
|   <element> | ||||
|     <id>Relation</id> | ||||
|     <coordinates> | ||||
|       <x>660</x> | ||||
|       <y>90</y> | ||||
|       <w>210</w> | ||||
|       <h>120</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>lt=-> | ||||
| evInit | ||||
| /startAliveChecker | ||||
| </panel_attributes> | ||||
|     <additional_attributes>10.0;10.0;10.0;60.0</additional_attributes> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>UMLSpecialState</id> | ||||
|     <coordinates> | ||||
|       <x>660</x> | ||||
|       <y>75</y> | ||||
|       <w>30</w> | ||||
|       <h>30</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>type=initial</panel_attributes> | ||||
|     <additional_attributes/> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>UMLState</id> | ||||
|     <coordinates> | ||||
|       <x>540</x> | ||||
|       <y>405</y> | ||||
|       <w>270</w> | ||||
|       <h>105</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>RUN | ||||
| -- | ||||
| /entry: LED ON | ||||
| -- | ||||
| emitPollDirEv</panel_attributes> | ||||
|     <additional_attributes/> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>UMLState</id> | ||||
|     <coordinates> | ||||
|       <x>480</x> | ||||
|       <y>180</y> | ||||
|       <w>390</w> | ||||
|       <h>135</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>WAIT | ||||
| -- | ||||
| ALIVE_emitBorn(ALsteering(), 0, 0); | ||||
| ALIVE_emitReady(ALsteering(), 100, 0); | ||||
| setAliveTime</panel_attributes> | ||||
|     <additional_attributes/> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>Relation</id> | ||||
|     <coordinates> | ||||
|       <x>660</x> | ||||
|       <y>300</y> | ||||
|       <w>120</w> | ||||
|       <h>135</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>lt=-> | ||||
| m1=evStart\n(onWait) | ||||
| </panel_attributes> | ||||
|     <additional_attributes>10.0;10.0;10.0;70.0</additional_attributes> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>Relation</id> | ||||
|     <coordinates> | ||||
|       <x>735</x> | ||||
|       <y>450</y> | ||||
|       <w>195</w> | ||||
|       <h>180</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>lt=-> | ||||
| m1= evPollDir\n/sendDir | ||||
| </panel_attributes> | ||||
|     <additional_attributes>10.0;40.0;10.0;100.0;110.0;100.0;110.0;10.0;50.0;10.0</additional_attributes> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>Relation</id> | ||||
|     <coordinates> | ||||
|       <x>390</x> | ||||
|       <y>240</y> | ||||
|       <w>345</w> | ||||
|       <h>555</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>lt=-> | ||||
| m1= evResurrect\n(onBorn) | ||||
| </panel_attributes> | ||||
|     <additional_attributes>130.0;300.0;130.0;350.0;10.0;350.0;10.0;10.0;60.0;10.0</additional_attributes> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>UMLState</id> | ||||
|     <coordinates> | ||||
|       <x>450</x> | ||||
|       <y>600</y> | ||||
|       <w>270</w> | ||||
|       <h>90</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>DEAD | ||||
| -- | ||||
| /entry: LED OFF</panel_attributes> | ||||
|     <additional_attributes/> | ||||
|   </element> | ||||
|   <element> | ||||
|     <id>Relation</id> | ||||
|     <coordinates> | ||||
|       <x>570</x> | ||||
|       <y>495</y> | ||||
|       <w>135</w> | ||||
|       <h>135</h> | ||||
|     </coordinates> | ||||
|     <panel_attributes>lt=-> | ||||
| m1=evStop\n(onDead) | ||||
| </panel_attributes> | ||||
|     <additional_attributes>10.0;10.0;10.0;70.0</additional_attributes> | ||||
|   </element> | ||||
| </diagram> | ||||
							
								
								
									
										2842
									
								
								binary_files/v1_0_0.hex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2842
									
								
								binary_files/v1_0_0.hex
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2842
									
								
								binary_files/v1_0_1.hex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2842
									
								
								binary_files/v1_0_1.hex
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2843
									
								
								binary_files/v1_0_2-without_set_center.hex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2843
									
								
								binary_files/v1_0_2-without_set_center.hex
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2853
									
								
								binary_files/v1_1_0-controller_alive_and_wait_604-no_curves.hex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2853
									
								
								binary_files/v1_1_0-controller_alive_and_wait_604-no_curves.hex
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2974
									
								
								binary_files/v1_2_0-curve_and_headlights.hex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2974
									
								
								binary_files/v1_2_0-curve_and_headlights.hex
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2972
									
								
								binary_files/v1_2_1-led.hex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2972
									
								
								binary_files/v1_2_1-led.hex
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2985
									
								
								binary_files/v1_3_0-boost_by_pb.hex
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2985
									
								
								binary_files/v1_3_0-boost_by_pb.hex
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -18,7 +18,7 @@ | ||||
|     <Window_Position> | ||||
|       <Visibility>SHOWNORMAL</Visibility> | ||||
|       <WindowPlacement>HIDE</WindowPlacement> | ||||
|       <Top>655</Top> | ||||
|       <Top>765</Top> | ||||
|       <Left>0</Left> | ||||
|       <Bottom>874</Bottom> | ||||
|       <Right>1532</Right> | ||||
| @@ -46,10 +46,10 @@ | ||||
|       <Window_Position> | ||||
|         <Visibility>SHOWNORMAL</Visibility> | ||||
|         <WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement> | ||||
|         <Top>517</Top> | ||||
|         <Left>489</Left> | ||||
|         <Bottom>1014</Bottom> | ||||
|         <Right>911</Right> | ||||
|         <Top>291</Top> | ||||
|         <Left>403</Left> | ||||
|         <Bottom>788</Bottom> | ||||
|         <Right>825</Right> | ||||
|       </Window_Position> | ||||
|     </Bus_Statistics> | ||||
|     <J1939_Database_Files/> | ||||
| @@ -326,9 +326,8 @@ | ||||
|     <CAN_Signal_Watch> | ||||
|       <Message> | ||||
|         <Id>529</Id> | ||||
|         <Signal>posY</Signal> | ||||
|         <Signal>button</Signal> | ||||
|         <Signal>posX</Signal> | ||||
|         <Signal>posY</Signal> | ||||
|       </Message> | ||||
|       <Message> | ||||
|         <Id>1040</Id> | ||||
| @@ -343,33 +342,36 @@ | ||||
|         <Signal>Vehiclespeed</Signal> | ||||
|       </Message> | ||||
|       <Message> | ||||
|         <Id>336</Id> | ||||
|         <Signal>HOMING</Signal> | ||||
|         <Signal>RESET</Signal> | ||||
|         <Signal>SET_CENTER</Signal> | ||||
|         <Signal>ALIVE_TIME</Signal> | ||||
|         <Id>337</Id> | ||||
|         <Signal>SteeringPosition</Signal> | ||||
|       </Message> | ||||
|       <Message> | ||||
|         <Id>82</Id> | ||||
|         <Signal>CENTER_POS</Signal> | ||||
|         <Id>1311</Id> | ||||
|       </Message> | ||||
|       <Message> | ||||
|         <Id>1298</Id> | ||||
|         <Signal>POSITION</Signal> | ||||
|         <Id>1294</Id> | ||||
|         <Signal>brake</Signal> | ||||
|       </Message> | ||||
|       <Message> | ||||
|         <Id>1540</Id> | ||||
|       </Message> | ||||
|       <Message> | ||||
|         <Id>260</Id> | ||||
|         <Signal>headlights</Signal> | ||||
|       </Message> | ||||
|       <Window_Position> | ||||
|         <Visibility>SHOWNORMAL</Visibility> | ||||
|         <WindowPlacement>HIDE</WindowPlacement> | ||||
|         <Top>165</Top> | ||||
|         <Left>599</Left> | ||||
|         <Right>1089</Right> | ||||
|         <Bottom>452</Bottom> | ||||
|         <Top>186</Top> | ||||
|         <Left>513</Left> | ||||
|         <Right>960</Right> | ||||
|         <Bottom>747</Bottom> | ||||
|       </Window_Position> | ||||
|       <COLUMN_WIDTH> | ||||
|         <MESSAGE_COLUMN>147</MESSAGE_COLUMN> | ||||
|         <Raw_Val_Column>94</Raw_Val_Column> | ||||
|         <Physical_Val_Column>139</Physical_Val_Column> | ||||
|         <Signal_Column>94</Signal_Column> | ||||
|         <MESSAGE_COLUMN>86</MESSAGE_COLUMN> | ||||
|         <Raw_Val_Column>86</Raw_Val_Column> | ||||
|         <Physical_Val_Column>172</Physical_Val_Column> | ||||
|         <Signal_Column>86</Signal_Column> | ||||
|       </COLUMN_WIDTH> | ||||
|     </CAN_Signal_Watch> | ||||
|     <J1939_Signal_Watch> | ||||
| @@ -421,26 +423,26 @@ | ||||
|         <Display_Type>NORMAL</Display_Type> | ||||
|       </GRAPH_PARAMETERS> | ||||
|       <GRAPH_ELEMENT> | ||||
|         <Message_ID>321</Message_ID> | ||||
|         <Message_Name>DRIVE_POWER</Message_Name> | ||||
|         <Message_ID>1586</Message_ID> | ||||
|         <Message_Name>DISPLAY_CURRENT</Message_Name> | ||||
|         <Frame_Format/> | ||||
|         <Element_Name>Power</Element_Name> | ||||
|         <Element_Name>BatteryCurrent</Element_Name> | ||||
|         <Value_Type>Physical</Value_Type> | ||||
|         <Line_Type>SOLID</Line_Type> | ||||
|         <Line_Color>16711680</Line_Color> | ||||
|         <Point_Type>1</Point_Type> | ||||
|         <Point_Color>8388736</Point_Color> | ||||
|         <Line_Color>65280</Line_Color> | ||||
|         <Point_Type>2</Point_Type> | ||||
|         <Point_Color>8421376</Point_Color> | ||||
|         <Visibility>TRUE</Visibility> | ||||
|         <Enable>TRUE</Enable> | ||||
|         <Display_Type>NORMAL</Display_Type> | ||||
|       </GRAPH_ELEMENT> | ||||
|       <Window_Position> | ||||
|         <Visibility>SHOWNORMAL</Visibility> | ||||
|         <Window_Position>SHOWNORMAL</Window_Position> | ||||
|         <Top>291</Top> | ||||
|         <Left>205</Left> | ||||
|         <Bottom>957</Bottom> | ||||
|         <Right>1530</Right> | ||||
|         <Window_Position>HIDE</Window_Position> | ||||
|         <Top>39</Top> | ||||
|         <Left>74</Left> | ||||
|         <Bottom>586</Bottom> | ||||
|         <Right>1399</Right> | ||||
|       </Window_Position> | ||||
|       <Splitter_Window_Col_0> | ||||
|         <CxIdeal>479</CxIdeal> | ||||
| @@ -451,11 +453,11 @@ | ||||
|         <CxMin>0</CxMin> | ||||
|       </Splitter_Window_Col_1> | ||||
|       <Splitter_Window_Row_0> | ||||
|         <CxIdeal>308</CxIdeal> | ||||
|         <CxIdeal>275</CxIdeal> | ||||
|         <CxMin>0</CxMin> | ||||
|       </Splitter_Window_Row_0> | ||||
|       <Splitter_Window_Row_1> | ||||
|         <CxIdeal>308</CxIdeal> | ||||
|         <CxIdeal>222</CxIdeal> | ||||
|         <CxMin>0</CxMin> | ||||
|       </Splitter_Window_Row_1> | ||||
|     </CAN_Signal_Graph> | ||||
| @@ -490,9 +492,9 @@ | ||||
|     </J1939_Simulated_Systems> | ||||
|     <CAN_Replay/> | ||||
|     <CAN_Message_Window> | ||||
|       <Append_Buffer_Size>1489464112</Append_Buffer_Size> | ||||
|       <Overwrite_Buffer_Size>26186104</Overwrite_Buffer_Size> | ||||
|       <Display_Update_Time>1489464084</Display_Update_Time> | ||||
|       <Append_Buffer_Size>1474521904</Append_Buffer_Size> | ||||
|       <Overwrite_Buffer_Size>23911192</Overwrite_Buffer_Size> | ||||
|       <Display_Update_Time>1474521876</Display_Update_Time> | ||||
|       <Filter IsEnabled="0">display</Filter> | ||||
|       <Filter IsEnabled="0">drive</Filter> | ||||
|       <Filter IsEnabled="0">joy</Filter> | ||||
| @@ -559,18 +561,18 @@ | ||||
|       <Window_Position> | ||||
|         <Visibility>SHOWNORMAL</Visibility> | ||||
|         <WindowPlacement>SETMINPOSITION</WindowPlacement> | ||||
|         <Top>0</Top> | ||||
|         <Top>3</Top> | ||||
|         <Left>0</Left> | ||||
|         <Bottom>810</Bottom> | ||||
|         <Bottom>627</Bottom> | ||||
|         <Right>606</Right> | ||||
|       </Window_Position> | ||||
|       <Interpretation_Window_Position> | ||||
|         <Visibility>SHOWNORMAL</Visibility> | ||||
|         <WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement> | ||||
|         <Top>173</Top> | ||||
|         <Left>10</Left> | ||||
|         <Bottom>451</Bottom> | ||||
|         <Right>359</Right> | ||||
|         <Top>181</Top> | ||||
|         <Left>12</Left> | ||||
|         <Bottom>459</Bottom> | ||||
|         <Right>361</Right> | ||||
|       </Interpretation_Window_Position> | ||||
|     </CAN_Message_Window> | ||||
|     <J1939_Message_Window> | ||||
| @@ -650,7 +652,7 @@ | ||||
|         <ID>Data Byte(s)</ID> | ||||
|         <Order>13</Order> | ||||
|         <IsVisible>1</IsVisible> | ||||
|         <Width>720</Width> | ||||
|         <Width>662</Width> | ||||
|       </COLUMN> | ||||
|       <IsHex>1</IsHex> | ||||
|       <IsAppend>1</IsAppend> | ||||
| @@ -662,15 +664,15 @@ | ||||
|         <Top>0</Top> | ||||
|         <Left>0</Left> | ||||
|         <Bottom>549</Bottom> | ||||
|         <Right>1614</Right> | ||||
|         <Right>1556</Right> | ||||
|       </Window_Position> | ||||
|       <Interpretation_Window_Position> | ||||
|         <Visibility>SHOWNORMAL</Visibility> | ||||
|         <WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement> | ||||
|         <Top>173</Top> | ||||
|         <Left>10</Left> | ||||
|         <Bottom>451</Bottom> | ||||
|         <Right>359</Right> | ||||
|         <Top>181</Top> | ||||
|         <Left>12</Left> | ||||
|         <Bottom>459</Bottom> | ||||
|         <Right>361</Right> | ||||
|       </Interpretation_Window_Position> | ||||
|     </J1939_Message_Window> | ||||
|     <LIN_Message_Window> | ||||
| @@ -735,7 +737,7 @@ | ||||
|         <ID>Checksum</ID> | ||||
|         <Order>10</Order> | ||||
|         <IsVisible>1</IsVisible> | ||||
|         <Width>734</Width> | ||||
|         <Width>676</Width> | ||||
|       </COLUMN> | ||||
|       <IsHex>1</IsHex> | ||||
|       <IsAppend>1</IsAppend> | ||||
| @@ -747,25 +749,25 @@ | ||||
|         <Top>0</Top> | ||||
|         <Left>0</Left> | ||||
|         <Bottom>549</Bottom> | ||||
|         <Right>1614</Right> | ||||
|         <Right>1556</Right> | ||||
|       </Window_Position> | ||||
|       <Interpretation_Window_Position> | ||||
|         <Visibility>SHOWNORMAL</Visibility> | ||||
|         <WindowPlacement>RESTORETOMAXIMIZED</WindowPlacement> | ||||
|         <Top>173</Top> | ||||
|         <Left>10</Left> | ||||
|         <Bottom>451</Bottom> | ||||
|         <Right>359</Right> | ||||
|         <Top>181</Top> | ||||
|         <Left>12</Left> | ||||
|         <Bottom>459</Bottom> | ||||
|         <Right>361</Right> | ||||
|       </Interpretation_Window_Position> | ||||
|     </LIN_Message_Window> | ||||
|     <CAN_Tx_Window> | ||||
|       <Window_Position> | ||||
|         <Visibility>SHOWNORMAL</Visibility> | ||||
|         <WindowPlacement>SETMINPOSITION</WindowPlacement> | ||||
|         <Top>3</Top> | ||||
|         <Left>1052</Left> | ||||
|         <Bottom>658</Bottom> | ||||
|         <Right>1912</Right> | ||||
|         <Top>4</Top> | ||||
|         <Left>648</Left> | ||||
|         <Bottom>659</Bottom> | ||||
|         <Right>1508</Right> | ||||
|       </Window_Position> | ||||
|       <Message_List> | ||||
|         <Message> | ||||
| @@ -786,7 +788,7 @@ | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,0,0,0</DataBytes> | ||||
|           <DataBytes>0,1,178,7</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
| @@ -798,7 +800,7 @@ | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,0,0,0</DataBytes> | ||||
|           <DataBytes>0,0,39,16</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
| @@ -810,7 +812,7 @@ | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,0,0,0</DataBytes> | ||||
|           <DataBytes>0,85,115,240</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
| @@ -834,7 +836,7 @@ | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,0,0,0</DataBytes> | ||||
|           <DataBytes>0,250,0,0</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
| @@ -846,7 +848,79 @@ | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,5,1,25</DataBytes> | ||||
|           <DataBytes>0,5,1,250</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
|           <Key_Enabled>FALSE</Key_Enabled> | ||||
|         </Message> | ||||
|         <Message> | ||||
|           <Channel>1</Channel> | ||||
|           <Message_ID>23</Message_ID> | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,0,0,0</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
|           <Key_Enabled>FALSE</Key_Enabled> | ||||
|         </Message> | ||||
|         <Message> | ||||
|           <Channel>1</Channel> | ||||
|           <Message_ID>24</Message_ID> | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,0,0,0</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
|           <Key_Enabled>FALSE</Key_Enabled> | ||||
|         </Message> | ||||
|         <Message> | ||||
|           <Channel>1</Channel> | ||||
|           <Message_ID>1540</Message_ID> | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>0</DLC> | ||||
|           <DataBytes>0</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
|           <Key_Enabled>FALSE</Key_Enabled> | ||||
|         </Message> | ||||
|         <Message> | ||||
|           <Channel>1</Channel> | ||||
|           <Message_ID>1298</Message_ID> | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,0,0,0</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
|           <Key_Enabled>FALSE</Key_Enabled> | ||||
|         </Message> | ||||
|         <Message> | ||||
|           <Channel>1</Channel> | ||||
|           <Message_ID>337</Message_ID> | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,0,78,32</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
|           <Key_Enabled>FALSE</Key_Enabled> | ||||
|         </Message> | ||||
|         <Message> | ||||
|           <Channel>1</Channel> | ||||
|           <Message_ID>336</Message_ID> | ||||
|           <IsExtended>FALSE</IsExtended> | ||||
|           <IsRtr>FALSE</IsRtr> | ||||
|           <DLC>4</DLC> | ||||
|           <DataBytes>0,1,0,0</DataBytes> | ||||
|           <Repetion>10</Repetion> | ||||
|           <Repetition_Enabled>FALSE</Repetition_Enabled> | ||||
|           <Key_Value>a</Key_Value> | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
|  | ||||
| [BUSMASTER_VERSION] [3.2.2] | ||||
|  | ||||
| [NUMBER_OF_MESSAGES] 29 | ||||
| [NUMBER_OF_MESSAGES] 33 | ||||
|  | ||||
| [START_MSG] JOY_MEASURE,529,3,3,1,S | ||||
| [START_SIGNALS] posX,8,1,0,I,127,-128,1,0.000000,1.000000,%, | ||||
| @@ -177,3 +177,17 @@ | ||||
| [START_SIGNALS] displayAliveTime,8,1,0,U,255,0,1,0.000000,10.000000,ms, | ||||
| [START_SIGNALS] steeringAliveTime,8,2,0,U,255,0,1,0.000000,10.000000,ms, | ||||
| [END_MSG] | ||||
|  | ||||
| [START_MSG] BRAKE,1294,1,1,1,S | ||||
| [START_SIGNALS] brake,1,1,0,B,1,0,1,0.000000,1.000000,, | ||||
| [END_MSG] | ||||
|  | ||||
| [START_MSG] SUPPLY_48V_READY,1540,0,0,1,S | ||||
| [END_MSG] | ||||
|  | ||||
| [START_MSG] HEADLIGHTS,260,1,1,1,S | ||||
| [START_SIGNALS] headlights,1,1,0,B,1,0,1,0.000000,1.000000,, | ||||
| [END_MSG] | ||||
|  | ||||
| [START_MSG] SUPPLY_ALIVE,1551,0,0,1,S | ||||
| [END_MSG] | ||||
		Reference in New Issue
	
	Block a user