0
我需要通過UDR0寄存器爲我的C#應用程序發送浮點數據。我可以在應用程序中讀取它,但我無法使用UDR0發送浮點數據,因爲UDR0是1個字節(8位)寄存器,浮點數是4個字節。通過UDR0上的串口寫入浮點數據?
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
void setup()
{
#define USART_BAUDRATE 9600
#define UBRR_VALUE (((F_CPU/(USART_BAUDRATE * 16UL))) - 1)
UBRR0H = (uint8_t)(UBRR_VALUE>>8);
UBRR0L = (uint8_t)UBRR_VALUE;
UCSR0B |= (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0); // Turn on the transmission, reception, and Receive interrupt
UCSR0C |= (1<<UCSZ01)|(1<<UCSZ00);
interrupts();
}
int c = 0;
float send_ ;
void loop()
{
}
ISR(USART_RX_vect)
{
cli();
while(!(UCSR0A&(1<<RXC0))){};
c= UDR0; // clear the USART interrupt
send_ = (c/4);
UDR0 = send_;
sei();
}
這意味着事情變得越來越熱。 C是好的,但註冊和portwis的東西都很累。我會考慮你的建議。謝謝 – Zgrkpnr