Forum: Mikrocontroller und Digitale Elektronik Übertragungsproblem mit FT232BM


von Marius Schmidt (Gast)


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

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.