63 #include "em_device.h"
83 #define TEMPERATURE 0x03
85 #define INITIALIZE 0x05
86 #define TRANSFER_TO_FLASH 0x06
91 #define LDO_TIMED 0x0b
94 #define CALIBRATES 0x0e
95 #define READ_FLASH 0x90
96 #define WRITE_FLASH 0x10
97 #define BLOCK_ERASE_FLASH 0x13
102 #define MINS_HRS 0x31
103 #define DAY_DATE 0x32
104 #define MONTH_YEAR 0x33
105 #define INTERRUPT_STATUS 0xFE
114 #define HIT1UP_REG 0xC5
115 #define HIT2UP_REG 0xC7
116 #define HIT3UP_REG 0xC9
117 #define HIT4UP_REG 0xCB
118 #define HIT5UP_REG 0xCD
119 #define HIT6UP_REG 0xCF
120 #define AVGUP_REG 0xD1
121 #define HIT1DOWN_REG 0xD4
122 #define HIT2DOWN_REG 0xD6
123 #define HIT3DOWN_REG 0xD8
124 #define HIT4DOWN_REG 0xDA
125 #define HIT5DOWN_REG 0xDC
126 #define HIT6DOWN_REG 0xDE
127 #define AVGDOWN_REG 0xE0
128 #define TOF_DIFF_REG 0xE2
129 #define TOF_DIFF_AVG_REG 0xE5
132 #define INTERRUPT_REG_TO 0x8000
133 #define INTERRUPT_REG_TOF 0x1000
134 #define INTERRUPT_REG_TE 0x0800
135 #define INTERRUPT_REG_TOF_EVTMG 0x0200
136 #define INTERRUPT_REG_TEMP_EVTMG 0x0100
137 #define INTERRUPT_REG_TOF_FLASH 0x0080
142 #define NUMBER_TEMPERATUE_PORTS_USED 3
143 #define HOT_TEMP_PORT 0
144 #define COLD_TEMP_PORT 1
145 #define REFERENCE_TEMP_PORT 2
149 #define USING_EVENT_TIMING_MODES_READ_AVERAGE
183 #ifndef USING_EVENT_TIMING_MODES_READ_AVERAGE
232 #define T4MHZ (float)250/(float)1000000000 //Assume Ideal 250nS t4MHz period
233 #define LSBIT_TOF_VALUE (1/(float)65536) * T4MHZ //Fractional portion of a TOF measurement is quantized to a 16 bit value of the 4MHz Clock
235 #define PI 3.14 //Make sure this is defines somewhere
237 #define SECONDS_PER_HR 3600
241 static volatile uint32_t msTicks;
259 #define MAX_DISPLAY_REPEAT 9000 //without pressing SW2, LCD keeps on for 1 hour and then turns off.
269 bool Calcuate_Temperature(uint32_t tempRegisterData, uint32_t RefRegisterData,
float* TempDestination);
270 bool Calculate_TOF_Velocity(int32_t TOF_DiffData,
float* FlowVelocity,
float Temperature,
float* TOF_DIFF_DeltaT_S);
272 bool Calculate_Volumetric_Flow(
float Velocity_mPerS,
float* VolumetricFlow_m3PerS,
float* VolumetricGainfactor,
float*VolumetricFlowCorrected_m3PerS);
273 bool Calculate_Mass_Flow(
float VolumetricFlow_m3PerS,
float* MassFlow_kgPerHr,
float Temperature);
274 bool Calculate_Enthalpy(
float TemperatureAtCold,
float TemperatureAtHot,
float* EnthalpyAtCold_JperKg,
float* EnthalpyAtHot_JperKg,
float* DeltaEnthalpy_JperKg);
289 float LinearInterpolation (
float X1Low,
float X2High,
float Y1Low,
float Y2High,
float XnewLookup);
298 extern void Delay(uint32_t dlyTicks);
299 static void SPI_setup(uint8_t spiNumber, uint8_t location,
bool master);
302 static void GpioSetup(
void);
307 #define MAX35101_CS_Low() GPIO_PinOutClear(gpioPortB, 8)
308 #define MAX35101_CS_High() GPIO_PinOutSet(gpioPortB, 8)
314 #define RTD_RREF_VALUE 1000
317 float RTDtoRREF_Ratio, RTDResistanceValue_ohms;
319 bool success =
false;
321 RTDtoRREF_Ratio = (float) tempRegisterData / (
float) RefRegisterData;
325 for (XCord = 0; ((
PT1000_LOOKUPTABLE[XCord][0] < RTDResistanceValue_ohms) && (XCord < 101)); XCord++)
329 for (YCord = 0; ((
PT1000_LOOKUPTABLE[XCord][YCord] < RTDResistanceValue_ohms) && (YCord < 10)); YCord++)
337 (XCord + (YCord * 0.1)),
338 (XCord + (YCord + 1) * 0.1),
339 RTDResistanceValue_ohms
345 #define PIPELENGTH_IN_FLOW_M 0.0717 //todo: DN20 or DN25 - Specifications - update to spool body
348 bool success =
false;
361 bool success =
false;
362 float SpeedOfSound_mperS, VelocityCalcNumerator_m2perS, VelocityCalcDenominatore_m, Velocity_mPers = 0;
363 int TempAtJunncture = (int) Temperature;
376 VelocityCalcNumerator_m2perS = *TOF_DIFF_DeltaT_S * SpeedOfSound_mperS* SpeedOfSound_mperS;
379 Velocity_mPers = VelocityCalcNumerator_m2perS / VelocityCalcDenominatore_m;
380 *FlowVelocity = Velocity_mPers;
384 #define PIPERADIUS_M 0.008
385 bool Calculate_Volumetric_Flow(
float Velocity_mPerS,
float* VolumetricFlow_m3PerS,
float* VolumetricGainfactor,
float*VolumetricFlowCorrected_m3PerS)
387 bool success =
false;
389 float CrossSectionalArea_m2;
394 *VolumetricFlow_m3PerS = Velocity_mPerS * CrossSectionalArea_m2;
410 *VolumetricFlowCorrected_m3PerS = (*VolumetricGainfactor) * (*VolumetricFlow_m3PerS);
419 bool success =
false;
436 bool Calculate_Mass_Flow(
float VolumetricFlowCorrected_m3PerS,
float* MassFlow_kgPerHr,
float Temperature)
438 bool success =
false;
439 float WaterDensityatTemp_kgPerm3, VolumetricFlowCorrected_m3PerH;
440 int TempAtJunncture = (int)(Temperature);
446 WATER_DENSITY_LOOKUPTABLE[TempAtJunncture + 1],
450 VolumetricFlowCorrected_m3PerH = VolumetricFlowCorrected_m3PerS *
SECONDS_PER_HR;
451 *MassFlow_kgPerHr = VolumetricFlowCorrected_m3PerH * WaterDensityatTemp_kgPerm3;
455 bool Calculate_Enthalpy(
float TemperatureAtCold,
float TemperatureAtHot,
float* EnthalpyAtCold_JperKg,
float* EnthalpyAtHot_JperKg,
float* DeltaEnthalpy_JperKg)
457 bool success =
false;
458 int TempAtJunncture = (int)(TemperatureAtCold);
468 TempAtJunncture = (int)(TemperatureAtHot);
478 *DeltaEnthalpy_JperKg = *EnthalpyAtHot_JperKg - *EnthalpyAtCold_JperKg;
485 float milliSecAdd = 0;
487 t_t1 = mktime(&t1->
Time);
488 t_t2 = mktime(&t2->
Time);
489 *difference_sec = (float) difftime (t_t2,t_t1 );
496 *difference_sec = *difference_sec - 1;
499 *difference_sec = *difference_sec + (milliSecAdd/1000);
506 bool success =
false;
507 float TimeDifference_sec = 0;
520 bool success =
false;
521 float TimeDifference_sec = 0;
534 float XnewLookupRatio, Xrange, Yrange, YReturnLookupValue;
535 Xrange = (X2High-X1Low);
536 Yrange = (Y2High-Y1Low);
537 XnewLookupRatio = (XnewLookup - X1Low)/ Xrange;
538 YReturnLookupValue = Y1Low + Yrange*XnewLookupRatio;
539 return (YReturnLookupValue);
546 int length1 = 0, length2 = 0;
547 for (
int loop = 0; loop < precision; loop++)
549 fNumber > 0? (fNumber += (0.5/base)) : (fNumber -= (0.5/base));
551 length1 = snprintf(output, 16,
"%d", (
int)fNumber);
557 fNumber > 0? (fNumber = fNumber - (int)fNumber) : (fNumber = (int)fNumber - fNumber);
560 output[length1] =
'.';
561 length2 = snprintf(&output[length1+1], 16,
"%0*d", precision, (
int)fNumber);
563 return length1 + length2 + 1;
574 bool success =
false;
605 bool success =
false;
614 bool success =
false;
616 #ifndef USING_EVENT_TIMING_MODES_READ_AVERAGE
619 &TOF_DIFF_Results->HitDownData.Hit1Data);
621 &TOF_DIFF_Results->HitDownData.Hit2Data);
623 &TOF_DIFF_Results->HitDownData.Hit3Data);
625 &TOF_DIFF_Results->HitDownData.Hit4Data);
627 &TOF_DIFF_Results->HitDownData.Hit5Data);
629 &TOF_DIFF_Results->HitDownData.Hit6Data);
631 &TOF_DIFF_Results->HitDownData.Hit6Data);
633 &TOF_DIFF_Results->HitDownData.HitAverageData);
637 &TOF_DIFF_Results->HitUpData.Hit1Data);
639 &TOF_DIFF_Results->HitUpData.Hit2Data);
641 &TOF_DIFF_Results->HitUpData.Hit3Data);
643 &TOF_DIFF_Results->HitUpData.Hit4Data);
645 &TOF_DIFF_Results->HitUpData.Hit5Data);
647 &TOF_DIFF_Results->HitUpData.Hit6Data);
649 &TOF_DIFF_Results->HitUpData.HitAverageData);
663 bool success =
false;
664 uint16_t readData = 0;
667 RTCTimeStamp->
Time.tm_sec = ((((readData & 0x00F0) >> 4 ) * 10) + (readData & 0x000F));
668 RTCTimeStamp->
milliSeconds = ((((readData & 0xF000) >> 12 ) * 100) + ((readData & 0x0F00)>>8) *10 );
671 RTCTimeStamp->
Time.tm_min = ((( readData & 0xF000) >> 12) * 10) + ((readData & 0x0F00) >> 8);
673 RTCTimeStamp->
Time.tm_hour= ((( readData & 0x0030) >> 4) * 10) + (readData & 0x000F);
676 RTCTimeStamp->
Time.tm_mday = ((((readData & 0x0030) >> 4 ) * 10) + (readData & 0x000F));
679 RTCTimeStamp->
Time.tm_mon = ((( readData & 0x1000) >> 12) * 10) + ((readData & 0x0F00) >> 8);
680 RTCTimeStamp->
Time.tm_year = ((((readData & 0x00F0) >> 4 ) * 10) + (readData & 0x000F)) + 100;
702 uint16_t FlashAddressToWrite;
705 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
706 NVIC_DisableIRQ(GPIO_ODD_IRQn);
707 for ( i = 0; i < WriteLength; i++ )
709 FlashAddressToWrite = StartingFlashAddress + (2*i);
713 success =
SPI_Send_Byte((
char) (FlashAddressToWrite & 0x00FF));
714 success =
SPI_Send_Byte((
char) (( *(DataToWrite + i) ) >> 8));
715 success =
SPI_Send_Byte((
char) (( *(DataToWrite + i) & 0x00FF)));
719 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
720 NVIC_EnableIRQ(GPIO_ODD_IRQn);
732 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
733 NVIC_DisableIRQ(GPIO_ODD_IRQn);
738 for ( i = 0; i < ReadLength; i++ )
743 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
744 NVIC_EnableIRQ(GPIO_ODD_IRQn);
753 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
754 NVIC_DisableIRQ(GPIO_ODD_IRQn);
760 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
761 NVIC_EnableIRQ(GPIO_ODD_IRQn);
772 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
773 NVIC_DisableIRQ(GPIO_ODD_IRQn);
775 flags = GPIO_IntGet();
780 GPIO_IntClear(1 << 7);
782 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
783 NVIC_EnableIRQ(GPIO_ODD_IRQn);
794 uint8_t pinState = 0;
795 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
796 NVIC_DisableIRQ(GPIO_ODD_IRQn);
798 flags = GPIO_IntGet();
804 while(!GPIO_PinInGet(gpioPortA, 0))
831 while(!GPIO_PinInGet(gpioPortA, 0))
871 while(!GPIO_PinInGet(gpioPortA, 0))
911 while(!GPIO_PinInGet(gpioPortA, 0))
951 while(!GPIO_PinInGet(gpioPortA, 0))
986 for(
int loop=0; loop<10000000; loop++)
988 pinState = GPIO_PinInGet(gpioPortA, 0);
996 GPIO_IntClear(1 << 0);
1000 else if(
flags & (1 << 2))
1032 POT_Data_Last = POT_Data[
POTCount];
1036 GPIO_IntClear(1 << 2);
1039 else if(
flags & (1<< 14))
1042 for(
int loop=0; loop<1000; loop++)
1044 pinState = GPIO_PinInGet(gpioPortC, 14);
1054 GPIO_IntClear(1 << 14);
1056 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
1057 NVIC_EnableIRQ(GPIO_ODD_IRQn);
1066 if (SysTick_Config(CMU_ClockFreqGet(cmuClock_CORE) / 1000))
1091 EMU_EnterEM3(
false);
1140 sprintf(
output,
"%02d/%02d/%04d",
1141 POT_Data[POTCountShown].POT_TimeData.Time.tm_mon,
1146 sprintf(
output,
"%02d:%02d:%02d",
1147 POT_Data[POTCountShown].POT_TimeData.Time.tm_hour,
1156 sprintf(
output,
"RTD1:");
1161 sprintf(
output,
"RTD2:");
1171 sprintf(
output,
"%d",(
int) (POT_Data[POTCountShown].POT_FlowFactors.TOF_DIFF_DeltaT_S* 1000000000000));
1180 FloatToString(POT_Data[POTCountShown].POT_FlowFactors.VolumetricFlowCorrected_m3PerS* 60 * 1000, 3,
output);
1205 TDF = (
reg & 0xF000) >> 12;
1217 TDM = (
reg & 0x0F80) >> 7;
1229 TMF = (
reg & 0x007E) >> 1;
1241 TMM = (
reg & 0xF800) >> 11;
1287 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
1288 NVIC_DisableIRQ(GPIO_ODD_IRQn);
1292 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
1293 NVIC_EnableIRQ(GPIO_ODD_IRQn);
1299 bool success =
false;
1300 uint16_t Readresults1, Readresults2 = 0;
1302 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
1303 NVIC_DisableIRQ(GPIO_ODD_IRQn);
1304 startingAddress |= 0x80;
1310 *results = (((uint32_t) Readresults1 << 16) + Readresults2);
1312 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
1313 NVIC_EnableIRQ(GPIO_ODD_IRQn);
1320 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
1321 NVIC_DisableIRQ(GPIO_ODD_IRQn);
1327 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
1328 NVIC_EnableIRQ(GPIO_ODD_IRQn);
1335 NVIC_DisableIRQ(GPIO_EVEN_IRQn);
1336 NVIC_DisableIRQ(GPIO_ODD_IRQn);
1342 NVIC_EnableIRQ(GPIO_EVEN_IRQn);
1343 NVIC_EnableIRQ(GPIO_ODD_IRQn);
1354 CMU_ClockEnable(cmuClock_USART1,
true);
1355 CMU_ClockEnable(cmuClock_GPIO,
true);
1361 SPI_setup(1, 0,
true);
1397 while ((msTicks - curTicks) < dlyTicks)
1402 #define HFRCO_FREQUENCY 14000000
1403 #define SPI_PERCLK_FREQUENCY HFRCO_FREQUENCY
1404 #define SPI_BAUDRATE 1000000
1409 USART_TypeDef *uart = USART1;
1412 for (ii = 0; ii < bytesToSend; ii++) {
1414 while (!(uart->STATUS & USART_STATUS_TXBL))
1417 if (txBuffer != 0) {
1419 uart->TXDATA = *txBuffer;
1426 while (!(uart->STATUS & USART_STATUS_TXC))
1432 bool success =
true;
1440 bool success =
true;
1441 USART_TypeDef *spi = USART1;
1442 uint8_t rxdataByte1, rxdataByte2;
1443 spi->CMD = USART_CMD_CLEARRX;
1445 rxdataByte1 = spi->RXDATA;
1447 rxdataByte2 = spi->RXDATA;
1448 *results = (uint16_t) (rxdataByte2 + (rxdataByte1 << 8));
1458 static void SPI_setup(uint8_t spiNumber, uint8_t location,
bool master) {
1460 GPIO_Mode_TypeDef gpioModeMosi;
1461 GPIO_Mode_TypeDef gpioModeMiso;
1463 GPIO_Mode_TypeDef gpioModeClk;
1473 spi->CTRL = USART_CTRL_SYNC | USART_CTRL_MSBF;
1475 spi->CMD = USART_CMD_CLEARRX | USART_CMD_CLEARTX;
1479 spi->ROUTE = USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_CLKPEN
1485 spi->CMD = USART_CMD_MASTEREN | USART_CMD_TXEN | USART_CMD_RXEN;
1489 gpioModeMosi = gpioModePushPull;
1490 gpioModeMiso = gpioModeInput;
1492 gpioModeClk = gpioModePushPull;
1495 spi->CMD = USART_CMD_TXEN | USART_CMD_RXEN;
1499 spi->IFC = _USART_IFC_MASK;
1502 GPIO_PinModeSet(gpioPortC, 0, gpioModeMosi, 0);
1503 GPIO_PinModeSet(gpioPortC, 1, gpioModeMiso, 0);
1505 GPIO_PinModeSet(gpioPortB, 7, gpioModeClk, 0);
1516 static void GpioSetup(
void) {
1518 GPIO_PinModeSet(gpioPortB, 11, gpioModePushPull, 1);
1520 GPIO_PinModeSet(gpioPortB, 13, gpioModePushPull, 0);
1523 GPIO_PinModeSet(gpioPortC, 15, gpioModeInput, 0);
1524 GPIO_IntConfig(gpioPortC, 15,
false,
true,
false);
1526 GPIO_PinModeSet(gpioPortE, 12, gpioModeInputPullFilter, 1);
1527 GPIO_IntConfig(gpioPortE, 12,
false,
true,
false);
1529 GPIO_PinModeSet(gpioPortF, 2, gpioModeInputPullFilter, 1);
1530 GPIO_IntConfig(gpioPortF, 2,
false,
true,
true );
1533 GPIO_PinModeSet(gpioPortE, 13, gpioModePushPull, 1);
1535 GPIO_PinModeSet(gpioPortB, 8, gpioModePushPull, 1);
1538 GPIO_PinModeSet(gpioPortD, 6, gpioModePushPull, 1);
1541 GPIO_PinModeSet(gpioPortB, 7, gpioModePushPull, 0);
1543 GPIO_PinModeSet(gpioPortC, 0, gpioModePushPull, 0);
1545 GPIO_PinModeSet(gpioPortC, 1, gpioModeInput, 0);
1548 GPIO_PinModeSet(gpioPortA, 0, gpioModeInputPullFilter, 1);
1549 GPIO_IntConfig(gpioPortA, 0,
false,
true,
true );
1551 GPIO_PinModeSet(gpioPortC, 14, gpioModeInputPullFilter, 1);
1552 GPIO_IntConfig(gpioPortC, 14,
false,
true,
true );
1554 GPIO_PinModeSet(gpioPortD, 7, gpioModeInputPullFilter, 1);
1555 GPIO_IntConfig(gpioPortD, 7,
false,
true,
true );
1563 uint8_t month, date, hour, minute;
1576 sprintf(output,
"%04d",year);
1579 for(
int loop = 0; loop < 10000000; loop++)
1581 if(!GPIO_PinInGet(gpioPortA, 0))
1583 for(
int loop1 = 0; loop1 < 300000; loop1++)
1584 GPIO_PinInGet(gpioPortA, 0);
1586 if(!GPIO_PinInGet(gpioPortA, 0))
1595 else if(!GPIO_PinInGet(gpioPortC, 14))
1598 for(
int loop1 = 0; loop1 < 300000; loop1++)
1599 GPIO_PinInGet(gpioPortC, 14);
1601 if(!GPIO_PinInGet(gpioPortC, 14))
1605 sprintf(output,
"%04d",year);
1609 else if(!GPIO_PinInGet(gpioPortD, 7))
1612 for(
int loop1 = 0; loop1 < 300000; loop1++)
1613 GPIO_PinInGet(gpioPortD, 7);
1615 if(!GPIO_PinInGet(gpioPortD, 7))
1619 sprintf(output,
"%04d",year);
1631 sprintf(output,
"%02d",month);
1634 for(
int loop = 0; loop < 10000000; loop++)
1636 if(!GPIO_PinInGet(gpioPortA, 0))
1638 for(
int loop1 = 0; loop1 < 300000; loop1++)
1639 GPIO_PinInGet(gpioPortA, 0);
1641 if(!GPIO_PinInGet(gpioPortA, 0))
1650 else if(!GPIO_PinInGet(gpioPortC, 14))
1653 for(
int loop1 = 0; loop1 < 300000; loop1++)
1654 GPIO_PinInGet(gpioPortC, 14);
1656 if(!GPIO_PinInGet(gpioPortC, 14))
1660 sprintf(output,
"%02d",month);
1664 else if(!GPIO_PinInGet(gpioPortD, 7))
1667 for(
int loop1 = 0; loop1 < 300000; loop1++)
1668 GPIO_PinInGet(gpioPortD, 7);
1670 if(!GPIO_PinInGet(gpioPortD, 7))
1674 sprintf(output,
"%02d",month);
1686 sprintf(output,
"%02d",date);
1689 for(
int loop = 0; loop < 10000000; loop++)
1691 if(!GPIO_PinInGet(gpioPortA, 0))
1693 for(
int loop1 = 0; loop1 < 300000; loop1++)
1694 GPIO_PinInGet(gpioPortA, 0);
1696 if(!GPIO_PinInGet(gpioPortA, 0))
1704 else if(!GPIO_PinInGet(gpioPortC, 14))
1707 for(
int loop1 = 0; loop1 < 300000; loop1++)
1708 GPIO_PinInGet(gpioPortC, 14);
1710 if(!GPIO_PinInGet(gpioPortC, 14))
1714 sprintf(output,
"%02d",date);
1718 else if(!GPIO_PinInGet(gpioPortD, 7))
1721 for(
int loop1 = 0; loop1 < 300000; loop1++)
1722 GPIO_PinInGet(gpioPortD, 7);
1724 if(!GPIO_PinInGet(gpioPortD, 7))
1728 sprintf(output,
"%02d",date);
1740 sprintf(output,
"%02d",hour);
1743 for(
int loop = 0; loop < 10000000; loop++)
1745 if(!GPIO_PinInGet(gpioPortA, 0))
1747 for(
int loop1 = 0; loop1 < 300000; loop1++)
1748 GPIO_PinInGet(gpioPortA, 0);
1750 if(!GPIO_PinInGet(gpioPortA, 0))
1759 else if(!GPIO_PinInGet(gpioPortC, 14))
1762 for(
int loop1 = 0; loop1 < 300000; loop1++)
1763 GPIO_PinInGet(gpioPortC, 14);
1765 if(!GPIO_PinInGet(gpioPortC, 14))
1769 sprintf(output,
"%02d",hour);
1773 else if(!GPIO_PinInGet(gpioPortD, 7))
1776 for(
int loop1 = 0; loop1 < 300000; loop1++)
1777 GPIO_PinInGet(gpioPortD, 7);
1779 if(!GPIO_PinInGet(gpioPortD, 7))
1783 sprintf(output,
"%02d",hour);
1795 sprintf(output,
"%02d",minute);
1798 for(
int loop = 0; loop < 10000000; loop++)
1800 if(!GPIO_PinInGet(gpioPortA, 0))
1802 for(
int loop1 = 0; loop1 < 300000; loop1++)
1803 GPIO_PinInGet(gpioPortA, 0);
1805 if(!GPIO_PinInGet(gpioPortA, 0))
1814 else if(!GPIO_PinInGet(gpioPortC, 14))
1817 for(
int loop1 = 0; loop1 < 300000; loop1++)
1818 GPIO_PinInGet(gpioPortC, 14);
1820 if(!GPIO_PinInGet(gpioPortC, 14))
1824 sprintf(output,
"%02d",minute);
1828 else if(!GPIO_PinInGet(gpioPortD, 7))
1831 for(
int loop1 = 0; loop1 < 300000; loop1++)
1832 GPIO_PinInGet(gpioPortD, 7);
1834 if(!GPIO_PinInGet(gpioPortD, 7))
1838 sprintf(output,
"%02d",minute);