1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
/**
@File Name
main.c
@Summary
This is the generated main.c using PIC24 / dsPIC33 / PIC32MM MCUs.
@Description
This source file provides main entry point for system initialization and application code development.
Generation Information :
Product Revision : PIC24 / dsPIC33 / PIC32MM MCUs - 1.171.4
Device : PIC24FV16KM202
The generated drivers are tested against the following:
Compiler : XC16 v2.10
MPLAB : MPLAB X v6.05
*/
/**
Section: Included Files
*/
#include "mcc_generated_files/system.h"
#include "SPI.h"
#include <stdbool.h>
/*
Main application
*/
uint8_t activeResistors[2] = {0x00,0x00};
uint8_t desired150, desired68 = 0;
bool relay_delay = false;
static uint8_t* timeoutcounter;
void TMR1_Process(void);
int main(void)
{
// initialize the device
SYSTEM_Initialize();
//OSCCONbits.SOSCEN = 0;
SPI_slaveDeselect();
_LATA0 = _LATA1 = 0;//_LATA4 = 1; //Activate gate driver chips
_LATA4 = 1;
Message_HWCR();
_LATB6 = 0;
_LATB7 = 1;
_LATB8 = 1;
TMR1_SetInterruptHandler(&TMR1_Process);
while (1)
{
timeoutcounter = getTimeoutCounter();
desired150 = getI2CArray(1) & 0x0F;
desired68 = (getI2CArray(1) >> 4) & 0x07;
if (relay_delay)
{
active(activeResistors);
if (*timeoutcounter < 2)
{
_LATB8 = 1;
relay_delay = false;
if (desired150 < activeResistors[0])
{
Message_OUT(activeResistors[0] - 1, activeResistors[1], 1);
} else if (desired150 > activeResistors[0])
{
Message_OUT(activeResistors[0] + 1, activeResistors[1], 1);
} else if (desired68 < activeResistors[1])
{
Message_OUT(activeResistors[0], activeResistors[1] - 1, 0);
} else if (desired68 > activeResistors[1])
{
Message_OUT(activeResistors[0], activeResistors[1] + 1, 0);
}
}
else //Open contactors if I2C communication is broken.
{
if (relay_delay) Message_OUT(activeResistors[0] - 1, activeResistors[1] - 1, 0);
_LATB7 = 1; //Make sure activity light is off
_LATB8 = 0;
//Message_HWCROCL();
}
}
//Message_OUT(15, 0, 1);
//(desired150, desired68, relay_delay);
//if(activeResistors[1]==3){_LATB8=0;}
//else{_LATB8=1;}
}
return 1;
}
void __attribute__ ((weak)) TMR1_Process(void)
{
relay_delay = !relay_delay;
incrementTimeoutCounter();
}
/**
End of File
*/
|