Hallo Leute, ich sitze jetzt 2 Tage an diesen Problem und sicherlich könnt ihr mir helfen. Ich habe das ATMegaEvoBoard mit AT90CAN128 von http://www.microcontroller-starterkits.de/ und versuche über den USB-Anschluss Zeichen an meinen PC zu senden. Das Board ist korrekt als USB-Serial Port erkannt und auf 9600 Baud, 8 Databits, kein Parity, 1 Stop Bit und kein FlowControl eingestellt. Ich empfange auch Daten aber nur Müll. Habe mir auch schon das Datenblatt und verschiedene Beiträge hier durchgelesen, finde aber meinen Fehler nicht. Ich verwende AVR-Studio 4.13 SP1, AT90CAN128 plugin V106 und WinAVR 20070525. Bin über jede Hilfe dankbar. Christian
Gast
#700237
Hallo Christian, hast Du die Fuses denn auf externen Oszillator umgestellt? Gruss Otto
Gast
#700254
Hallo Christian,
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
fangen die Arrays nicht bei NULL an?( s[0..6] )Du überschreibst Dir mit s[7] die nächste Variable im Speicher. Welche, weiss ich jetzt auf Anhieb auch nicht. Am Ende vom zu sendenen String kommt eigentlich eine NULL, damit die Senderoutine weiss, wo der String aufhört. Hier egal, das Du die Länge explizit mit angibts.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
>Ich empfange auch Daten aber nur Müll.
Kannst Du den Müll in hexadezimaler Schreibweise aufzeichnen?
0xFF - "Müll" = erwartetes Zeichen, könnte es das sein?
Wie sieht dein Pegelwandler aus (USB auf dem Evalboard oder extern)?
Wie Otto schon frug, stimmen die 8Mhz?
Gruß
AxelR.
@Otto Die Fuses sind wie folgt eingestellt: Brown-Out detection disabled; JTAG Interface enabled; Serial Program downloading enabled; Boot flash section size=4096; Ext. Crystal Osc.; Frequency 8.0- MHz; Startup Time: 16K CK + 4,1 ms; @Axel Jup, das stimmt. Habe das doch glatt übersehen ;-) Daran lag es aber leider auch nicht. Ich bekomme folgende Hex-Ausgabe 28 08 49 08
Versuch mal bitte s[0]='H'; usw. Obs allerdings daran liegt ? Alex
Ein C-String ist immer nullterminiert. "H" ist äquivalent zu 'H' plus '\0'. Deshalb müsste es, wenn man die Zeichen schon einzeln schreibt, eher heißen
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
Bei der obigen Schreibweise (OP und folgende Postings) werden jedem Array-Element zwei Zeichen zugewiesen, was natürlich nicht gut gehen kann... Die einfachste Lösung ist aber sicher
1 | |
Also bitte '' und "" unterscheiden. Sind zwei verschiedene Paar Schuhe...
Gast
#700808
aja, fiel mir nicht auf, siehste :-)
So, ich habe es nun geschafft über den USART1 (USB-Anschluss) Daten an meinen PC zu senden. Leider schaffe ich es immer noch nicht Daten über den USART0 zu senden. In AVR Studio kann ich es einwandfrei simulieren. Vielleicht sieht jemand von euch den Fehler. Ist vielleicht die IO.h Datei von winavr defekt? Dann würde es unter AVR Studio laufen aber beim compilieren durch winavr fehlerhaft werden. Gruß, Christian
Fehler eingeschränkt! Der Code läuft einwandfrei. Ich habe die Ports auf ne eigene MAX232 Schaltung gesetzt und es lief. Liegt also am Board. Wenn ich den Fehler genau kenne, werde ich ihn hier posten. Falls es noch ander gibt die sich damit plagen. Gruß, Christian
Abschlußbericht: Ich habe zwei Fehler bei dem Board gefunden. Erstens war ein Pin des ST202EB IC's nicht richtig mit dem Board verbunden. Der Kleber, der den SMD-Chip beim löten festhält ist über den Pin-Anschluss gelaufen. Den Fehler konnte ich einfach durch nochmaliges per Hand löten beheben. Der zweite Fehler ist da gravierender. Laut Datenblatt des Boards ist der Pin7 vom ST202EB mit Pin2 vom SUB-D Stecker und Pin8 vom ST202EB mit Pin3 vom SUB-D Stecker verbunden. Dieses ist aber genau umgekehrt. Dadurch ist der Sender auf den Sender und der Empfänger auf den Empfänger angeschlossen. Entweder man korrigiert das jetzt selber auf den Board oder verwendet ein Nullmodemkabel. Danke nochmals für die Hilfe von euch und ich hoffe, dass anderen die mit diesem Board arbeiten dieses eine Hilfe ist. Gruß, Christian
Gast
#709111
RX-TX vertauscht? Iss ja 'nen Ding. Passiert mir sicher auch hin und wieder. Auf Bastelplatinen kein Problem. Aber bei einem kommerziellen Produkt? Sicher, das das nicht evtl. so gewollt ist? Hast Du eine SUB-D Buchse oder einen Stecker am Board?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.