Witam
czas uruchomienia programu <600 - pierwszy z warunków ma być fałszywy
problem:
problem pojawia się (za którymś tam razem) gdy zostaje odebrany znak z UARTA0 (uart0 na przerwaniu) wtedy jakimś cudem wskakuje do
wyświetlam tam: 60*sTime.uiMinute + sTime.uiSecond i tu pojawia się fałsz tj wartość ta jest taka, że nie mógł sie wykonać pierwszy warunek...
Niestety nie posiadam Jtag'a.
(W dokumentacji piszą o atomic block ale to przy odczycie z rejestrów I/0)
volatile struct _sTime
{
volatile uint8_t uiHours;
volatile uint8_t uiMinute;
volatile uint8_t uiSecond;
};
...
...
if((60*sTime.uiMinute + sTime.uiSecond)>=600)
{
eMAIN_AutomatState = SERVICE_accepted;
}
if(true==volatileEverySecondsToggle && FREE==TxBufor_0.eTxStatuss)//tylko do spr. że czas liczy sie ok
{
itoa ((3600ul*sTime.uiHours + 60*sTime.uiMinute + sTime.uiSecond), buffer, 10);
strcpy (TxBufor_0.cData, buffer);
Tx_SendData_0(&LLW_UART_set);
_delay_ms(300);
volatileEverySecondsToggle=false;
}
...
...
ISR(SIG_OUTPUT_COMPARE1A)
{
TCNT1 = 0x0000;
sTime.uiSecond++;
if(sTime.uiSecond==60)
{
sTime.uiSecond=0;
sTime.uiMinute++;
}
if(sTime.uiMinute==60)
{
sTime.uiMinute=0;
sTime.uiHours++;
}
volatileEverySecondsToggle=true;
}
czas uruchomienia programu <600 - pierwszy z warunków ma być fałszywy
problem:
problem pojawia się (za którymś tam razem) gdy zostaje odebrany znak z UARTA0 (uart0 na przerwaniu) wtedy jakimś cudem wskakuje do
eMAIN_AutomatState = SERVICE_accepted;wyświetlam tam: 60*sTime.uiMinute + sTime.uiSecond i tu pojawia się fałsz tj wartość ta jest taka, że nie mógł sie wykonać pierwszy warunek...
Niestety nie posiadam Jtag'a.
(W dokumentacji piszą o atomic block ale to przy odczycie z rejestrów I/0)