Subversion Repositories HomeAutomation

Rev

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

Rev 1774 Rev 1775
Line 167... Line 167...
167
}
167
}
168
 
168
 
169
void act_DotMatrix_HandleMessage(StdCan_Msg_t *rxMsg)
169
void act_DotMatrix_HandleMessage(StdCan_Msg_t *rxMsg)
170
{
170
{
171
    if (    StdCan_Ret_class(rxMsg->Header) == CAN_MODULE_CLASS_ACT &&
171
    if (    StdCan_Ret_class(rxMsg->Header) == CAN_MODULE_CLASS_ACT &&
172
        StdCan_Ret_direction(rxMsg->Header) == DIRECTIONFLAG_FROM_OWNER &&
172
        StdCan_Ret_direction(rxMsg->Header) == DIRECTIONFLAG_TO_OWNER &&
173
        rxMsg->Header.ModuleType == CAN_MODULE_TYPE_ACT_DOTMATRIX &&
173
        rxMsg->Header.ModuleType == CAN_MODULE_TYPE_ACT_DOTMATRIX &&
174
        rxMsg->Header.ModuleId == act_DotMatrix_ID)
174
        rxMsg->Header.ModuleId == act_DotMatrix_ID)
175
    {
175
    {
176
        switch (rxMsg->Header.Command)
176
        switch (rxMsg->Header.Command)
177
        {
177
        {
178
        /* If brightness should be adjusted */
178
        /* If brightness should be adjusted */
179
        case CAN_MODULE_CMD_PHYSICAL_PWM:
179
        case CAN_MODULE_CMD_PHYSICAL_PWM:
180
            if (rxMsg->Length == 3) {
180
            if (rxMsg->Length == 3) {
181
                act_DotMatrix_brightness = (rxMsg->Data[1]<<8)+(rxMsg->Data[2]);
181
                act_DotMatrix_brightness = (rxMsg->Data[1]<<8)+(rxMsg->Data[2]);
182
 
182
 
183
                if (OCR0B != (uint16_t)(act_DotMatrix_brightness*act_DotMatrix_PWM_FACT)>>8) {
183
                if (OCR0B != 0xff-((uint16_t)(act_DotMatrix_brightness*act_DotMatrix_PWM_FACT)>>8)) {
184
                    cli(); 
184
                    cli(); 
185
                    OCR0B=(uint16_t)(act_DotMatrix_brightness*act_DotMatrix_PWM_FACT)>>8;
185
                    OCR0B=0xff-((uint16_t)(act_DotMatrix_brightness*act_DotMatrix_PWM_FACT)>>8);
186
                    if (OCR0B==0)
-
 
187
                    {
-
 
188
                        TCCR0A &= ~((1<<COM0B0)|(1<<COM0B1));
-
 
189
                    }
-
 
190
                    else
-
 
191
                    {
-
 
192
                        TCCR0A |= (1<<COM0B1);
-
 
193
                    }
-
 
194
                    sei();
186
                    sei();
195
                }
187
                }
196
            }
188
            }
197
            break;
189
            break;
198
        /* If data to first module */
190
        /* If data to first module */