Hallo, Ich arbeite momentan an einem Projekt mit einem STK600 und dem Prozessor AT32UC3C0512C der Firma Atmel. Im Programm wird ein Vector mit Float-Werten erzeugt der per USART an den PC übergeben werden muss. Ein Beispielprogramm der Firma Atmel habe ich bereits umgeschrieben und kann auch ein "Hello World" ausgeben. Wenn ich allerdings Zahlen übergeben will wird immer nur die letzte Ziffer übertragen. Vielleicht wisst ihr da ja eine Lösung für mein Problem. Grüße PHTH
Wenn du "Hello World" übertragen kannst, sollte eine in ASCII-gewandelte Float-ziffer kein Problem sein. Beitrag "AVR-GCC, float to Ascii"
PHTH schrieb: > Wenn ich allerdings Zahlen übergeben will wird immer nur die letzte > Ziffer übertragen. Und wie sieht das Programm dazu aus? > ein Vector mit Float-Werten erzeugt der per USART an den PC übergeben > werden muss. Und was macht der dann damit?
:
Bearbeitet durch Moderator
Danke schon mal für die schnellen Antworten! nachfolgend einmal der Code-Abschnitt für das "Hello World". ICh hoffe mal das reicht so
1 | while (1) |
2 | {
|
3 | |
4 | // Hello world!
|
5 | usart_write_line(EXAMPLE_USART, "Hello World"); |
6 | |
7 | // Press enter to continue.
|
8 | while (usart_get_echo_line(EXAMPLE_USART) == USART_FAILURE); // Get and echo characters until end of line. |
9 | |
10 | usart_write_line(EXAMPLE_USART, "Goodbye.\r\n"); |
11 | |
12 | }
|
und jetzt möchte ich anstatt des "Hello World" einen Float-Wert übergeben. die Float-Werte sollen erstmal nur am PC angezeigt werden. Gruß PHTH
PHTH schrieb: > ICh hoffe mal das reicht so Naja, meine Frage war eigentlich nach genau dem Programm, das den Fehler zeigt und nur die letzte Stelle überträgt...
Hier einmal der Code-Teil bei dem nur die letzte Ziffer übergeben wird
1 | float adc_value[1]; |
2 | adc_value[0] = 1.2; |
3 | float wert = adc_value[0]; |
4 | |
5 | while (1) |
6 | {
|
7 | usart_write_char(EXAMPLE_USART, wert); //oder usart_write_line(EXAMPLE_USART, wert); |
8 | |
9 | while (usart_get_echo_line(EXAMPLE_USART) == USART_FAILURE); |
10 | |
11 | usart_write_line(EXAMPLE_USART, "Goodbye.\r\n"); |
12 | }
|
Also ... in C gibt es verschiedene Datentypen wie float oder char. Und bei einer Funktion usart_write_char() sollte man unter Umständen auch ein char übergeben und nicht einen float. Wie man aus einem Float mit sprintf oder ähnlichem eine Zeichenkette erzeugt, steht in jedem guten C-Buch. Da werden auch die Unterschiede von float, int und char erklärt. Ein-Elementige Vektoren wie float adc_value[1] sollte auch vermieden werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.