Показать сообщение отдельно
Старый 21.12.2010, 12:17   #744   
Форумец
 
Сообщений: 82
Регистрация: 13.09.2010

Азат вне форума Не в сети
Не просыпаеться не в протезе ни в железе.Попробывал и в порт записать.
Ошибка где в прерывание 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; // и сразу в сон
}
}
}

Последний раз редактировалось Азат; 21.12.2010 в 13:05.
  Ответить с цитированием