TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: alexrlopez86 en 14 de Octubre de 2011, 16:20:30

Título: como migrar tareas simultaneas de c18 a ccs
Publicado por: alexrlopez86 en 14 de Octubre de 2011, 16:20:30
como hacer tareas simultaneas en ccs tengo el siguiente codigo de dos blink simultaneos a modo de ejemplo  


#include <p18f2550.h>

/** CONFIGURATION **************************************************/
#pragma config PLLDIV   = 5         // (CRISTAL DE 20 MHz)
        #pragma config CPUDIV   = OSC1_PLL2  
        #pragma config USBDIV   = 2        
        #pragma config FOSC     = HSPLL_HS
        #pragma config FCMEN    = OFF
        #pragma config IESO     = OFF
        #pragma config PWRT     = OFF
        #pragma config BOR      = ON
        #pragma config BORV     = 3
        #pragma config VREGEN   = ON      //REGULADOR DE VOLTAJE USB
        #pragma config WDT      = OFF
        #pragma config WDTPS    = 32768
        #pragma config MCLRE    = ON
        #pragma config LPT1OSC  = OFF
        #pragma config PBADEN   = OFF
        #pragma config STVREN   = ON
        #pragma config LVP      = OFF
        #pragma config XINST    = OFF       // CONJUNTO DE INSTRUCCIONES EXTENDIDAS
        #pragma config CP0      = OFF
        #pragma config CP1      = OFF
        #pragma config CPB      = OFF
        #pragma config WRT0     = OFF
        #pragma config WRT1     = OFF
      
/** END CONFIGURATION **************************************************/
#include "FreeRTOS.h"
#include "task.h"

#define PRIORITY_TASK0      ( tskIDLE_PRIORITY + 1 )
#define PRIORITY_TASK1      ( tskIDLE_PRIORITY + 1 )
/*************************** Tasks Prototypes ****************************/
static void vTASK0( void *pvParameters );
static void vTASK1( void *pvParameters );
/*-----------------------------------------------------------*/
void main( void ){
   TRISB=0x00;
   vPortInitialiseBlocks();

   xTaskCreate( vTASK0, ( const char * const ) "T0", configMINIMAL_STACK_SIZE, NULL, PRIORITY_TASK0, NULL );
   xTaskCreate( vTASK1, ( const char * const ) "T1", configMINIMAL_STACK_SIZE, NULL, PRIORITY_TASK1, NULL );

   vTaskStartScheduler();
}
/*-----------------------------------------------------------*/
static void vTASK0( void *pvParameters ){
   while(1)
   {
      LATBbits.LATB0=!PORTBbits.RB0;
      vTaskDelay(1000/portTICK_RATE_MS);
   }
}
/*-----------------------------------------------------------*/
static void vTASK1( void *pvParameters ){
   while(1){
      LATBbits.LATB1=!PORTBbits.RB1;
      vTaskDelay(200/portTICK_RATE_MS);
   }
}



y me gustaria saber si el rtos de ccs permite esto ya que en c18 es pocible pero el c18 para mi gusto es mas complicado.
Título: Re: como migrar tareas simultaneas de c18 a ccs
Publicado por: manutek en 14 de Octubre de 2011, 17:27:12
Hola alex fijate que reiniertl en algun momento publico al respecto de tu pregunta
Saludos
Título: Re: como migrar tareas simultaneas de c18 a ccs
Publicado por: MerLiNz en 14 de Octubre de 2011, 18:46:51
no son simulataneas, lo unico que hace es ir ejecutando una tarea, luego la otra, luego la otra... asi sucesivamente. Si pones un cristal de poca velocidad, con un osciloscopio podras ver que hay un retraso de una a otra.

http://www.freertos.org/index.html?http://www.freertos.org/a00125.html

entra ahi, te bajas el source, lo he bajado y pone algo de CCS4, desconozco si lo podras portar a CCS, por lo menos parece que si.
Título: Re: como migrar tareas simultaneas de c18 a ccs
Publicado por: Suky en 14 de Octubre de 2011, 19:09:14
Podes usar el RTOS propio de CCS.

Saludos!
Título: Re: como migrar tareas simultaneas de c18 a ccs
Publicado por: manutek en 15 de Octubre de 2011, 07:48:40
El kamarada reiniertl ACA (http://www.todopic.com.ar/foros/index.php?topic=15876.0) se explaya sobre el tema