AVR-NET-IO RS232

Gast #3499973
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.
Gast #3499984
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
}
Gast #3500014
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.
Gast #3500066
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.
#3500105
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.
#3500110
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.
Gast #3500117
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren