www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FT232BM - totale verwirrung!


Autor: Marius Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wisst ihr wo es anleitungen zum verwenden des chips gibt? Was sind die
default werte wenn man kein EEPROM benutzt (bezgl. Baud-rate, stop bits
und die anderen infos die windows haben will)?

Ich hab mir das datasheet mal angeschaut aber ich finde das ein wenig
dünn und verwirrend.

Danke,
Marius

Autor: geloescht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Beitrag wurde auf Wunsch des Autors geloescht.

Autor: Marius Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab gerade gesehen das das wohl von meiner programmierung abhängt...
ok.

Also was ich mich wirklich frage ist ob die Beschaltung von der AVR USB
entwicklungsplatine wirklich reicht (da ist nur RXD und TXD mit meinen
ATmega16 verbunden, und natürlich GND)

Kann mir mal jemand ein paar anfängertips geben? :)

Ich hab versucht das, was vom chip kommt, zu lesen aber da kommt nur
müll bei raus (irgendwelche zeichen, keine richtigen strings).

Ich hab einfach das UART ASM beispiel vom AVR-Tutorial auf den ATmega
geschrieben.

Btw ich hab kein EEPROM dran, ich hoffe mal das das kein Problem ist.

Autor: Marius Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh man... wie peinlich!! :)

Ich habe vergessen die Taktfrequenz aus den sample von 4mhz auf 10mhz
um zu stellen doh

Jetzt geht es ohne probleme. Sorry und danke an alle die noch geholfen
hätten ;)

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der FT232 ignoriert die Angaben zu Baudrate keineswegs, das macht nur
der parallele FT245.
Die Baudrate muss daher korrekt eingestellt werden, da sonst in der
Tat Müll 'rauskommt.

Er funktioniert auch ohne EEPROM.

Zur Verbindung mit einem AVR sind keine Pegelwandler oder gar Inverter
erforderlich; einfach nur die Sendedatenleitung mit der
Empfangsdatenleitung verbinden und umgekehrt.

Ein einfacher Test wäre der "Kurzschlusstest": RxD und TxD des FT232
werden miteinander verbunden. Werden mit einem Terminalprogramm (hier
tut's auch Hyperterminal) mit abgeschaltetem Hardwarehandshake (!)
Zeichen auf der Schnittstelle ausgegeben, müssen diese prompt als Echo
wieder empfangen werden, und zwar unabhängig von der eingestellten
Baudrate.

Autor: Marius Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hehe, danke für die info.

Also wie gesagt läuft es mitlerweile einigermaßen aber nur bis 38400
Baud. Geht das nicht irgendwie schneller?

Was ich momentan mache ist:

Das Beispiel aus dem tutorial mit 10 mhz anstatt 4 mhz und 57600 baud.

Dann hab ich mir bei FTDIchip.com ein VB beispiel runter geladen mit
dem ich den chip erkenne, die Baud rate auf 57600 setze und immer
fleißig auslese (256 bytes).

Wo kann da das problem liegen und was bekommt der FT232 maximal hin?

Würde mir handshaking weiter helfen (bzgl.
Übertragungsgeschwindigkeit)?

Mfg und nochmal Danke!
Marius

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der FT232 ist vermutlich nicht das Problem, sondern die von Deinem AVR
verwendete Baudratenerzeugung. Die maximal erzielbare Baudrate des
FT232 liegt sehr deutlich jenseits von 38400 Baud (und steht im
Datenblatt); dank des recht großen Empfangsfifos ist auch ein
Datenverlust (der ja durch Verzicht auf das Hardwarehandshake möglich
ist) eher auszuschließen.

Wie beispielsweise erzeugst Du aus 10 MHz Takt die 57600 Baud? Was für
einen Teilerwert verwendest Du da und was ist die resultierende
tatsächliche Baudrate?

Autor: Marius Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe total keine ahnung, das hier ist mein source code:

.include "m16def.inc"

.def temp = r16
.equ CLOCK = 10000000
.equ BAUD = 300
.equ UBRRVAL = CLOCK/(BAUD*16)-1

        ; Stackpointer initialisieren
        ldi temp, LOW(RAMEND)
        out SPL, temp
        ldi temp, HIGH(RAMEND)
        out SPH, temp

        ; Baudrate einstellen
        ldi temp, LOW(UBRRVAL)
        out UBRRL, temp
        ldi temp, HIGH(UBRRVAL)
        out UBRRH, temp

        ; Frame-Format: 8 Bit
        ldi temp, (1<<URSEL)|(3<<UCSZ0)
        out UCSRC, temp

        sbi UCSRB,TXEN                    ; TX aktivieren

loop:   ldi temp, 'l'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 'u'
        rcall serout                      ; Unterprogramm aufrufen
        ldi temp, 'p'
        rcall serout                      ; ...
        ldi temp, 'i'
        rcall serout
        ldi temp, 'n'
        rcall serout
        rjmp loop

serout:
        sbis UCSRA,UDRE                   ; Warten bis UDR für das
nächste
                                          ; Byte bereit ist
        rjmp serout
        out UDR, temp
        ret                               ; zurück zum Hauptprogramm

Also ist eine Baudrate von 57600 mit 10mhz nicht möglich oder wie? :(

Autor: Marius Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.equ BAUD = 57600

...sollte da eigentlich stehen... man die sonne tut mir nicht gut :P

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich tippe mal, dass die Baudrate leicht nebendran liegt.
Der Assembler führt nur Integer Arithmetik aus und berechnet aus ".equ
UBRRVAL = CLOCK/(BAUD*16)-1" an Stelle von 9,85 nur 9.
Damit bekommt man 62500 Baud.
Für hohe Baudraten bietet sich eine Frequenz von 11,0592MHz an, da sich
dann ganzzahlige Teilerfaktoren ergeben.

Dieter

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sonne um 22:13? Auch schön.

Ja, auf genau dieses Problem der abweichenden Baudrate wollte ich
hinaus. Irgendwo in diesem Forum geistert auch eine Excel-Tabelle zur
Baudratenberechnung herum ...

Autor: Marius Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dds5! Das war's!

Ich glaube es zwar selber noch nicht so ganz aber ich hab die
Übertragung jetzt auf 312500 baud hoch gezogen (UBRRVAL = 1). Kann das
wirklich sein? Also es scheint auf jeden fall zu funktionieren aber
irgendwie hab ich zweifel das der wirklich mit der geschwindigkeit
arbeitet (kann ich, da ich ein VB programm benutze natürlich nicht so
richtig einschätzen).

Echt super, danke 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.