Вопрос по ОС для MSP430
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено mai 14 июля 2003 г. 11:19

1. Попробовал ипользовать scmRTOS (брал здесь _http://scmrtos.narod.ru/). Переделанный пример автора привожу ниже. Вопрос: как только привлекаю ОС к участию в обработке прерываний от таймера, работа программы нарушается.
2. Приблизительно тоже самое творится с uCOS- то работает, то нет. О похожей проблеме весной много писал Soic. Чем закончилась борьба с ОС у него?

#include

DefineProcess(TSlonProc, 80); // 80 bytes Stack Size
DefineProcess(TMamontProc, 80); // 80 bytes Stack Size
DefineProcess(TSlonickProc, 80); // 80 bytes Stack Size

TSlonProc SlonProc (pr0);
TMamontProc MamontProc (pr1);
TSlonickProc SlonickProc (pr2);

#define ZM 4

unsigned int DT0=5000;
unsigned char en=1;

//#define OS_INT

#ifdef OS_INT
extern "C" OS_INTERRUPT void Timer_A1(void);
#pragma vector=TIMERA1_VECTOR
OS_INTERRUPT void Timer_A1(void)
{
OS::TISR_Wrapper ISR;
volatile unsigned int v;
v=TAIV;
CCR1 += DT0;
if(en) P3OUT^= ZM;
}
#else
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1( void )
{
volatile unsigned int v;
v=TAIV;
CCR1 += DT0;
if(en) P3OUT^= ZM;
}
#endif

OS::TEventFlag EventFlag;

//------------------------------------------------------------------------------
int main()
{
P3DIR |= ZM;
OS::Run();
}
//------------------------------------------------------------------------------
OS_PROCESS void TSlonProc::Exec()
{
for(;;)
{
EventFlag.Wait();
{
TCritSec cs;
en= !en;
}
}
}
//------------------------------------------------------------------------------
OS_PROCESS void TMamontProc::Exec()
{
for(;;)
{
Sleep(60);
EventFlag.Signal();
}
}
//------------------------------------------------------------------------------
OS_PROCESS void TSlonickProc::Exec()
{
TACTL = TASSEL1 + TACLR; // Source = SMCLK, clear TAR
CCTL1 = CCIFG | CCIE; // CCR1 interrupt enabled
TACTL |= MC_2; // Start Timer_A in continuous mode

for(;;)
{
{
TCritSec cs;
// if(en) P3OUT^= ZM;
}
Sleep(2);
}
}

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru