예제 #1
0
파일: main.c 프로젝트: Hotboards/Examples
_BOOL bBusyFlag(void)
{
    _U08 bFlag;
    bFlag = _6800_u8ReadAddr();
    bFlag |= (_6800_u8ReadAddr()>>4);
    return QUERY_8BIT(bFlag, 7);
}
예제 #2
0
/**-----------------------------------------------------------------------------------------------*/
void Timers_Isr(void)
{
    volatile _U08 u8Channels = (_U08)TIMERS_N_CHANNELS;

    if(QUERY_8BIT(INTCON,2u) != 0u) /*enter this interrupt only if the int was cause by the TMR0 overflow*/
    {
        TIMERS_CLEAR_FLAG();/*clear interrupts flags*/
        TIMERS_MOD(gua16ModValue);	/* set the max count allow for the base time value */
        while(u8Channels)
        {/* loop over each timer */
            u8Channels--;
            if(gua16Timers[u8Channels])
            {/* decrement channel if diferent from 0 */
                gua16Timers[u8Channels]--;
            }
        }
    }
}
예제 #3
0
파일: ENDDEVICE.c 프로젝트: jluisalegria/PB
 void WirelessTxRx(void)
 {
     Timer1Tick();

     switch(EndDevStateMachine)
     {
         case 0:                      // recibe estado para relevadores y latencia de comunicacion
         {
             if( MiApp_MessageAvailable())
             {
                if((rxMessage.Payload[1] == 0x00)&&((rxMessage.Payload[3] == OutputStat)))
                {
                    BypassCounter = 0;
                    if(rxMessage.Payload[4] <= 16)
                    {
                        //BaseTimeToTx = rxMessage.Payload[4];
                        TickScaler = rxMessage.Payload[4];
                    }


                    j = (myNodeNumber-1)/8;
                    j += 5;

                    i = rxMessage.Payload[j];

                    j =  (myNodeNumber-1)%8;

                    if(QUERY_8BIT(i,j))
                    {

                        RLY_STATUS = 1;
                    }
                    else
                    {

                        RLY_STATUS = 0;
                    }


                    ConsolePutROMString((ROM char *)"\r\n Req Stat:");

                    for(i=0;i<rxMessage.PayloadSize;i++)
                    {
                        PrintChar(rxMessage.Payload[i]);
                    }
                    

                    SwTimer0 = 0;
                    WriteTimer1(56161);           
                    Tick = 0;
                    
                    LED_2 ^= 1;
                    EndDevStateMachine = 1;
                    SwTimer3 = 0;     // clear MIWIPRO STATUS TIMER


                }
                else
                {
                    if((rxMessage.Payload[1] == 0x00)&&((rxMessage.Payload[3] == ListenDevices)))
                    {
                        ConsolePutROMString((ROM char *)"\r\n Listen Devices:");

                        for(i=0;i<rxMessage.PayloadSize;i++)
                        {
                         PrintChar(rxMessage.Payload[i]);
                        }
                        
                        j = (myNodeNumber-1)/8;
                        j += 4;

                        i = rxMessage.Payload[j];

                        j =  (myNodeNumber-1)%8;
                        
                        
                        if(QUERY_8BIT(i,j))
                        {
                         ConsolePutROMString((ROM char *)"\r\n Link stablished correctly");
                         RestartCounter = 0;
                        }
                        else
                        {
                         ConsolePutROMString((ROM char *)"\r\n NO Link stablished!!");
                         ++RestartCounter;
                        }
                        
                        
                        
                    }
                    else
                    {
                        if((rxMessage.Payload[1] == 0x00)&&((rxMessage.Payload[3] == CalibrationProcedure)))
                        {
                            
                            ConsolePutROMString((ROM char *)"\r\n Temperature sensor calibration:");
                            
                            //TemperatureCalibrationValue = rxMessage.Payload[5];
                            
                            
                            if((rxMessage.Payload[5] == MyTemp)||(rxMessage.Payload[5] == 0))
                            {
                                TemperatureCalibrationValue = 0;
                            }
                            else
                            {
                                if(rxMessage.Payload[5] > MyTemp)              // la temp de referencia es mayor a la leida
                                {
                                    //TemperatureCalibrationValue = (rxMessage.Payload[5] - MyTemp) & 0x0F;
                                    
                                }
                                else                                           // la temperatura leida es mayor a la temp de referencia
                                {
                                    //TemperatureCalibrationValue = (MyTemp - rxMessage.Payload[5]) & 0x0F;
                                    //SET_8BIT(TemperatureCalibrationValue,7);
                                }
                            }
                            
                            //EEPROMWRITE(TemperatureCalibrationValue,0,1);
                        }
                    }
                    
                }
                

                 MiApp_DiscardMessage();
             }
         }
         break;

//-----------------------------------------------------------------------------//

         case 1:                // envia estado y temperatura
         {
             if(SwTimer0 >= (_U08)myNodeNumber)
             {

              MyTemp = TemperatureRead();
                                                       
              MiApp_FlushTx();
              MiApp_WriteData(' ');
              MiApp_WriteData(myNodeNumber);
              MiApp_WriteData(MyTrackingNumber);
              MiApp_WriteData(OutputStat);
              MiApp_WriteData(RLY_STATUS);
              MiApp_WriteData(MyTemp);

              MiApp_BroadcastPacket(FALSE);
              

             /*              
              if(RLY_STATUS == 1)
              {
                  RLY_1 = 1;
              }
              else
              {
                  RLY_1 = 0;
              }
              */
              
              
              //SDW_RLY_STATUS
              
              if(RLY_STATUS == 1)
              {
                  if(SDW_RLY_STATUS == 1)
                  {
                      RLY_1 = 1;
                      
                      if(EEPROMCHG == 0)
                      {
                        i = 0x55;
                        EEPROMWRITE(&i,0,1); 
                        EEPROMWRITE(&i,0,1); 
                        EEPROMWRITE(&i,0,1); 
                        EEPROMWRITE(&i,0,1); 
                        EEPROMWRITE(&i,0,1); 
                          
                          
                       //for(j=0;j<16;j++)
                       //{
                        //myDevicesOutputStatus[j] = 0x55;
                       //}
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                        
                        ConsolePutROMString((ROM char *)"\r\n Relay status updated in eeprom 55");
                      }
                      
                      EEPROMCHG = 1;
                  }
                  else
                  {
                      SDW_RLY_STATUS = 1;
                  }
              }
              else
              {
                  if(SDW_RLY_STATUS == 0)
                  {
                      RLY_1 = 0;
                      
                      if(EEPROMCHG == 1)
                      {
                       i = 0xAA;
                       EEPROMWRITE(&i,0,1); 
                       EEPROMWRITE(&i,0,1); 
                       EEPROMWRITE(&i,0,1); 
                       EEPROMWRITE(&i,0,1); 
                       EEPROMWRITE(&i,0,1); 
                          
                       //for(j=0;j<16;j++)
                       //{
                        //myDevicesOutputStatus[j] = 0xAA;
                       //}
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);   
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                       //EEPROMWRITE(&myDevicesOutputStatus,0,16);
                          
                          
                       ConsolePutROMString((ROM char *)"\r\n Relay status updated in eeprom AA");
                      }
                      
                      EEPROMCHG = 0;
                      
                  }
                  else
                  {
                      SDW_RLY_STATUS = 0;
                  }
              }
              
              
              
              
              
              
              IRControl();
              

              EndDevStateMachine = 2;
             }
         }
         break;

//-----------------------------------------------------------------------------//

         case 2:
         {
             LED_1 ^= 1;
             EndDevStateMachine = 0;
         }
         break;

//-----------------------------------------------------------------------------//

         default:
         {
             EndDevStateMachine = 0;
         }
         break;


     }
 }