Я хочу отправить двойную форму u C на P C. Например: в u C у меня есть double pi = 3.1415 после отправки его в P C, консоль (в P C) должна показывать 3.1415. Мне нужно преобразовать double в char, поэтому я использовал sprintf () для его преобразования. Если честно, я не уверен, что sprintf () конвертирует double в char [], но это моя единственная идея. После отправки пи на P C моя консоль показывает:? <00> <00> 4f <00> ˙˙. Вот мой код:
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
void print_char(char letter)
{
if( bit_is_set(UCSRA, UDRE) )
{
_delay_ms(10);
UDR=letter;
loop_until_bit_is_set(UCSRA, TXC);
}
}
int main(void)
{
UBRRL = 103; //9600 16mhz
UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
double pi=3.1415;
char cpi[8];
sprintf(cpi,"%#.4f", pi);
while(1)
{
for(int i=0; i<8; i++) print_char(cpi[i]);
UDR=0x0D;
UDR=0x0A;
_delay_ms(1000);
}
}
Как это исправить или как правильно конвертировать double в char [].