ATmega16A Max232 Sendeproblem

OP #2888446
Lesenswert?

Hallo Zusammen !

Ich beschäftige mich seit einigen Wochen mit den AVR Chips. Zur Zeit 
versuche ich über die UART Schnittstelle Zeichen einzulesen.

Die Verdrahtung habe ich nach der Schaltung hier 
[[http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART]] 
aufgebaut, also die Erste ganz oben. Die Verbindung zum PC geht über 
einen USB to RS232 Stick von Conrad(FTDI).

Also, ohne die Verdrahtung (SUB D9(Pin3) zu Max232(Pin13)) versendet der 
AVR wunderbar Zeichen an mein Terminal Programm. Aber sobald ich die 
Verbindung Pin13 zu Pin3 herstelle, empfange ich nichts mehr.
Wenn ich im Terminal auf Senden drücke empfange ich kryptische Zeichen. 
Je länger die Zeichenkette die ich Sende je länger auch die Zeichen die 
ich empfange. Das merkwürdige ist, dass ich das im Code(s.u.) nicht 
eingestellt habe.

Ich verstehe nicht warum nichts mehr funktioniert sobald ich die 
Verbindung herstelle.
Für jegliche Vorschläge bin sehr Dankbar

Gruß Jörg

1
#include <avr/io.h>
2
#include <util/delay.h>
3
#define F_CPU 8000000
4
#define BAUD 9600
5
#define MYUBRR (F_CPU/(16L*BAUD))-1
6

7
void inituart();
8
void sendletter(unsigned char);
9

10
int main(void)
11
{
12
  inituart();
13
  while(1)
14
  {
15
  sendletter('.');
16
  }  
17
}
18

19
void inituart()
20
{
21
  UBRRH = (MYUBRR >> 8);
22
  UBRRL = MYUBRR;
23
  UCSRB = (1<<RXEN)|(1<<TXEN);
24
  UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
25
}
26

27
void sendletter(unsigned char letter)
28
{
29
  _delay_us(500);
30
  while ( !( UCSRA & (1<<UDRE)) );
31
  UDR = letter;
32
}
#2888954
Lesenswert?

ist zwar nicht von Belang, aber wofür ist das

 _delay_us(500); ?

Ansonsten: Evtl. Leitungen vertauscht, so dass Ausgänge aufeinander 
treiben oder der Max232 in die Knie geht?

Mach mal ein paar Loop-Tests (Verbindungen danach natürlich wieder 
lösen):

1) Am AVR rx und tx verbinden. alles was Du sendest, muss genauso wieder 
ankommen.
2) das gleiche "hinter" dem Max232 (vom uC aus gesehen)
3) am USB-Adapter auf PC-Seite rx und tx verbinden - alles was Du 
eintippst, sollte als echo zurückkommen
4) das gleiche "hinter" dem Max232 (auf AVR-Seite)

wenn das alles geht - bleibt nicht viel..

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