Forum: Mikrocontroller und Digitale Elektronik AVR-NET-IO RS232


von Bert (Gast)


Lesenswert?

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.

von ... (Gast)


Lesenswert?

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

von Bert (Gast)


Lesenswert?

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
von holger (Gast)


Lesenswert?

>Gibt es hier noch andere Dinge zu beachten?

Du lieferst zu wenig Informationen. Das kann alles mögliche sein.
Benutzt du ein Nullmodemkabel?

von c-hater (Gast)


Lesenswert?

Bert schrieb:

> #define  TAKT      3680000

Shure? 3,68MHz ist zumindest nicht ganz üblich...

Beschreibe bitte, wie du zu diesem Takt kommst. In allen Einzelheiten.

von Bert (Gast)


Lesenswert?

Nein einen USB Seriell Wandler, mit dem war eine Verbindung im 
Auslieferungszustand des Boards möglich also sollte dieser 
funktionstüchtig sein.

von holger (Gast)


Lesenswert?

>Shure? 3,68MHz ist zumindest nicht ganz üblich...

Das NET-IO hat einen 16MHz Quarz.

von holger (Gast)


Lesenswert?

>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.

von Bert (Gast)


Lesenswert?

Stimmt ist 16MHz gewesen, das habe ich soweit angepasst und auch mal den 
HTerm PortSniffer ausprobiert, einstellungen gemacht jedoch kommt keine 
Kommunikation zustande.

von holger (Gast)


Lesenswert?

>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.

von Bert (Gast)


Lesenswert?

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.

von holger (Gast)


Angehängte Dateien:

Lesenswert?

Nimm die HEX Datei im Anhang und probier die mal.

von Karl H. (kbuchegg)


Lesenswert?

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
von Karl H. (kbuchegg)


Lesenswert?

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
von holger (Gast)


Lesenswert?

>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.

von Karl H. (kbuchegg)


Lesenswert?

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?

von holger (Gast)


Lesenswert?

>Hab ich das überlesen oder wo hast du die Information her?


Beitrag "Re: AVR-NET-IO RS232"

von Karl H. (kbuchegg)


Lesenswert?

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.

von Bert (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.