Un saludo amigos del foro...
Interesante tema.. ya he hecho algunas cosas con el RTOS de CCS; transmision serial, manejo de LCD, RTC, leds etc, usando las librerias de CCS para esto y no he tenido problemas: Sin embargo estoy requiriendo realizar una rutina de barrido de varios display de siete segmentos y estoy asignandole un rate=1ms por lo que segun entiendo en minor_cycle debe de ser tambien de 1ms y el max=1ms. tambien estoy haciendo otras cosas con rate mayores a 50ms, 200ms y 500ms entre estas mostrar datos en LCD, esta tarea tiene un rate de 250ms pero el compilador no me deja asignarle un max mayor de 1ms creo que p´q este es el minimo tiempo de rate dado por la primera tarea. Mi problema esta en ke la instruccion lcd_putc() tarda mas de 1ms y cuando corro el programa intenta arrancar y se bloquea... si subo el rate de la primera tarea pejm a 10ms el programa corre bien, pero necesito que ese rate sea de 1ms.. como podria solucionar este problema??? gracias por su ayuda.. aki coloco parte del codigo:
#use RTOS(timer=0) // no le asigno minor_cycle y dejo ke el compilador lo calcule
//********Tareas Rapidas********//
#task(rate=1ms)
void desplaza_display ();
#task(rate=50ms)
void procesa_trama_radar();
#task(rate=100ms)
void presentacion();
//==============================//
//********Tareas Medias********//
#task(rate=150ms)
void fija_velocidad_up();
#task(rate=150ms)
void fija_velocidad_down();
#task(rate=250ms)
void alarma_intermitente ();
#task(rate=500ms)
void imprime ();
//============================//
void imprime()
{
lcd_gotoxy(0,1);
printf(lcd_putc,"VEL MAX: %2u Km/h",VEL_MAX);
lcd_gotoxy(0,2);
printf(lcd_putc,"Detec: %3u Km/h",vel_capturada);
}
void desplaza_display()
{
for(barrido_display=0;barrido_display<6;barrido_display++)
{
PORTC=(dinamica[barrido_display]);
switch(barrido_display){
case 0:
PORTB=(tab7segK[vel_und]);
break;
case 1:
PORTB=(tab7segK[vel_und]);
break;
case 2:
PORTB=(tab7segK[vel_dec]);
break;
case 3:
PORTB=(tab7segK[vel_dec]);
break;
case 4:
PORTB=(tab7segK[vel_cen]);
break;
default:
PORTB=(tab7segK[vel_cen]);
rtos_yield();
}