18.05.2014 Views

SISTEMA EMBARCADO DE AQUISIC¸ ˜AO DE DADOS ...

SISTEMA EMBARCADO DE AQUISIC¸ ˜AO DE DADOS ...

SISTEMA EMBARCADO DE AQUISIC¸ ˜AO DE DADOS ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

e eficiência do tamanho do código. Contudo, isto é um pequeno preço a se pagar<br />

em relação à versatilidade e portabilidade que a linguagem C propicia. O uC/OS<br />

pode ser configurado para ser pequeno e eficiente em CPUs de 8 bits com limitada<br />

memória e velocidade de processamento, ou pode ser configurado para grandes sistemas<br />

com ilimitados recursos. Há muitos núcleos em tempo real disponíveis para<br />

microcontroladores de 8 bits e 16 bits como os Motorola 68HC11 e 68HC12, mas o<br />

uC/OS tem uma boa virtude que é oferecer muitos recursos em relação ao pouco<br />

hardware exigido para funcionamento. Uma outra vantagem é que o código fonte<br />

está disponível, desde sua criação em 1992, e impecavelmente bem escrito e muito<br />

bem documentado no livro (LABROSSE 2002).<br />

As tarefas podem ser codificadas independentemente umas das outras como elas<br />

tivessem controle completo sobre a CPU. A Figura 7.1 mostra um fluxograma para<br />

um sistema que usa um kernel preemptivo. As tarefas são de dois tipos: as relacionadas<br />

a inicialização e outras de execução que estão contidas em um loop sem<br />

fim. Se a CPU estiver executando uma tarefa que não é a de mais alta prioridade,<br />

o kernel pode sobrepor uma tarefa por outra de mais alta prioridade.<br />

Task1 () Task2 () Task3 ()<br />

Kernel Preemptivo<br />

Figura 7.1: Fluxo de um programa multi-tarefa preemptivo.<br />

Um kernel preemptivo além de facilitar a construção de programas, permite o<br />

aproveitamento das tarefas e possibilita que as tarefas de mais alta prioridade tenha<br />

melhor tempo de resposta a eventos. Para ilustrar esta situação, vamos ver o tempo<br />

de resposta a um evento que é detectado através de uma interrupção, mas servido<br />

192

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!