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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.