Subversion Repositories HomeAutomation

Rev

Rev 1711 | Rev 1714 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1711 Rev 1712
Line 4... Line 4...
4
 
4
 
5
static uint16_t setValue[8];
5
static uint16_t setValue[8]={0,0,0,0,0,0,0,0};
6
static uint16_t isValue[8];
6
static uint16_t isValue[8];
7
 
7
 
8
#ifdef act_pcaPWM_USEEEPROM
8
#ifdef act_pcaPWM_USEEEPROM
9
#include "act_pcaPWM_eeprom.h"
9
#include "act_pcaPWM_eeprom.h"
10
struct eeprom_act_pcaPWM EEMEM eeprom_act_pcaPWM =
10
struct eeprom_act_pcaPWM EEMEM eeprom_act_pcaPWM =
Line 76... Line 76...
76
    {
76
    {
77
        if (setValue[i] != isValue[i])
77
        if (setValue[i] != isValue[i])
78
        {
78
        {
79
            isValue[i] = setValue[i];
79
            isValue[i] = setValue[i];
80
            pca9634_setDuty(i, isValue[i]*act_pcaPWM_FACT);
80
            pca9634_setDuty(i, isValue[i]*act_pcaPWM_FACT);
-
 
81
#ifdef act_pcaPWM_USEEEPROM
81
            Timer_SetTimeout(act_pcaPWM_STORE_VALUE_TIMEOUT, act_pcaPWM_STORE_VALUE_TIMEOUT_TIME*1000, TimerTypeOneShot, 0);
82
            Timer_SetTimeout(act_pcaPWM_STORE_VALUE_TIMEOUT, act_pcaPWM_STORE_VALUE_TIMEOUT_TIME*1000, TimerTypeOneShot, 0);
-
 
83
#endif
-
 
84
        }
82
        }
85
    }
83
    }
-
 
84
 
86
 
-
 
87
#ifdef act_pcaPWM_USEEEPROM
85
    if (Timer_Expired(act_pcaPWM_STORE_VALUE_TIMEOUT))
88
    if (Timer_Expired(act_pcaPWM_STORE_VALUE_TIMEOUT))
86
    {
89
    {
87
        if (isValue[0] != eeprom_read_word(EEDATA16.ch1))
90
        if (isValue[0] != eeprom_read_word(EEDATA16.ch1))
88
        {
91
        {
89
            eeprom_write_word_crc(EEDATA16.ch1, isValue[0], WITH_CRC);
92
            eeprom_write_word_crc(EEDATA16.ch1, isValue[0], WITH_CRC);
90
        }
93
        }
91
        if (isValue[1] != eeprom_read_word(EEDATA16.ch2))
94
        if (isValue[1] != eeprom_read_word(EEDATA16.ch2))
92
        {
95
        {
93
            eeprom_write_word_crc(EEDATA16.ch2, isValue[1], WITH_CRC);
96
            eeprom_write_word_crc(EEDATA16.ch2, isValue[1], WITH_CRC);
Line 97... Line 100...
97
            eeprom_write_word_crc(EEDATA16.ch3, isValue[2], WITH_CRC);
100
            eeprom_write_word_crc(EEDATA16.ch3, isValue[2], WITH_CRC);
98
        }
101
        }
99
        if (isValue[3] != eeprom_read_word(EEDATA16.ch4))
102
        if (isValue[3] != eeprom_read_word(EEDATA16.ch4))
100
        {
103
        {
101
            eeprom_write_word_crc(EEDATA16.ch4, isValue[3], WITH_CRC);
104
            eeprom_write_word_crc(EEDATA16.ch4, isValue[3], WITH_CRC);
102
        }
105
        }
103
        if (isValue[4] != eeprom_read_word(EEDATA16.ch5))
106
        if (isValue[4] != eeprom_read_word(EEDATA16.ch5))
104
        {
107
        {
105
            eeprom_write_word_crc(EEDATA16.ch5, isValue[4], WITH_CRC);
108
            eeprom_write_word_crc(EEDATA16.ch5, isValue[4], WITH_CRC);
106
        }
109
        }
107
        if (isValue[5] != eeprom_read_word(EEDATA16.ch6))
110
        if (isValue[5] != eeprom_read_word(EEDATA16.ch6))
Line 115... Line 118...
115
        if (isValue[7] != eeprom_read_word(EEDATA16.ch8))
118
        if (isValue[7] != eeprom_read_word(EEDATA16.ch8))
116
        {
119
        {
117
            eeprom_write_word_crc(EEDATA16.ch8, isValue[7], WITH_CRC);
120
            eeprom_write_word_crc(EEDATA16.ch8, isValue[7], WITH_CRC);
118
        }
121
        }
119
    }
122
    }
120
 
123
#endif
121
}
124
}
122
 
125
 
123
void act_pcaPWM_HandleMessage(StdCan_Msg_t *rxMsg)
126
void act_pcaPWM_HandleMessage(StdCan_Msg_t *rxMsg)
124
{
127
{
125
    if (    StdCan_Ret_class(rxMsg->Header) == CAN_MODULE_CLASS_ACT &&
128
    if (    StdCan_Ret_class(rxMsg->Header) == CAN_MODULE_CLASS_ACT &&
126
        StdCan_Ret_direction(rxMsg->Header) == DIRECTIONFLAG_TO_OWNER &&
129
        StdCan_Ret_direction(rxMsg->Header) == DIRECTIONFLAG_TO_OWNER &&
127
        rxMsg->Header.ModuleType == CAN_MODULE_TYPE_ACT_PCAPWM &&
130
        rxMsg->Header.ModuleType == CAN_MODULE_TYPE_ACT_PCAPWM &&
128
        rxMsg->Header.ModuleId == act_pcaPWM_ID)
131
        rxMsg->Header.ModuleId == act_pcaPWM_ID)
129
    {
132
    {
Line 133... Line 136...
133
        case CAN_MODULE_CMD_PHYSICAL_PWM:
136
        case CAN_MODULE_CMD_PHYSICAL_PWM:
134
            if (rxMsg->Length == 3) {
137
            if (rxMsg->Length == 3) {
135
                channel = rxMsg->Data[0];
138
                channel = rxMsg->Data[0];
136
                setValue[channel] = (rxMsg->Data[1]<<8)+(rxMsg->Data[2]);
139
                setValue[channel] = (rxMsg->Data[1]<<8)+(rxMsg->Data[2]);
137
            }
140
            }
138
           
-
 
139
        break;
141
        break;
140
        }
142
        }
141
    }
143
    }
142
}
144
}
143
 
145