Hallo, ich versuche vom µC an den PC nacheiander folgende Integers zu senden: 512 1023 5 21 30 512 915 400 Funktioniert prinzipiell auch, nur leider kommen völlig andere Zahlen im Terminal-Programm an: 88 245 132 37 244 133 77 68 245 86 244 132 244 Komisch ist ja schonmal, dass es 13 Zahlen sind statt 8. Der größte Wert scheint die 245 zu sein. Was passiert da? PS: Ich habe das Senden per UART nach dem Tutorial implementiert. MFG Daniel
Hi Daniel, das sieht sehr nach einer nicht übereinstimmenden Baudrate aus. Also Dein ATMEGA32 sendet nicht mit der Baudrate, die Du im Terminal eingestellt hast. Weiter können Anzahl der Stopbits und ein unterschied- liches Paritybit der Fall sein. Diese Einstellungen solltest Du nochmal prüfen. Für die Baudrate im ATMEGA solltest Du prüfen, ob der ATMEGA-CPY-Takt stimmt, dann die Baudratenregister richtig gesetzt sind. Im Terminalprogramm natürlich auch prüfen, ob diese Parameter richtig eingestellt sind. Wenn Du ein Scope hast, kannst Du es an die Sendeleitung des ATMEGAS anschließen. Wenn Du kontinuierlich ein 'U' (0x55) sendest und mit 1 Stopbit und keinem Parity arbeitest, dann ist auf dem Scope ein Rechtecksignal zu sehen. Bei 9600 Baud ist die Dauer eines Bits, also von einer Flanke zur nächsten 1,041msec. Viel Erfolg Joachim
erst mal arbeitet eine UART immer nur Byteorientiert, grössere Datentypen als ein char bestehen also aus mehreren Bytes. Die Uart selbst kann also keine Integers versenden, dass ist von der Sende-Software auf einzelne Bytes aufzudröseln und beim Empfänger wieder richtig zusammenzusetzen. 512 1023 5 21 30 512 915 400 Wenn man den jeweils kleinsten möglichen Datentyp nimmt, kommt man dabei auf exakt 13 Bytes :-) Die Werte passen aber nicht zu den empfangenen. Was genau hast du auf MC- und PC-Seite gemacht? Ohne genauere Infos kann man nur Rätselraten.
Um es nochmals deutlich zu sagen: 1023 passt nicht in ein Byte, da passt maximal 255 rein. Der mega kann auch 9 bits, damit kommt man dann auf 511 (aber das können die wenigsten Terminalprogramme). Ciao Willi
habe auch mal probleme mit oben beschriebenem verhalten gehabt -> bei mir warens falsch gesetzte fusebits (ext. crystal xMHz - xMHz, CLKOPT, ...) einen genauen grund hab ich damals im datenblatt nicht finden können ??!? Neubi
@ crazy horse @ Willi Wacker Zu euren Anmerkungen, daß in ein Byte nur 255 dec. reinpassen..... Ist schon richtig. Habt ihr schon mal ein Terminalprogramm gesehen, das die empfangen Binärdaten also ein Byte umwandelt und in dezimal ausgibt???? Ich noch nicht. Also wenn man ein Byte mit 65 dec. überträgt, wird im Terminal nie 65 angezeigt sondern ein 'A', weil 65 der code für das 'A' ist. Also nehme ich an, das Daniel eine ASCII Übertragung vornimmt. Da kann man dann auch "1888" in 4 Bytes packen. Joachim
> Habt ihr schon mal ein Terminalprogramm > gesehen, das die empfangen Binärdaten also ein Byte umwandelt > und in dezimal ausgibt???? Ich noch nicht. http://www.der-hammer.info/terminal/hterm.zip HTERM gibt binär, dezimal, hex und ascii aus. Man kann ebenso in bin, dez, hex und ascii senden. Ein sehr schönes Programm... Gruß Marc
Hallo,
@Hans-joachim Borchers:
dann muß er sich wohl hier genauer ausdrücken...
>ich versuche vom µC an den PC nacheiander folgende Integers zu senden
Gruß aus Berlin
Michael
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.