Не просыпаеться не в протезе ни в железе.Попробывал и в порт записать.
Ошибка где в прерывание RBIE_bit = 1; как только я его разрешил все тишина.
Цитата:
void interrupt (void)
{unsigned short tmp;
if (TMR2IE_bit && TMR2IF_bit)
{
TMR2IF_bit = 0;
tick++;
}
if (RBIF_bit && RBIE_bit)
{
tmp = PORTB; // убрали неоднозначность
RBIE_bit = 0; // запретить прерывания по RBIE пока не спим
RBIF_bit = 0;
}
}
void main() {
kp=0;
ks=0;
m_Buttons.ucPressed = 0;
CMCON = 0x07;
PORTB = 0;
TRISB = 0xF7;
PR2 = PR2_CONST; // Настройка TMR2
T2CON = T2CON_CONST | 0x04;
TMR2IE_bit = 1;
PEIE_bit = 1;
GIE_bit = 1;
RBIF_bit = 0;
while (1)
{
if(tick >= 10 ms)
{
Task_Buttons ();
tick = 0;
tick1++;
}
if(m_Buttons.ucPressed)
{
kp = m_Buttons.ucPressed;
ks = CRC8(m_Buttons.ucPressed); // расчет КС
GIE_bit = 0;
TX_data(kp,ks); // передача посылки
GIE_bit = 1;
delay_ms(15);
}
if(tick1 >=20);
{tick1=0;
RBIE_bit = 1; // здесь разрешить прерывание
asm sleep; // и сразу в сон
}
}
}
|