Помогите разобраться. Пишу программу для Atmega8535. Использую при этом scmRTOS 3.10 и компилятор IAR 6.3. При компиляции получаю ошибку:
Error[Pe795]: specializing function "OS::process<pr, stack_size, rstack_size>::Exec [with pr=OS::pr0, stack_size=(word)40U, rstack_size=(word)10U]" D
Код программы:
#include <ioavr.h>
#include <scmRTOS.h>
//---------------------------------------------------------------------------
typedef OS::process<OS::pr0, 40, 10> TProc1;
typedef OS::process<OS::pr1, 40, 10> TProc2;
//---------------------------------------------------------------------------
TProc1 Proc1;
TProc2 Proc2;
//---------------------------------------------------------------------------
#define LED1 0
#define LED2 1
#define LED_DDR DDRB
#define LED_PORT PORTB
int main()
{
LED_DDR = 0xff;
LED_PORT = (1<<LED1)|(1<<LED2);
TCNT0 = 0xf0;
TCCR0 = 0x05;
TIMSK |= (1 << TOIE0);
OS::Run();
}
//---------------------------------------------------------------------------
OS_PROCESS void TProc1::Exec()
{
for(;;)
{
LED_PORT ^= (1<<LED1);
Sleep(500);
}
}
//---------------------------------------------------------------------------
OS_PROCESS void TProc2::Exec()
{
for(;;)
{
LED_PORT ^= (1<<LED2);
Sleep(120);
}
}
//---------------------------------------------------------------------------
void OS::SystemTimerUserHook()
{
TCNT0 = 0xf0;
}
Место обнаружения ошибки - на этой строке: OS_PROCESS void TProc1::Exec()
Для функции TProc2::Exec() - такая же ошибка.
Вроде как все согласно документации на scmRTOS.