Hallo,
ich möchte gerne eine Integer Zahl die gröer als 255 spricht mehr als 2Byte hat über UART senden.
Ich Schreibe die Zaheln über eine Varibale und einen Aufruf in das UDR register. Ist der Wert kleiner 256 spricht hat nur zwei Byte kommen die entsprechend beim Empfänger an.
Ist die Zahl größer 255 also 3 Byte so kommen beim Empfänger (HTERM) nur die letzten beiden Stellen Hexadezimal an.
Beispiel:
Sende: 99 (INT) Empfänger: 63 (HEX)
Sende: 255 Empfänger: FF
Sende: 300 Empfänger: 2C statt 12C
Sende: 1222 Empfänger: C6 statt 4C6
Controller: Atmega 1284P
Code:
........
int uart_putc (int16_t sende) {
while (!(UCSR0A & (1<<UDRE0))) /* warten bis Senden moeglich */
{
}
UDR0 = sende; /* sende Zeichen */
return 0;
}
.........
int main (void) {
int16_t s1=0, s2=0, s3=0, s4=0;
uart_init();
while (1){
s1 = 99;
uart_putc (s1);
}
....
}
Lesezeichen