Meu problema é que eu não consigo enviar os dados conforme requisição do PC, como, por exemplo, enviando um "ok" do computador e então o PIC envia os dados.
Tentei usar o comando UART1_Data_Ready e o break, mas o não consigo ativar a transmissão de dados novamente após o break.
Estou usando um PIC 16F877A com um crystal de 4 Mhz. Para a conexão com o computador eu estou usando um cabo USB com um conversor USB-Serial.
O compilador utilizado é o MikroC PRO
Segue o código
- Código: Selecionar todos
float adc2, adc5;
float conv2, conv5;
char sonar2[7], sonar5[7];
unsigned char vector[80];
void sonar()
{
adc2=adc_read(2); //read signal from sonar 3, AN2
delay_ms(100);
conv2=adc2*0.0135;
floattostr(conv2,sonar2);
adc5=adc_read(5); //read signal from sonar 6, AN5
delay_ms(100);
conv5=adc5*0.0135;
floattostr(conv5,sonar5);
}
void main()
{
trisa=0b00101111;
trise=0b00000111;
porta=0b00000000;
porte=0b00000000;
adcon1= 0b00000000; //portas analogicas utilizadas pg 114
delay_us(100); //required acquisition time
UART1_Init(9600); // Initialize UART module at 9600 bps
Delay_ms(100); // Wait for UART module to stabilize
adc_init();
delay_ms(300);
while (1)
{
sonar();
strcpy(vector,sonar2); //builds the data to be send
strcat(vector," ");
strcat(vector,","); //separetes the data to be analised in the computer
strcat(vector," ");
strcat(vector,sonar5); //builds the data to be send
//vector will be sent as data_sonar2 , data_sonar5
if (UART1_Data_Ready() == 1)
{
UART1_Write_Text(vector); //sends the vector
delay_ms(500);
break;
}
}
}
Se alguém puder me ajudar, vou ser imensamente agradecido.