LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: SJD22 em 28 de Dezembro de 2011, 00:12

Título: Serial - Evento disparado?
Enviado por: SJD22 em 28 de Dezembro de 2011, 00:12
Existe alguma forma de configurar um evento que seja disparado quando sao recebidos dados de uma porta serial num atmega1280?

Se calhar estou a pensar demasiado alto-nivel... Mas dava jeito receber uma espécie de notificação quando estivessem disponiveis dados na porta serie e nao estar em loop a ver o available() > 0.

Obg
Título: Re: Serial - Evento disparado?
Enviado por: SJD22 em 28 de Dezembro de 2011, 00:16
Reparei agora que no site do arduino falam de um evento chamado "serialEvent()".

Ao que parece ele é chamado quando existem dados disponiveis para ler...

Pergunta: se existirem dados para ler o codigo salta entao para dentro desse método e dps? Retoma a execuçao onde? Onde deixou?
Título: Re: Serial - Evento disparado?
Enviado por: senso em 28 de Dezembro de 2011, 01:05
Isso é uma espécie de callback para a interrupção que recebe os dados por serial.
Título: Re: Serial - Evento disparado?
Enviado por: SJD22 em 28 de Dezembro de 2011, 01:16
ok, mas e depois o código volta para onde estava?

Já agora, estive a ler as notas da nova release do arduino e diz la que no caso do Serial.println() a informação é enviada em background. Como é isso possivel? Isto nao é multi-thread... :)
Título: Re: Serial - Evento disparado?
Enviado por: senso em 28 de Dezembro de 2011, 02:00
É assim assim, usa interrupções para enviar e para receber, actualmente só usa para receber, mas eu tenho código em C para AvrStudio para fazer isso com buffers e verificação de erros de transmissão.