Hallo Leute, hab gerade ein kleines Problem mit dem Atmega32 auf dem Board von Pollin. Ich wollte mir vom Atmega einige Werte als ASCI-Zeichen über die serielle Schnittstelle ausgeben lassen. MAX232 ist ja soweit vorhanden, sollte also eigentlich nicht so schwer sein dachte ich. Hab dann einen kleinen Code geschrieben, die Schnittstelle eingestellt und das Programm auf den Controller gespielt. Allerdings gibt der Controller den String nicht aus wenn ich mit einem PortSniffer meinen Com-Port beobachte. Gibt es hier noch andere Dinge zu beachten?Der Code ist einwandfrei, hab auch schon mehrere Beispiele ausprobiert, ohne Erfolg.
wenn der code tun würde, würde es funktionieren. wir kennen deinen KOT nicht. du hast ihn auch nicht angehängt .... unsere kristall kugeln sind im urlaub
Sorry hatte ich vergessen, hier der KOT
1 | #include <avr/io.h> |
2 | |
3 | #define TAKT 3680000
|
4 | #define UART_BAUDRATE 9600
|
5 | |
6 | // Berechnung der Konfigurationsparameter
|
7 | #define UART_SETTING ((TAKT/16L/UART_BAUDRATE)-1)
|
8 | |
9 | |
10 | void setup_uart() |
11 | {
|
12 | /* Baudrate einstellen */
|
13 | UBRRH = (char) (UART_SETTING >> 8); |
14 | UBRRL = (char) (UART_SETTING); |
15 | |
16 | /* Empfänger und Sender einschalten */
|
17 | UCSRB = (1<<RXEN) | (1<<TXEN); |
18 | |
19 | /* Asynchron, 8N1 */
|
20 | UCSRC = (1<<URSEL) | (3<<UCSZ0); |
21 | }
|
22 | |
23 | void uart_putchar(char c) |
24 | {
|
25 | // Warten bis Buffer bereit ...
|
26 | while (!(UCSRA & (1 << UDRE))) |
27 | ;
|
28 | |
29 | // Senden...
|
30 | UDR = c; |
31 | }
|
32 | |
33 | void uart_putstring(char *str) |
34 | {
|
35 | unsigned char i; |
36 | |
37 | for (i=0;i<255;i++) /* Maximal 255 Zeichen ausgeben ... */ |
38 | {
|
39 | if (str[i] != 0) |
40 | uart_putchar(str[i]); |
41 | else
|
42 | break; // Ende des Strings erreicht |
43 | }
|
44 | }
|
45 | int main(void) |
46 | {
|
47 | setup_uart(); |
48 | uart_putstring("AVRBUCH.DE - RS232 [OK]...\r\n\r\n"); |
49 | while (1) |
50 | {
|
51 | }
|
52 | return 0; |
53 | }
|
:
Bearbeitet durch User
>Gibt es hier noch andere Dinge zu beachten?
Du lieferst zu wenig Informationen. Das kann alles mögliche sein.
Benutzt du ein Nullmodemkabel?
Bert schrieb: > #define TAKT 3680000 Shure? 3,68MHz ist zumindest nicht ganz üblich... Beschreibe bitte, wie du zu diesem Takt kommst. In allen Einzelheiten.
Nein einen USB Seriell Wandler, mit dem war eine Verbindung im Auslieferungszustand des Boards möglich also sollte dieser funktionstüchtig sein.
>Shure? 3,68MHz ist zumindest nicht ganz üblich...
Das NET-IO hat einen 16MHz Quarz.
>Allerdings gibt der >Controller den String nicht aus wenn ich mit einem PortSniffer meinen >Com-Port beobachte. Vieleicht gibt der Controller den String ja doch aus und du bist nur mit dem falschen COM Port verbunden. Oder dein Portsniffer funktioniert nicht. Was für ein Portsniffer überhaupt? Nimm HTERM, stell den richtigen COM Port und Baudrate ein und sieh nach was da kommt.
Stimmt ist 16MHz gewesen, das habe ich soweit angepasst und auch mal den HTerm PortSniffer ausprobiert, einstellungen gemacht jedoch kommt keine Kommunikation zustande.
>jedoch kommt keine >Kommunikation zustande. Hast du auch auf Connect gedrückt? Was heisst keine Kommunikation? Kommt gar nichts, oder was falsches? Lass dir doch nicht alles aus der Nase ziehen.
Keine Kommunikation heisst halt das ich vom Controller nichts empfange obwohl ich ja eigentlich vom Programm her eine Zeichenfolge sende. Klar hab ich auf Connect gedrückt ganz so schlimm steht es um mich dann doch nicht.
Nimm mal ein anderes Testprogramm
1 | ...
|
2 | int main(void) |
3 | {
|
4 | setup_uart(); |
5 | |
6 | while (1) |
7 | {
|
8 | uart_putchar( 'x' ); |
9 | }
|
10 | return 0; |
11 | }
|
Und dann beginnst du am Prozessor mal mit einer LED (+330Ohm, gegen Masse verbunden) nachzusehen, ob es am TxD Pin vom µC blinkt. Dieses Blinken verfolgst du zum MAX232 wo es am TxIn Pin reingeht und am TxOut Pin wieder rauskommt. Von dort verfolgst du es bis zum RS232 Anschluss. Dort muss es anliegen und aufs Kabel gehen und am PC an dessen RxD Anschluss wieder rauskommen.
:
Bearbeitet durch User
Der SChnelltest geht übrigens so: Nimm den µC aus dem Sockel. Mit einem Stückchen Draht verbindest du im Sockel den TxD Pin mit dem RxD Pin. Dann startest du am PC dein Terminalprogramm (lässt es verbinden) und klimperst auf der Tastatur. Wenn das was du tippst im Terminal wieder erscheint, dann machst du den Gegentest: du nimmst die Drahtbrücke wieder raus. Damit muss dann auch das Echo vom Getippten aufhören. Wenn dem nichts so ist, dann hast du ein Hardwareproblem. Wahrscheinlich ein falsch gekreuztest RS232 Kabel. Du könntest dich auch beim Aufbau rund um den MAX232 verlötet haben. Stell dann diese Sachen erst mal richtig. Dieser 'Schnelltest' muss funktionieren. Er testet die komplette Übertragungskette vom PC zum µC und wieder zurück. Wenn dieser Test nicht wie erwartet funktioniert, dann ist deine LED wieder ein gutes Hilfsmittel. Dazu brauchst du noch einen Stein, um ihn am PC auf die Tastatur zu legen. Mit dem Blinken der LED verfolgst du wieder die Zeichen, diesmal ausgehend vom PC die komplette Kette, bis du weißt wo sie verschwinden.
:
Bearbeitet durch User
>Wahrscheinlich ein falsch gekreuztest RS232 Kabel.
Nein, hat er nicht. Mit der Originalsoftware ging es ja.
Ich würde evtl. mal alle Programme die auf diesen USB-RS232
Adapter zugreifen schliessen, das Teil abziehen, 10s warten
das Ding dann wieder anschliessen. Noch mal versuchen.
holger schrieb: >>Wahrscheinlich ein falsch gekreuztest RS232 Kabel. > > Nein, hat er nicht. Mit der Originalsoftware ging es ja. Hab ich das überlesen oder wo hast du die Information her?
holger schrieb: >>Hab ich das überlesen oder wo hast du die Information her? > > > Beitrag "Re: AVR-NET-IO RS232" Ah, danke. Das ändert die Sache natürlich.
Erstmal Danke für eure Unterstützung und Hilfe!! Werd das gleich das nächste Mal ausprobieren wenn ich Zeit hab werd mich dann wieder melden.
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.