olá,,, preciso fazer uma antena girar usando um motor de passo e que os dados analogicos de tensao gerados pela antena sejam armazenados num buffer do dspic e enviados posteriormente via porta serial para o computador para ser analisado no matlab.
os botoes 1 e 2 servem apenas para ajeitar a posiçao inicial... quando apertar o botao 3 a cada passo do motor o valor analogico de tensao que vem da antena deve ser convertido para digital pelo conversor analogico - digital do dspic e armazenado no buffer.
quando o botao 4 for apertado os dados que estavam no buffer do dspic devem ser enviados para o computador via porta serial..
minha duvida esta justamente nesse envio de dados para a memoria e aquisição desses dados posteriormnete...não sei nem por onde começar =/ ... comecei a programar a pouco tempo... segue uma imagem do pic no ISIS e o codigo ate onde fiz ,,, já ajuda muito respondendo qualquer coisa !!
defineOUT1LATBbits.LATB10 //LATx escreve dados no port
defineOUT2LATBbits.LATB11
defineOUT3LATBbits.LATB12
defineOUT4LATBbits.LATB13
void inicializa(void);
void delay_ms(unsigned int tempo);
void delay_us(unsigned int tempo);
void rota (int step);
void main(void)
{
int step=0;
int aux;
inicializa();
OUT1=0;
OUT2=0;
OUT3=0;
OUT4=0;
while(1)
{
if (BT1==0)//dá um passo no sentido horario
{
step++;
if (step>3) step =0;
rota (step);
}
if (BT2==0)//dá um passo no sentido anti-horario
{
step--;
if (step<0) step =3;
rota (step);
}
/*aux depende do angulo de giro do motor, q no caso é 5.625, logo 1 volta completa necessita 64 passos */
if (BT3==0)//dá uma volta no sentido horario
{
for(aux = 0 ;aux <64 ; aux++ )
{
step++;
if(step>3) step=0;
rota(step);
minha duvida começa aki !!! . como enviar os dados da antena ate a memoria do pic??para qual porta devo enviar o sinal analógico ??como fazer a conversao analog - dgital ??como armazenar os dados na memoria ??
}
}
if botao 4 -- como pegar os dados da memoria e enviar ao pc via serial ??
}//while
}//main
void inicializa(void)
{
ADPCFG=0x00FF;
TRISB=0b0000001110000000;
TRISA=0b0000000000010000;
}
void delay_ms(unsigned int tempo)
{
unsigned int tempo1;
if (!tempo) return;
for (tempo1=1;tempo1<=tempo;tempo1++) delay_us(500);
Pergunta
Eric Cerqueira
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.