www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Übertragungsproblem mit FT232BM


Autor: Marius Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe einen ROM speicher an einen Atmega16 angeschlossen und diesen
wiederrum an einen FT232BM chip. Das ganze funktioniert auch...
relativ. Es kommen immer wieder ab und zu komische Daten beim PC an
oder werden verschluckt (ich lese das ROM aus und sende es zum PC).

Am Auslesen des ROMs liegt es wahrscheinlich nicht, ich habe erst alle
Verbindungen zum ROM geprüft und einen Test durchgeführt, der anstatt
den ROM daten einfach ein Zeichen sendet und es traten selbst bei einen
sich einfach wiederholenden Zeichen Fehler bei der Übertragung auf (Es
sind ein paar Zeichen einfach verschwunden, der rest wurde aber richtig
übertragen).

Auf niedrigeren Baudraten geht es auch nicht so recht (momentan benutze
ich 460800 baud was mir von der geschwindigkeit her sehr gut gefällt
:)), ich habe z.B. 9600 ausprobiert. Bei einigen baudraten will der µC
das kommando vom PC nicht empfangen.

Ich habe einen Interrupt der bei SIG_USART_RECV ausgelöst wird, dann
das byte überprüft das vom PC empfangen wurde (das Kommando zum senden
des ROM-Inhaltes) und dann einfach anfängt zu senden (mit der
Sende-Funktion aus den Tutorials hier).

Ich habe auch schon einen 14.7456 mhz quarz eingebaut um sicher zu
stellen das eine ordentliche Baud-rate vorhanden ist aber das hat
anscheinend nichts gebracht :(

Welche Einflüsse können zu solch einen Verhalten führen? Das USB kabel
ist 3 meter lang und hängt an meiner Tastatur. Kann es vielleicht sein
das irgend eine Fehlfunktion oder sogar ein Kurzschluss zwischen den
Pins beim auslesen des ROMs zu einem Fehlverhalten des FT232BM führt?

Kann es an meinen Programm liegen? Dies ist der Code den ich zum lesen
des FT232BM benutze:

//button click wurde ausgeführt....

hEvent=CreateEvent(NULL,false,false,"");

FT_SetEventNotification(ftHandle,FT_EVENT_RXCHAR,hEvent);

FT_Purge(ftHandle, FT_PURGE_TX | FT_PURGE_RX);
FT_Write(ftHandle, &cmdByte, 1, &lBytesWritten);
FT_Purge(ftHandle, FT_PURGE_TX);

while(WaitForSingleObject(hEvent,5000) != WAIT_TIMEOUT) {

  FT_GetStatus(ftHandle,&RxBytes,&TxBytes,&dwEvent);
  if((dwEvent & FT_EVENT_RXCHAR) && (RxBytes > 0)) {
    lBytesWritten = 0;
    FT_Read(ftHandle, ReadBuffer,RxBytes,&lBytesRead);

    if(lBytesRead > 0)
      WriteFile(hFile,ReadBuffer,lBytesRead,&lBytesWritten,NULL);
  }

}

Hat jemand irgend eine idee woran es liegt? Ich hab bis jetzt nur
Probleme mit den FT232BM, obwohl der eigentlich voll einfach sein soll
(und wahrscheinlich auch ist) aber ich bin halt absoluter neuling
sorry ;(

Mfg & Danke,
Marius

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.