AT90CAN128 Uart Problem

OP #700225
Lesenswert?

Hallo Leute,

ich sitze jetzt 2 Tage an diesen Problem und sicherlich könnt ihr mir 
helfen.
Ich habe das ATMegaEvoBoard mit AT90CAN128 von 
http://www.microcontroller-starterkits.de/ und versuche über den 
USB-Anschluss Zeichen an meinen PC zu senden. Das Board ist korrekt als 
USB-Serial Port erkannt und auf 9600 Baud, 8 Databits, kein Parity, 1 
Stop Bit und kein FlowControl eingestellt. Ich empfange auch Daten aber 
nur Müll.
Habe mir auch schon das Datenblatt und verschiedene Beiträge hier 
durchgelesen, finde aber meinen Fehler nicht.
Ich verwende AVR-Studio 4.13 SP1, AT90CAN128 plugin V106 und WinAVR 
20070525.

Bin über jede Hilfe dankbar.

Christian
Angehängte Dateien:
Gast #700254
Lesenswert?

Hallo Christian,
1
int main(void)
2
{
3
  uart1_init();
4
  sei();        //  generelle Interruptfreigabe
5

6
  char s[7];
7
  s[1]="H";
8
  s[2]="e";
9
  s[3]="l";
10
  s[4]="l";
11
  s[5]="o";
12
  s[6]="!";
13
  s[7]="!";
14
  uart1_send(s,7);
15
}

fangen die Arrays nicht bei NULL an?( s[0..6] )Du überschreibst Dir mit 
s[7] die nächste Variable im Speicher.
Welche, weiss ich jetzt auf Anhieb auch nicht. Am Ende vom zu sendenen 
String kommt eigentlich eine NULL, damit die Senderoutine weiss, wo der 
String aufhört. Hier egal, das Du die Länge explizit mit angibts.
1
int main(void)
2
{
3
  uart1_init();
4
  sei();        //  generelle Interruptfreigabe
5

6
  char s[7];
7
  s[0]="H";
8
  s[1]="e";
9
  s[2]="l";
10
  s[3]="l";
11
  s[4]="o";
12
  s[5]="!";
13
  s[6]=0x00;
14
  uart1_send(s,7);
15
}

>Ich empfange auch Daten aber nur Müll.

Kannst Du den Müll in hexadezimaler Schreibweise aufzeichnen?
0xFF - "Müll" = erwartetes Zeichen, könnte es das sein?
Wie sieht dein Pegelwandler aus (USB auf dem Evalboard oder extern)?
Wie Otto schon frug, stimmen die 8Mhz?

Gruß
AxelR.
OP #700269
Lesenswert?

@Otto

Die Fuses sind wie folgt eingestellt:
Brown-Out detection disabled;
JTAG Interface enabled;
Serial Program downloading enabled;
Boot flash section size=4096;
Ext. Crystal Osc.; Frequency 8.0- MHz; Startup Time: 16K CK + 4,1 ms;


@Axel
Jup, das stimmt. Habe das doch glatt übersehen ;-)
Daran lag es aber leider auch nicht.
Ich bekomme folgende Hex-Ausgabe
28 08 49 08
#700413
Lesenswert?

Ein C-String ist immer nullterminiert. "H" ist äquivalent zu 'H' plus 
'\0'. Deshalb müsste es, wenn man die Zeichen schon einzeln schreibt, 
eher heißen
1
 char s[7];
2
  s[0]='H';
3
  s[1]='e';
4
  s[2]='l';
5
  s[3]='l';
6
  s[4]='o';
7
  s[5]='!';
8
  s[6]=0x00; 
9
  //oder alternativ: 
10
  s[6] = '\0';
Bei der obigen Schreibweise (OP und folgende Postings) werden jedem 
Array-Element zwei Zeichen zugewiesen, was natürlich nicht gut gehen 
kann...

Die einfachste Lösung ist aber sicher
1
char s[] = "Hello!";

Also bitte '' und "" unterscheiden. Sind zwei verschiedene Paar 
Schuhe...
OP #708222
Lesenswert?

So,

ich habe es nun geschafft über den USART1 (USB-Anschluss) Daten an
meinen PC zu senden. Leider schaffe ich es immer noch nicht Daten über
den USART0 zu senden. In AVR Studio kann ich es einwandfrei simulieren.
Vielleicht sieht jemand von euch den Fehler. Ist vielleicht die IO.h
Datei von winavr defekt? Dann würde es unter AVR Studio laufen aber beim
compilieren durch winavr fehlerhaft werden.

Gruß,

Christian
Angehängte Dateien:
OP #708578
Lesenswert?

Abschlußbericht:

Ich habe zwei Fehler bei dem Board gefunden.
Erstens war ein Pin des ST202EB IC's nicht richtig mit dem Board 
verbunden. Der Kleber, der den SMD-Chip beim löten festhält ist über den 
Pin-Anschluss gelaufen. Den Fehler konnte ich einfach durch nochmaliges 
per Hand löten beheben.

Der zweite Fehler ist da gravierender. Laut Datenblatt des Boards ist 
der Pin7 vom ST202EB mit Pin2 vom SUB-D Stecker und Pin8 vom ST202EB mit 
Pin3 vom SUB-D Stecker verbunden. Dieses ist aber genau umgekehrt. 
Dadurch ist der Sender auf den Sender und der Empfänger auf den 
Empfänger angeschlossen. Entweder man korrigiert das jetzt selber auf 
den Board oder verwendet ein Nullmodemkabel.

Danke nochmals für die Hilfe von euch und ich hoffe, dass anderen die 
mit diesem Board arbeiten dieses eine Hilfe ist.

Gruß, Christian
Gast #709111
Lesenswert?

RX-TX vertauscht? Iss ja 'nen Ding.
Passiert mir sicher auch hin und wieder. Auf Bastelplatinen kein 
Problem.
Aber bei einem kommerziellen Produkt? Sicher, das das nicht evtl. so 
gewollt ist? Hast Du eine SUB-D Buchse oder einen Stecker am Board?

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