реклама на сайте
подробности

 
 
> Ошибка
_trunk_
сообщение Oct 3 2011, 11:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 21-09-11
Пользователь №: 67 308



Помогите разобраться. Пишу программу для 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.

Сообщение отредактировал _trunk_ - Oct 3 2011, 12:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
Сергей Борщ
сообщение Oct 3 2011, 12:17
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Оберните определение каждой функции Exec в namespace OS {}:
CODE
namespace OS
{
    OS_PROCESS void TProc1::Exec()
    {
      for(;;)
        {
           LED_PORT ^= (1<<LED1);
           Sleep(500);
        }
    }
}


P.S. И используйте конопку при публикации исходников.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_trunk_
сообщение Oct 3 2011, 12:27
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 21-09-11
Пользователь №: 67 308



К сожалению все те же ошибки. Ничего не изменилось.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 3 2011, 12:40
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (_trunk_ @ Oct 3 2011, 15:27) *
К сожалению все те же ошибки. Ничего не изменилось.
Да, в самом деле. Вы обрезали сообщение об ошибке, а я поторопился. Добавьте еще template<> перед каждым определением Exec.
CODE
namespace OS
{
    template <>
    OS_PROCESS void TProc1::exec()
    {


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_trunk_
сообщение Oct 3 2011, 12:58
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 21-09-11
Пользователь №: 67 308



теперь такая ошибка:

Error[Pa002]: the type attribute "__task" is not allowed on this declaration D:\Programs\IAR AVR\FILES\scmRTOS-proj-IAR\test3\main.cpp 41
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 3 2011, 15:54
Сообщение #6


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(_trunk_ @ Oct 3 2011, 19:58) *
теперь такая ошибка:

Error[Pa002]: the type attribute "__task" is not allowed on this declaration D:\Programs\IAR AVR\FILES\scmRTOS-proj-IAR\test3\main.cpp 41

Нужно template<> оставить, а OS_PROCESS тут убрать.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
_trunk_
сообщение Oct 4 2011, 06:51
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 21-09-11
Пользователь №: 67 308



спасибо, получилось
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 21:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016