Forum: Mikrocontroller und Digitale Elektronik USB-Kommunikation hinkt


von Rolf W. (humpe)


Angehängte Dateien:

Lesenswert?

Hallo Gemeinde!

Ich hab da ein kleines Problem mit meinem USB-Seriell-Wandler. Ich 
verwende einen FT232BM für meine uC-Kommunikation. Leider bringe ich die 
Kommunikation nicht hin und hab leider keinen KO um die Signale zu 
messen. Ich hab die Schaltung zwei mal Fräsen lassen und beide bestückt. 
Habe auf beiden Prints die gleichen Phänomene.
So wie's scheint stimmt der Takt nicht ganz, denn ein zwei Bytes von 100 
kommen richtig an, aber naja, eigentlich erwarte ich 0.0% Fehler.
Ich habs mit Frequenzen zwischen 2400-38400 versucht, überall das selbe. 
Auch die Einstellungen im uC hab ich ein dutzend mal überprüft.

Die Spannungen die ich messen konnte habe ich überprüft, das sollte 
alles korrekt sein.

Nun hab ich mal gedacht vielleicht fällt jemandem von euch gleich etwas 
auf, was an der schaltung probleme machen könnte!

Gruss
Humpe

von blubb (Gast)


Lesenswert?

das bild bitte in einer passenderen qualität
so sieht man nix ...

dann :

wenn man davon ausgeht das der FTDI geht ..
wo sind die sourcen von der UART des µC ?

und baudraten versuchen ist nicht
lege dir eine baudrate fest und nutze diese
alles andere  geht eh schief

es sei denn man baut eine autobaudfunktion mit ein ..

von blubb (Gast)


Lesenswert?

dann noch

µC ... baudratenquarz ?
oder wie sind die fuses gesetzt ??

mehr infos !!!!

von Rolf W. (humpe)


Lesenswert?

Da hst du wohl recht, geht besser mit zwei bilder.
Dazu ist zu sagen, hab dne 8Mhz-Quarz des uC durch einen 14.7456Mhz 
Quarz ersetzt. Gespiesen ist die Schaltung mit 3.3V
Die Clock Fuses hab ich leider nicht im Kopf und kann den uC im Moment 
nicht anhängen. Was würdest du denn mit dieser Konfiguration empfehlen`?
BAUD-Settings: U2x=0, UBRR=23. Also eigentlich möchte ich 38400baud, 
aber hab halt andere ausprobiert um den Fehler auszuschliessen!

Hier noch der Code der Initialisierung:
1
void USART_Init(void) {
2
3
// Sets Baudrate
4
  UBRR0H=0;
5
  UBRR0L=(unsigned long)F_CPU/((unsigned long)BAUD<<4)-1;
6
 
7
 
8
  UCSR0B |= (1<<RXEN) | (1<<TXEN) | (1<<RXCIE);              //Transmit- u Receive-Enable und Receive-Interrupt-Enable setzen
9
10
  UCSR0C |= (1<<UCSZ0) | (1<<UCSZ1);               //8-Bit Telegramm
11
12
13
// use USART for printf function
14
  stdout = &mystdout;
15
16
  }

(--> UBRR wird richtig gesetzt, habs auch mal direkt reingeschrieben)

Hier noch der Code der Empfangsroutine:
1
/*****************************************************************************/
2
/*                                                                           */
3
/* Routine um ein Byte von der UART-Schnittstelle zu empfangen               */
4
/* WER / 03.02.10                                                            */
5
/*                                                                           */
6
/*****************************************************************************/
7
8
unsigned char UART_Receive(void) {
9
unsigned char i=0, data=0x00;
10
  while(((UCSR0A & (1<<RXC))==0) && (i<100)){  //Warten bis Daten empfangen (40ms Timeout)
11
    _delay_us(400);              //400us warten
12
    i++;                  //Zählvariable i inkrementieren
13
  }
14
  data = UDR0;                //Byte von Datenregister einlesen
15
  checksum += data;              //Daten zur Checksumme addieren
16
  return data;                //Daten übergeben
17
}

Gruss

von Frank K. (fchk)


Lesenswert?

Dass die FTDI-Bausteine einen SECHS MHz Quarz brauchen, weißt Du? Wenn 
ich das richtig entziffere, hast Du da 8 MHz eingebaut. Dann ist das 
kein Wunder, dass die Baudraten nicht stimmen.

fchk

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die korrekte Funktion des FT232 kannst Du überprüfen, indem Du den 
Controller weglässt und die RX- und TX-Leitungen des FT232 miteinander 
verbindest. Schließt Du den Aufbau an einen PC an und verwendest ein 
Terminalprogramm, solltest Du abgesendete Daten als Echo sehen können.

Wenn das sichergestellt ist, kannst Du Dich mit Deinem µC beschäftigen, 
vorher ist das nicht sinnvoll.

von Rolf W. (humpe)


Angehängte Dateien:

Lesenswert?

Hier noch die Bilder!

Huch, das ist auch ein Fehler im Schema, dort hab ich einen 6Mhz 
verbaut! Sorry für die Fehler!

Gruss

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.