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
1 | ........
|
2 |
|
3 | int uart_putc (int16_t sende) {
|
4 | while (!(UCSR0A & (1<<UDRE0))) /* warten bis Senden moeglich */
|
5 | {
|
6 | }
|
7 |
|
8 | UDR0 = sende; /* sende Zeichen */
|
9 | return 0;
|
10 | }
|
11 |
|
12 | .........
|
13 |
|
14 | int main (void) {
|
15 |
|
16 | int16_t s1=0, s2=0, s3=0, s4=0;
|
17 | uart_init();
|
18 |
|
19 | while (1){
|
20 |
|
21 | s1 = 99;
|
22 |
|
23 | uart_putc (s1);
|
24 | }
|
25 | ....
|
26 | }
|