www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FT232 - Mega644 - Baudrate macht Probleme


Autor: F. V. (coors)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi, mit folgendem Layout kriege ich keine Verbindung bei 9600 Baud hin. 
Interessanter Weise scheint der fehler irgendwo beim Empfangen von Daten 
zu liegen.

Benutzt wird die Lib von P. Fleury.

uart_puts("abc") wird korrekt uebermittelt.
uart putc(c) allerdings nicht.

(c ist der gelesene char, der reinkommt)

Sieht jemand warum das so ist?
Benutzt wurde auch ein 18.432 MHz Quarz, allerdings auch ohne Erfolg.

Gehoert das "shield" vom USB-Stecker eigentlich auf GND oder auf die 
"freie" Kupferflaeche? Testweise alles probiert, hat aber auch keine 
Abhilfe geschaffen.

Ein Ferrite Bead habe ich nicht verwendet, da ich vorerst nichts 
brauchbares bei Digikey finden konnte. Falls da jemand Erfahrung hat bin 
ich dankbar fuer Tips.

Danke fuer die Hilfe!

Autor: F. V. (coors)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier noch Anhang 2

Autor: Markus H. (rf-bug)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

der FT232 läuft eigentlich stabil. Selbst mit "Flugverdrahtung". Bei der 
USB-Buchse verhält es sich ähnlich. Anschliessen und gut ist. Das Shield 
kannst du auf GND legen, muss aber nicht.

Ich denke die Hardware, was den FT232RL angeht sieht gut aus.

Gruß

PS: Ist das so richtig "uart putc(c)" ? Oder fehlt da evtl. ein _ ?

Autor: Michel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Source der Library kannst Du sehen dass uart_puts uart_putc 
cyclisch aufruft. Sollte also funktionieren.

Kann es sein dass Dein Empfangspuffer am PC line-buffered ist?

Wie liest Du denn Rechnerseitig? Ich würde auf jeden Fall mal versuchen 
mehr Daten zu schicken und ggf. CR LF einzubauen... Ansonsten ist unter 
Linux/Mac OS ioctl Dein Freund (von Win hab ich nicht so viel Ahnung...)

Ausserdem kannste an 2 GPIO Ports des FT232RL LEDs anschliessen 
(Datenblatt), dann hast Du wenigstens eine Kontrolle bezüglich der 
Aktivität.


-mj

Autor: F. V. (coors)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, Softwareseitig sollte es eigentlich auch kein Problem sein, das 
gleiche Programm hatte ich schonmal auf einer self-powered Konfiguration 
laufen.

Daher dachte ich, dass ich irgendwo in der Hardware nen Schnitzer 
reingebaut habe.

Wenns nichts mit dem shield oder dem bead zu tun hat stehe ich da echt 
auf dem Schlauch.

RxD /TxD Aktivitaet ist vorhanden, daher dachte ich, dass ich nen 
Problem mit noise habe.

Autor: Michel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verstehe ich nicht! Du schreibst:

> uart_puts("abc") wird korrekt uebermittelt.
> uart putc(c) allerdings nicht.

da uart_puts nur eine Schleife um uart_putc ist verstehe ich nicht wie 
das der eine call funktionieren soll der darunter liegende aber nicht?


Bei 9600 kannst Du die falche Baudrate einstellen, aber um Noise 
brauchst Du Dir da wirklich keine Sorgen machen :) Aber ein paar 
Character kommen ja durch? Oder versteh ich Dich da falsch?

-mj

Autor: F. V. (coors)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ganz klar ist mir das auch nicht. So wie ich das sehe, kriegt der 
644 schon Daten, allerdings machen die keinen sinn (sonst wuerde ich ja 
den gleichen char zurueck kriegen bei uart_putc(c) ).

Wenn ich stattdessen bei nem Empfangenen char einfach uart_puts("abc") 
zurueckgebe, kommt auch "abc" im HTerm an.

Ich sehe da einfach nicht, was hier faul ist. -.-

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste doch einfach mal den ganzen Testcode, nicht nur einzelne Zeilen. 
Es ist nämlich sehr wahrscheinlich ein Software-Problem.

Autor: NixChecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuch mal mit uart_putc((unsigned int) c)

Autor: F. V. (coors)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt, Software war geprüft und lief vorher tadellos.

Problem war bei der Hardware, offenbar eine schlechte Verbindung oder 
ein Haarriss in einer der Leiterbahnen.

Funktioniert nun also :)

Falls mal wer nen Mega644 schnell an USB verbinden möchte, die Schaltung 
oben funktioniert tadellos.

Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.