اطلاعیه

Collapse
No announcement yet.

استفاده از کتابخانه salvo برای realtime کار کردن با pic18f452

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    استفاده از کتابخانه salvo برای realtime کار کردن با pic18f452

    سلام دوستای گلم من یکم تازه واردم :biggrin:
    اگه کسی میتونه کمکم کنه که بدونم مشکل برنامه زیر چیه؟
    این برنامه با استفاده از mplabc18 کامپایل شده
    پروژه اول:روشن و خاموش کردن چند led
    برنامه باید اهداف زیر را در بر بگیرد

    Task 1, calledtask_B0, flashes the LED connected to port RB0 at a rate of 250ms

    Task 2, calledtask_B1, flashes the LED connected to port RB1 at a rate of 500ms

    Task 3, calledtask_B2, flashes the LED connected to port RB2 once a second

    کد:
    #include <salvo.h>
    #undef OSC //necessary for this Salvo version, as it also defines this name
    #include <p18f452.h>
    #include <timers.h>
    #pragma config OSC = HS, OSCS = OFF //HS oscillator, oscillator switch off
    #pragma config PWRT = ON, BOR = OFF //pwr-up timer on, brown-out detect off
    #pragma config WDT = OFF //watchdog timer off
    #pragma config STVR = ON, LVP = OFF //Stack overflow reset enable on,
    //low voltage programming off
    //These functions are tasks.
    void b0_Task( void );
    void b1_Task( void );
    void b2_Task( void );
    //Define labels for context switches
    _OSLabel(b0_Task1)
    _OSLabel(b1_Task1)
    _OSLabel(b2_Task1)
    void b0_Task(void)
    {
    for (;;) { //infinite loop
    TRISBbits.TRISB0=0;
    PORTBbits.RB0=~ PORTBbits.RB0; 
    OS_Delay (25,b0_Task1); //Task switch, delay for 20x10ms, (200ms)
    //Use smaller delay for simulation
    }
    }
    void b1_Task(void)
    {
    for (;;) { //infinite loop
    TRISBbits.TRISB1=0;
    PORTBbits.RB1=~ PORTBbits.RB1; 
    OS_Delay (50,b1_Task1); //Task switch, delay for 50x10ms, (500ms)
    //Use smaller delay for simulation
    }
    }
    void b2_Task(void)
    {
    for (;;) { //infinite loop
    TRISBbits.TRISB2=0;
    PORTBbits.RB2=~ PORTBbits.RB2; 
    OS_Delay (100,b2_Task1); //Task switch, delay for 20x10ms, (200ms)
    //Use smaller delay for simulation
    }
    }
    /***************************************************************************
    Main
    ***************************************************************************/
    void main( void )
    {
    //Initialise
    TRISB = 0b10000000; //Setall Port b bits to output, except bit 7.
    PORTB = 0; //Setall Port b outputs low
    
    //Initialise RTOS
    OSInit();
    OSCreateTask(b0_Task, OSTCBP(1), 10); //Create the b0_Task Task
    OSCreateTask(b1_Task, OSTCBP(2), 10); //Create the b1_Task Task
    OSCreateTask(b2_Task, OSTCBP(3), 10); //Create the b2_Task Task
    //Enable interrupts
    OSEi();
    //Scheduling Loop
    for (;;)
    OSSched();
    }
    اگر برنامه بالا را RUNکنید خطا دریافت خواهید کرد :angry:

    #2
    پاسخ : استفاده از کتابخانه salvo برای realtime کار کردن با pic18f452

    سلام.
    متاسفانه یه خرده کاربرهای MPLAB تو انجمن کم هستن. و من هم جزو اون افراد نیستم!
    ولی خب لااقل میشه بپرسم متن Errorهایی که میده چی هست؟

    دیدگاه

    لطفا صبر کنید...
    X