ATmega8のシリアルポートを使ってprintf関数を使って浮動小数点値を表示しようとしましたが、浮動小数点値を表示する代わりに「?」文字が表示されます。出力は
浮く: ?
ここにコードがあります
#include <stdio.h>
#include <float.h>
#include <avr/io.h>
int printCHAR(char character, FILE *stream)
{
while(!(UCSRA&0x20));
UDR=data;
return 0;
}
FILE uart_str = FDEV_SETUP_STREAM(printCHAR, NULL, _FDEV_SETUP_RW);
int main(void)
{
float fl = 1.3;
stdout = &uart_str;
UCSRB=0x18; // RXEN=1, TXEN=1
UCSRC=0x06; // no parit, 1-bit stop, 8-bit data
UBRRH=0;
UBRRL=71; //9600 baud rate
while(1)
{
printf("\r\nFloat: %f",fl);
}
}