Forum: Mikrocontroller und Digitale Elektronik Crumb2560: USART Schnittstelle mit CP2102 USB-Wandler


von flying_dutchman (Gast)


Lesenswert?

Hallo Forum,

ich arbeite zur Zeit mit dem (an sich) recht praktischen Crumb2560-Board 
von Chip45.com. Leider besteht das Problem, das es mir nicht gelingen 
will die serielle Kommunikation mit dem PC zum laufen zu bringen.

Von der Platine wird angeblich der USART1 mit dem CP2102-Chip als 
USB-Port bereitgestellt. So lässt sich die Platine direkt ohne weiteres 
am Rechner anschließen, und mittels einer virtuellen Konsole 
(/dev/ttyUSB0) die Daten auslesen. Verwendet wurde dazu HTerm.

Das CKDIV8-Fusebit wurde gelöscht, damit der externe 16Mhz-Quarz auch 
voll genutzt wird. Die korrekte Kernfrequenz würde mittels blinkenden 
LEDs überprüft.

Am entsprechenden Sende-Pin (PD3) liegen 5V an.

Sämtliche Einstellungen sind doppelt gecheckt, und stammen aus dem 
Handbuch bzw. den reichlich vorhandenen Tutorials im Internet. Hier die 
relevanten Codestücke:
1
#define F_CPU 16000000
2
#define BAUD 38400
3
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)
4
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))
5
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD)
6
7
#if ((BAUD_ERROR<980) || (BAUD_ERROR>1020))
8
   #error Baudratenfehler groesser als 2% und damit zu hoch! 
9
#endif
10
11
void initUSART(uint16_t ubrr){
12
   /* Set baud rate */
13
   UBRR1H = (uint8_t)(ubrr >> 8);
14
   UBRR1L = (uint8_t)(ubrr & 0xFF);
15
   /* Enable transmitter */
16
   UCSR1B |= _BV(TXEN1);
17
}
18
19
void USART_Transmit( uint8_t data )
20
{
21
  while ( !( UCSR1A & (1<<UDRE1)) );
22
  UDR1 = data;
23
}

Es kommen aber keine Daten am PC an. Woran könnte das liegen? Was könnte 
ich noch testen?

Beim Empfang (Aktivierung von RXEN1) tut sich ebenfalls nichts. 
Allerdings scheint die Einstellung korrekt zu sein, da beim weiteren 
Testen am Port PD2 mit einem Taster ein Signal erzeugt wurde. Dieses hat 
der Controller als Datenempfang interpretiert und eine LED getoggelt.

Bin echt verzweifelt...
Die Dokumentation vom Crumb-Board ist auch recht dünn...
Wie könnte man den USB-Wandler direkt testen?

Vielen Dank für die Antworten und mit Grüßen
    flying_dutchman

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Den USB-Wandler kannst Du direkt testen, indem Du die Verbindung seiner 
RX- und TX-Signale zum µC trennst und dann diese beiden Signale 
miteinander verbindest.

Ein angeschlossener PC bekommt so von ihm gesendete Daten als Echo 
zurückgesandt, was sich mit einem einfachen Terminalprogramm wie 
HyperTerminal testen lässt.

von flying_dutchman (Gast)


Lesenswert?

Hallo
Danke für den Tipp. In unserem Fall leider nicht so einfach möglich, da 
das BGA-Gehäuse bereits auf die Platine gelötet ist.

Allerdings stellte sich bei genauem betrachten der Crumb-Platine heraus, 
das der USB-Wandler nicht an USART1 hängt... Entgegen der Info auf der 
Herstellerseite, 
http://www.chip45.com/index.pl?page=Crumb2560&sub=technical&lang=de, 
hängt der Wandler an USART0.

Wieso der Hersteller so spärliche und falsche Informationen zu seinem 
coolen Produkt ins Netz stellt ist mir aber Schleierhaft.

Vielleicht hilft unser Problem aber auch anderen...

von P. S. (Gast)


Lesenswert?

flying_dutchman wrote:

> Allerdings stellte sich bei genauem betrachten der Crumb-Platine heraus,
> das der USB-Wandler nicht an USART1 hängt... Entgegen der Info auf der
> Herstellerseite,
> http://www.chip45.com/index.pl?page=Crumb2560&sub=technical&lang=de,
> hängt der Wandler an USART0.

Auf dem Schema ist es dann richtig:

http://www.chip45.com/download/Crumb2560_V1.0_Schematic.pdf

> Wieso der Hersteller so spärliche und falsche Informationen zu seinem
> coolen Produkt ins Netz stellt ist mir aber Schleierhaft.

Reichlich ist es wirklich nicht, aber was wuerdest du dir noch erwarten?

von Anon Y. (avion23)


Lesenswert?

Hallo flying_dutchman,

ich verwende die uart lib von Peter fleury. Die ist getestet und 
funktioniert.

Die fehlenden und widersprüchlichen Angaben auf der Homepage kann ich 
bestätigen. Ich habe nur mit dem crumb128 gearbeitet. Wenn es beim dem 
crumb2560 auch so ist wirst du noch viele Überraschungen erleben. 
Schreib dir am besten alle Fallstricke auf weil in 3 Monaten weißt du es 
nicht mehr.

von flying_dutchman (Gast)


Lesenswert?

Naja, ich würde mich erstmal freuen wenn die Angaben auf der 
Herstellerseite stimmen würden ;-)

Hast recht, das Schematic stimmt. Wenn man aber die Tabelle auf der 
Seite sieht, nimmt man es erstmal für bare Münze --  reichlich 
verwirrend...

Nagut, jetzt klappt es.

von P. S. (Gast)


Lesenswert?

Anon Ymous wrote:

> Wenn es beim dem
> crumb2560 auch so ist wirst du noch viele Überraschungen erleben.
> Schreib dir am besten alle Fallstricke auf weil in 3 Monaten weißt du es
> nicht mehr.

Welche sollen das denn sein? So viel ist ja nicht drauf.

von Anon Y. (avion23)


Lesenswert?

Z.B. dass die Schaltung nicht über den USB mit strom versorgt wird. Das 
war mir nicht klar.

Und den von chip45 angebotenen bootloader fand ich unmöglich.

Das mitgelieferte Datenblatt stimmte nicht mit der Schaltung überein. 
Leider genau dort wo ich drauf vertraut habe :(

von P. S. (Gast)


Lesenswert?

Anon Ymous wrote:
> Z.B. dass die Schaltung nicht über den USB mit strom versorgt wird. Das
> war mir nicht klar.

Dafuer ist ja der Jumper da...?

> Und den von chip45 angebotenen bootloader fand ich unmöglich.

Hm, den habe ich mir nicht mal angesehen, ich wusste nicht mal, dass sie 
sowas anbieten. Ich war ja nur an der Hardware interessiert.

> Das mitgelieferte Datenblatt stimmte nicht mit der Schaltung überein.
> Leider genau dort wo ich drauf vertraut habe :(

Ja, sehr unschoen.

von flying_dutchman (Gast)


Lesenswert?

Hallo

habe die PeterFleury Bibliothek auch mal ausprobiert -- es funktionierte 
auf Anhieb. Sehr schönes Ding, das hätte ich mal vorher wissen sollen, 
dann häte ich den eigentlichen Fehler vielleicht schneller gefunden ;-)

Also, dann werde ich mich mal weiter beschäftigen. Gibt es eigentlich 
ein Wiki oder eine andere Art offene Community für die 
Crumb-Plattformen? Für Arduino zB gibt es davon Massenhaft, und wenn es 
da so viele Fallstricke gibt...

von P. S. (Gast)


Lesenswert?

flying_dutchman wrote:

> Also, dann werde ich mich mal weiter beschäftigen. Gibt es eigentlich
> ein Wiki oder eine andere Art offene Community für die
> Crumb-Plattformen?

Faende ich nun etwas uebertrieben. Es gibt ja noch mehr Boards dieser 
Art und im Endeffekt ist wirklich nicht viel dran.

> Für Arduino zB gibt es davon Massenhaft, und wenn es da so viele Fallstricke 
gibt...

Na, da bin ich noch gespannt.

von Erik Lins (Gast)


Lesenswert?

Hallo flying_dutchman,

puh, da ist die Homepage in der Tat fehlerhaft. Auch der RS232 Wandler 
hängt nicht an UART0, sondern an UART2... Asche auf mein Haupt.

Danke für die Kritik, gerne auch direkt an mich beim nächsten Mal. Ich 
werde die Infosheets kurzfristig überarbeiten und etwas ausführlicher 
gestalten. Nachdem was ich bislang an Rückmeldung zu meinen Crumb 
Modulen bekommen habe, verwenden die meisten User den Schaltplan als 
Doku. So viel ist ja wirklich nicht drauf auf den Teilen. Trotzdem werde 
ich die Infosheets mal etwas überarbeiten.

Viele Grüße,
ER!K

von Erik Lins (Gast)


Lesenswert?

Hallo Anon Ymous,

es gibt seit einer Weile einen neuen Bootloader chip45boot2, der 
deutlich besser ist, als der alte chip45boot. Er liest nun direkt Intel 
Hex Files per UART ein und stellt seine Baudrate automatisch ein. Es 
gibt vorkompilierte Hexfiles für viele Controller.

Viele Grüße,
ER!K

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.