LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: LuísR.A. em 29 de Julho de 2012, 21:20

Título: Multi task com arduino
Enviado por: LuísR.A. em 29 de Julho de 2012, 21:20
eu quero substituir o microcontrolador basicx por um arduino porque é mais barato e estou a pensar usar o arduino leonardo.

gostava de saber se esse arduino suporta multi task

eu uso o multi task do basicx para coisas muito simples como usar uma ponte H com pwmout porque tambem uso um servo de posição e sem o multi task os motores nao funcionam correctamente. tambem uso para mais algumas coisas de vez em quando
Título: Re: Multi task com arduino
Enviado por: Sérgio_Sena em 29 de Julho de 2012, 21:30
Para fazer esse trabalho, não precisas de multitasking.

Precisas sim de usar interrupções. É o suficiente.
E o Arduino deixa-te usá-las como quiseres, basta correr os tutoriais e manuais, está lá tudo escrito.

Título: Re: Multi task com arduino
Enviado por: LuísR.A. em 29 de Julho de 2012, 22:00
se quiser a posição do servo e manter os motores a girar numa direção posso usar interrupções? é algo que nunca usei.
eu uso o pwmout para controlar os motores ou servos de rotação continua

tenho um picaxe em que ao usar estas ordens ao mesmo tempo causa o pwmout e duty serem constantes e não podem ser alterados enquanto o a posição do servo funciona. ja me falaram sobre as interrupções mas não faço a minima como usar. ja li num manual mas nao sei como isso me pode ajudar neste problema


Título: Re: Multi task com arduino
Enviado por: Sérgio_Sena em 29 de Julho de 2012, 22:05
No PICAXE é natural que isso aconteça. É um sistema pequeno e com recursos muito limitados.
Também já programei uns chips desses, e portaram-se bem para o fim em vista.
lembro-me de na altura lhe implementar as interrupções para os timers. Veja no manual do Picaxe, está lá explicado.

As interrupções são as melhores amigas de um programador de firmware em sistemas embedded.
Possibilitam um sistema "multitask virtual" onde na realidade as coisas acontecem encadeadas e não ao mesmo tempo, dando a parecença de ser tudo instantâneo.

A interrupção é um evento que acontece no microprocessador, que faz com que o mesmo pare a tarefa A, vai executar a B, e depois volta exactamente para o que estava a fazer na tarefa A.
Isto explicado de uma forma simplista.

Faz uma pesquisa no google, há muita informação sobre interrupções.
Título: Re: Multi task com arduino
Enviado por: LuísR.A. em 29 de Julho de 2012, 22:10
ja tive a ver os interrupts do arduino e realmente deve resultar para fazer tudo.

outra pergunta que tenho é se tal como no picaxe a variavel "timer" fica doida sempre que se usa pwmout?
tipo o timer continua a funcionar mas com o pwmout cada tick não é controlavel e por isso durante o uso de pwmout o timer pode dizer que passou 10 segundos quando mal passou 1 segundo.

eu tive grandes problemas com isso no picaxe que não gostava de ter no arduino
Título: Re: Multi task com arduino
Enviado por: Sérgio_Sena em 29 de Julho de 2012, 22:21
Não posso confirmar isso no PICAXE. O tmepo que passei a mexer neles, foi em emergência. Tive que aprender em duas horas e montar o projecto para ser apresentado noutras três.
Mas se isso acontece mesmo, é um erro grave no Picaxe, e natural pois provavelmente o timer e o pwm usam o mesmo temporizador interno.

No Arduino isso não vai acontecer, pois o pwm e o timer são periféricos separados onde a única coisa que partilham é o oscilador de entrada.
Título: Re: Multi task com arduino
Enviado por: LuísR.A. em 29 de Julho de 2012, 22:26
muito obrigado era mesmo isso que queria saber.
assim sou capaz de trocar para o arduino que a diferença de preço é grande

sim no picaxe o timer e o pwmout usam o mesmo temporizador.
so as pausas funcionam.