RoundRobin RTX Keil

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

RoundRobin RTX Keil

Mensagempor J » 08 Jul 2011 07:51

Estou fazendo alguns testes com o RTOS Keil e achei interessante. Confesso que antes de conhecer este recurso eu já fazia algo parecido com o Timer. Eu dividia o menino em contagens de tempos em main e ia gerenciando meu programa num conceito multitarefa, porém todas as funções tinham que ser otimizadas para não ficarem em loop (dava trabalho, mas ficava bom).

Agora com o RTOS (que gostaria de testar a tempos) tudo ficará mais profissional, acredito eu.

Minha dúvida é o seguinte: Utilizando RoundRobin devo utilizar interrupções normalmente (vou utilizar a serial por exemplo) ou é melhor criar uma task pra ficar monitorando o periférico ? (já ví em algum fórum, ou aqui mesmo alguém que fez isso). Gostaria de saber com quem já tem experiência o que é melhor.
J
Nibble
 
Mensagens: 74
Registrado em: 13 Jan 2009 02:49

Mensagempor cortex » 08 Jul 2011 09:34

eu utilizo uma task para cada tarefa, no caso da serial deixo uma task monitorando a interrupção, funciona blz!
cortex
Byte
 
Mensagens: 121
Registrado em: 27 Out 2010 10:32

Mensagempor barboza » 08 Jul 2011 09:38

Deixo uma tarefa para tratar os dados recebidos que via interrupção enviam mensagens do RTOS para a task em questão.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor J » 08 Jul 2011 11:07

barboza escreveu:Deixo uma tarefa para tratar os dados recebidos que via interrupção enviam mensagens do RTOS para a task em questão.


Vamos ver se eu entendi: Eu crio uma Task para controlar a UART e na rotina da interrupção eu Inicializo essa Task. Logo que a transmissão/recepção termina eu desabilito a Task, é isso ??
J
Nibble
 
Mensagens: 74
Registrado em: 13 Jan 2009 02:49

Mensagempor barboza » 08 Jul 2011 11:55

J escreveu:
barboza escreveu:Deixo uma tarefa para tratar os dados recebidos que via interrupção enviam mensagens do RTOS para a task em questão.


Vamos ver se eu entendi: Eu crio uma Task para controlar a UART e na rotina da interrupção eu Inicializo essa Task. Logo que a transmissão/recepção termina eu desabilito a Task, é isso ??



Pelo o RTOS você pode enviar mensagens para uma determinada tarefa.

Neste caso, no init você inicia a tarefa que ficará esperando pela mensagem com o conteúdo recebido da serial/int.

Algo tipo assim:


Código: Selecionar todos

void init_tasks(void)
{
   Start_Task1();
   Start_Task2();
   Start_Task3();
   Start_Task_Serial();
}


void Task_Serial(void)
{
   for (;;)
   {
      if (WaitMsg(x))
      {
         Trata o conteudo recebido
       }
   }
}

void Uart() interrupt x
{
   if (RX)
   {
      send msg to task Serial;
   }
}
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor J » 12 Jul 2011 07:56

Ok, fiz alguns testes aqui e entendí bem.

Estou com outra dúvida:

Após eu pressionar um botão, eu teria que acionar alguma função do RTOS (não sei se ela existe) que contasse um tempo até esse botão ser acionado novamente, ou seja, preciso após um evento saber o tempo exato que existe até que esse evento aconteça novamente.

Como poderia ser feito com o RTOS ?
J
Nibble
 
Mensagens: 74
Registrado em: 13 Jan 2009 02:49


Voltar para ARM

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x