_BOOL bBusyFlag(void) { _U08 bFlag; bFlag = _6800_u8ReadAddr(); bFlag |= (_6800_u8ReadAddr()>>4); return QUERY_8BIT(bFlag, 7); }
/**-----------------------------------------------------------------------------------------------*/ 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]--; } } } }
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; } }