Boa noite. Estou começando recentemente a programar em C e por algumas recomendações estou usando o CCS C compiler.
Estou fazendo um projetinho caseiro com PIC 18F4680 para enviar o RPM (pegando pulso da bobina) para o celular via bluetooth (usando o HC05). Fazendo uma breve pesquisa percebi que a comunicação serial tem a limitação de enviar 8bit's, e o valor do RPM convertido excede esses 8bit's.
A ideia foi usar o timer1 e depois fazer uma conta matemática e obter o resultado em decimal, por exemplo, 2475 RPM, mas para enviar esse valor pelo serial não rolou, então tentei dividir por 100 (2475/100=24,75) e enviar, porém só transmito o 24 e o restante depois da virgula desaparece. Tentei algumas funções como, PUTC, vetor[] e etc, mas não tive sucesso.
A pergunta é: tem alguma forma mais simples de enviar esse valor?
PIC 18F4680
Desde já, agradeço.
===================================================================================
#INT_EXT // Interrupção externa
void EXT_isr(void) // Logica da contagem do timer
{
if (X = 1) // X variavel que recebe o pulso da bobina
{
RPM1 = get_timer1(); // Armazena a contagem do timer
set_timer1(5); // Degrau do timer
CALC_RPM = (1/(RPM1*0.000001599))*60; // Calculo do RPM
RPM = CALC_RPM; // Armazena o resultado do calculo do RPM
RPM_RS232 = (CALC_RPM/100); // Armazena o calculo do RPM e converte p/ ser enviado p/ SERIAL
}
else
if (x = 0)
{
set_timer1(0);
}
}
=================================================================================
#INT_RDA // Interrupção SERIAL (RS232)
void RDA_isr(void)
{
letra=getc();
switch (letra) //Armazena buffer vindo do RS232
{
case 'C': //Se chegar 'C' da serial RS232, manda RPM p/ o painel
printf("\r\n%lu\r\n",RPM_RS232);
break; //Pausa