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

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

Отправлено puh 10 июля 2003 г. 12:25

Есть код. Не компиляется. Скажите пожалуйста, какие настройки нужно прописать в salvocfg.h, чтоб закампилялся.

Вот ошибка - Error[000] D:\home\projects\slp800aa.lib(binsem.obj) 13 : signatures do not match: _OSWaitBinSem (D:\home\projects\slp800aa.lib: binsem.obj): 0x1069/0x2069
Error[000] : function _OSCreateBinSem is not called from specified interrupt level
Error[000] : function _OSReturnBinSem is not called from specified interrupt level
BUILD FAILED


#include "salvo.h"
//#include

#define BAUD 9600
#define FOSC 40000000L
#define NINE 0 /* Use 9bit communication? FALSE=8bit */
#define OUTPUT 0
#define INPUT 1

#define DIVIDER 64
#define HIGH_SPEED 0

#if NINE == 1
#define NINE_BITS 0x40
#else
#define NINE_BITS 0
#endif

#if HIGH_SPEED == 1
#define SPEED 0x4
#else
#define SPEED 0
#endif

/* Serial initialization */
#define init_comms() \
{ \
SPBRG = DIVIDER; \
TXSTA = (SPEED|NINE_BITS|0x20); \
RCSTA = (NINE_BITS|0x90); \
}

char rc;
char tx;
char counter;

_OSLabel(tl1);
_OSLabel(tl2);
_OSLabel(tl3);

#define rs232Rc OSECBP(1)

void task1(void) {
for(;;) {
OS_Delay(200, tl1);
TXREG = '*';
}
}

void task2(void) {
for(;;) {
OS_Yield(tl2);
}
}

void task3(void) {
for(;;) {
OS_WaitBinSem(rs232Rc, OSNO_TIMEOUT, tl3);

if (++counter > 9) {
counter = 0;
}
tx = rc;
// GIE = 0;
TXIE = 1;
// GIE = 1;
}
}

void OSIdleTaskHook( void ) {
}

void main(void) {
TRISC = 0b10100111;

ADCON1 = 7;
TRISE = 0;
LATE = 1;
PORTC = 0xFF;

init_comms();

SYNC = 0;
SPEN = 1;

TMR0IE = 0;
TMR0IF = 0;

T0CON = 0b11000111;

IPEN = 0;
PEIE = 1;
TXIE = 0;
RCIE = 1;

TXEN = 1;
CREN = 1;

SSPEN = 0;

TMR0 = 0;
TMR0IF = 0;
TMR0IE = 1;

OSInit();

OSCreateBinSem(rs232Rc, 0);

OSCreateTask(task1, OSTCBP(1), 5);
OSCreateTask(task2, OSTCBP(2), 10);
OSCreateTask(task3, OSTCBP(3), 3);

GIE = 1;

for (;;) {
OSSched();
}
}


#pragma interrupt_level 0
interrupt void intr(void){
if (TXIF == 1 && TXIE == 1){
TXREG = rc;
TXIE = 0;
RC4 ^= 1;
}

if (RCIF == 1 && RCIE == 1){
RC4 ^= 1;
rc = RCREG;
OSSignalBinSem(rs232Rc);
}

if (TMR0IF == 1 && TMR0IE == 1){
TMR0IF = 0;
OSTimer();
RC3 ^= 1;
}
}


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

Ответы



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

E-mail: info@telesys.ru