Subversion Repositories HomeAutomation

Rev

Rev 217 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 217 Rev 222
Line 81... Line 81...
81
    MT_Q2_DDR &= ~(1<<MT_Q2_BIT);
81
    MT_Q2_DDR &= ~(1<<MT_Q2_BIT);
82
    MT_Q3_DDR &= ~(1<<MT_Q3_BIT);
82
    MT_Q3_DDR &= ~(1<<MT_Q3_BIT);
83
    MT_Q4_DDR &= ~(1<<MT_Q4_BIT);
83
    MT_Q4_DDR &= ~(1<<MT_Q4_BIT);
84
   
84
   
85
    uint8_t receviercounter = 0;
85
    uint8_t receviercounter = 0;
-
 
86
    uint8_t datain = 0;
86
   
87
   
87
    /* main loop */
88
    /* main loop */
88
    while (1) {
89
    while (1) {
89
        /* service the CAN routines */
90
        /* service the CAN routines */
90
        Can_Service();
91
        Can_Service();
91
       
92
 
92
        if ((MT_StD_PIN & (1<<MT_StD_BIT)) != 0) {
93
        if ((MT_StD_PIN & (1<<MT_StD_BIT)) != 0) {
93
            //här ska det egentligen vara en en kort delay innan man kollar 
94
            //här ska det egentligen vara en en kort delay innan man kollar 
94
            //om std är hög igen
95
            //om std är hög igen
95
 
96
 
96
            if ((MT_StD_PIN & (1<<MT_StD_BIT)) != 0) {
97
            if ((MT_StD_PIN & (1<<MT_StD_BIT)) != 0) {
97
                //testa om receviercounter har blivit för stor, error error
98
                //testa om receviercounter har blivit för stor, error error
98
                if (receviercounter >= 16) {
99
                if (receviercounter >= 16) {
99
                    receviercounter = 0;    //kasta paket
100
                    receviercounter = 0;    //kasta paket
100
                } else {
101
                } else {
101
                    //nu finns data tillgänglig på Qx
102
                    //nu finns data tillgänglig på Qx
102
                    uint8_t datain = 0;
-
 
103
                    datain |= ((MT_Q1_PIN >> MT_Q1_BIT) & 0x1);
103
                    datain = ((MT_Q1_PIN >> MT_Q1_BIT) & 0x1);
104
                    datain |= (((MT_Q2_PIN >> MT_Q2_BIT) & 0x1)<<1);
104
                    datain |= (((MT_Q2_PIN >> MT_Q2_BIT) & 0x1)<<1);
105
                    datain |= (((MT_Q3_PIN >> MT_Q3_BIT) & 0x1)<<2);
105
                    datain |= (((MT_Q3_PIN >> MT_Q3_BIT) & 0x1)<<2);
106
                    datain |= (((MT_Q4_PIN >> MT_Q4_BIT) & 0x1)<<3);
106
                    datain |= (((MT_Q4_PIN >> MT_Q4_BIT) & 0x1)<<3);
107
                    if (datain == 0) { datain = 0x1d; }     //DTMF0  = D    //this is temporary
107
                    if (datain == 0) { datain = 0x1d; }     //DTMF0  = D    //this is temporary
108
                    if (datain == 11) { datain = 0x1e; }    //DTMF12 = *    //this is temporary
108
                    if (datain == 11) { datain = 0x1e; }    //DTMF12 = *    //this is temporary
Line 130... Line 130...
130
            }
130
            }
131
        }
131
        }
132
       
132
       
133
        if (timerOn ==1 && Timebase_PassedTimeMillis(lastToneTimeStamp) >= 1800) {
133
        if (timerOn ==1 && Timebase_PassedTimeMillis(lastToneTimeStamp) >= 1800) {
134
            timerOn = 0;
134
            timerOn = 0;
-
 
135
           
-
 
136
            if (datain == 0xc) {    //om sista tonen var c
135
            if ((receviercounter & 0x1) == 0) {
137
                if ((receviercounter & 0x1) == 0) {
136
                txMsg.DataLength = (receviercounter>>1);
138
                    txMsg.DataLength = (receviercounter>>1);
137
            } else {
139
                } else {
138
                txMsg.DataLength = (receviercounter>>1)+1;
140
                    txMsg.DataLength = (receviercounter>>1)+1;
-
 
141
                    txMsg.Data.bytes[(receviercounter>>1)] |= 0xc; //spara ett extra c om udda antal
139
            }
142
                }
140
           
143
               
141
            receviercounter = 0;
144
                receviercounter = 0;
142
            Can_Send(&txMsg);
145
                Can_Send(&txMsg);
-
 
146
            } else {
-
 
147
                //den ska skicka felmeddelande? använda ett annat id till det, FUNCT/FUNCC?
-
 
148
            }
143
        }      
149
        }      
144
       
150
       
145
        /* send CAN message and check for CAN errors once every second */
151
        /* send CAN message and check for CAN errors once every second */
146
        if (Timebase_PassedTimeMillis(timeStamp) >= 2000) {
152
        if (Timebase_PassedTimeMillis(timeStamp) >= 2000) {
147
            timeStamp = Timebase_CurrentTime();
153
            timeStamp = Timebase_CurrentTime();