AVR-NET-IO RS232

Gast #3499973
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
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
Gast
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
>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
Stimmt ist 16MHz gewesen, das habe ich soweit angepasst und auch mal den 
HTerm PortSniffer ausprobiert, einstellungen gemacht jedoch kommt keine 
Kommunikation zustande.
Gast
>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.
Gast
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.
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
>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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.