hi leute!
kann man über USART auch einen int-wert in der größe von ca. 16777216 senden, ohne dass man den Wert aufteilt?
mfg kati
hi leute!
kann man über USART auch einen int-wert in der größe von ca. 16777216 senden, ohne dass man den Wert aufteilt?
mfg kati
USART kann (standardgemäß) nur ein Byte senden. du mußt also 4 Byte senden und mit dem Komm-Partner ausmachen, daß die 4 Bytes zusammengehören. Riecht ein bißchen nach Protokoll, is auch eines.
Du kannst auch auf ASCII -konvertieren (printf) und sagen, bis zum CRLF gehörts immer zusammen.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
kannst du mir vl an tipp gehn, wie ich das dann im code selber ausschaut?
i weiß nämlich nicht, wie man einen so großen wert in 4 Bytes aufteilt.
danke!
mfg Kati
In C geht's mit "union" recht leicht:
union {
int32 grossezahl;
unsigned char einzeln[4];
} jenachdem;
main()
jenachdem.grossezahl = 16777216;
for { i= 0; i < 4; i++)
{
out = jenachdem. einzeln[i];
}
Auf der Empfangsseite
for { i= 0; i < 4; i++)
{
jenachdem. einzeln[i] = inp
}
printf("%d\n", jenachdem.grossezahl);
Hilft das ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
naja, i weiß net so ganz ob des mit int32 geht. weil i programmier im CodeVisionAVR und i versteh des mit dem jenachdem net so ganz. was meinst du mit jenachdem?
mfg kati
aber ich kann dir mal mein programm zeigen
hab mi da mal a bissl damit herumgespielt und einfach jeweils vier werte pro richtigen wert versucht zu senden.
mfg kati
Hi,
"jenachdem" ist einfach der Name von der union.
union {
double Zahl;
unsigned char btt[4];
}jenachdem;
jenachdem.Zahl u. jenachdem.btt[4] haben physisch die gleiche AnfangsAdresse.
jenachdem.Zahl ist der Wert als ganzes (z.B. 16777216)
jenachdem.btt[0] ist das erste Byte von dem double
jenachdem.btt[1] ist das zweite Byte von dem double
jenachdem.btt[2] ist das dritte Byte von dem double
jenachdem.btt[3] ist das vierte Byte von dem double
Und diese einzelnen Byte kannst du nacheinander senden
sagst du im C jenachdem.Zahl
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
danke
werds dann gleich ausprobieren
mfg
kati
hi! so, i habs ausprobiert, aber bei mir kommen 4 fehlermeldungen. i glaub bei CodeVisionAVR haut des ganze net so hin. außerdem gibts bei mir den befehl printf nicht. ich sende alles mit UDR.
irgendwelche klammern und beistriche fehlen.
mfg kati
Guten Morgen Katiiiii !
Für mein Verständnis : du hast einen Timer, und immer, wenn der Timer schnackelt, soll er ein double über die USART rauschicken. Ist das so ?
zweite Frage: wenn du etwas binäres binär rausschickst, muß der Empfänger aber mitspielen. WEM willst du das double schicken ? Terminal und so wird nix bringen.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen