Hallo, hat jemand schon mal einen USB-Chip FT245BM an einen AVR angebunden? Wäre an einem Erfahrungsaustausch interessiert. Gruss A.Hesse
Hallo, erstmal danke für die Hilfsbereitschaft. Ich habe ein paar Probleme aufgschrieben: Verwendete Bauteile: FT245BM AT90S8515 mit 6,144 Mhz 1. Spannungsversorgung: Der AVR wird direkt an VCCIO angeschlossen (Strom durch den AVR < 15mA). Der Datenport zum FT245 wird standardmässig auf TriState gestellt. Gibt es irgendwas zu beachten? 2. Übertragung vom AVR zum Ft245: Wenn ich das Datenblatt richtig interpretiere, ist der FT245 im Inputmodus, wenn er TXE# nach 0 setzt. Dann ist jeder Datenpin mit 200k gegen VCCIO hochgezogen. Am AVR werden dann lediglich die Bits die 0 sein sollen von TriState auf Ausgang umgeschaltet (und nicht eingeschaltet). Damit liegen sie auf Masse und signalisieren 0. Alle TriState Pins führen dazu, dass der FT245 über die internen PullUps logisch 1 erkennt. Ist dieser Ansatz OK? 3 Übertragung vom Ft245 zum AVR: Für das Schreiben habe ich folgenden Ansatz: - RXF# geht auf 0 - Schalte den Daten auf den Verbindungsport zum FT245 - Setze WR auf High - Setze WR auf low Müssen noch Verzögerungszeiten eingebaut werden (meinem Verständnis nach nicht, das der FT245 sehr schnell ist)? 4 Gibt es irgendwo ein Referenzdesign? Gruss Andreas
Hi 1. VCCIO ist ein Eingang. Damit legst du die IO-Spannung des FTDI fest um den Chip mit einem 3V µC verheiraten zu können. Du kannst da keinen Strom entnehmen. 2. Wenn TXE# low ist kannst du in den FTDI schreiben. Wenn du schreiben willst stellst du den Port des AVR auf Ausgang, legst die Daten an und ziehst WR kurz auf 1. 3. Wenn Daten im FIFO des FTDI vorhanden sind ist dessen RXF# auf 0. Dann stellst du deinen Port auf Eingang, legst RD# auf 0 und ließt das PIN-Register ein. 4. http://www.ftdichip.com/Documents/dg232v20.pdf Matthias
Hi BTW: Zwischen Setzen von RD# auf 0 und einlesen des PIN-Registers muß evtl. ein NOP damit das was drausen anliegt auch wirklich im Register steht. Matthias
Das Schreiben von Daten in den FT245 bzw. das Lesen vom FT245 kannst auch "einfacher" machen, indem du die Ansteuerung des FT245 über ein paar Gatter erledigst (Peripherie ist also etwas intelligenter). Mit einfacheren Datenaustausch ist natürlich gemeint, dass du den FT245 in den externen Memory Adressbereich des AVR integrierst (Memory Mapped Mode). Wenn du dann noch den Zugriff auf ein externes RAM aktivierst (im MCUCR das SRE Bit setzen), kannst du auf den FT245 zugreifen, als wäre es ein RAM. So übernimmt der AVR das Umschalten der "Data Direction" (Input/Output) und auch das WR und das RD Signal. Damit die Statussignal auch die richtigen Pegel haben, werden wahrscheinlich einige Gatter notwendig. Kleines Codeexample in C: unsigned char *pointer = "Adresse des FT245" // Schreiben von Daten *pointer = data; // hier die Variable mit den Daten // Lesen von Daten data = *pointer; // hier die Variable für die gelesenen Daten mfg Andreas -- Andreas Auer aauer1 (at) sbox.tugraz.at Student of Telematics http://home.pages.at/aauer1 Graz, University of Technology
Hallo, danke für die Tips. Leider will das Ding noch nicht so, wie ich gerne möchte. Für die PC-Software verwende ich das Beispiel von der FTDI-Seite. Die erkennt den Chip und öffnen kann ich ihn auch. Der AVR ist so programmiert, dass er kontinuierlich Daten senden sollte, (was aber nicht passiert). (Ich hoffe, dass ich nicht den Chip geschossen habe). Wie kann ich denn am besten debuggen? Ausserdem habe ich noch eine weitere Frage: Ich verwende einen SP12-programmer. Kann ich bei angeschlossenem FT245 (Versorgung aller Teile über USB) diesen Programmer verwenden, um den AVR zu programmieren (bisher habe ich immer umgesteckt)? Gruss Andreas
Hi poste doch mal Schaltplan und putc/getc für den FTDI. Dann können wir besser helfen. Matthias
Hi wo wir grad bei dem FTDI 245 sind. kann mir wer verraten was an dem Ding den Druckerpins 14 (AUTOFDX) 16 (INIT) 1 (STROBE) entspricht? Die Bezeichnungen finde ich nämlich nicht auf dem Eval-Board Gruß Tobi
Hallo, den Schaltplan habe ich zur Zeit nur auf Papier. Der Ft245 wird an den 8515 wie folgt angeschlossen: Dataport:PortD RD=PC0 WR=PC1 TXE=PC2 RXF=PC3 SI/WU=PC4 Das Ft245 board habe ich von Ebay. Der Assembler - SourceCode für den AVR ist im Anhang (wobei ich mir die includes für LCD und speicherkopieren gesparthabe) gruss Andreas
Aus reinem Interesse würde mich noch interessieren wieviel das FT245 Board gekostet hat, als du es bei eBay ersteigert hast! mfg Andreas -- Andreas Auer aauer1 (at) sbox.tugraz.at Student of Telematics http://home.pages.at/aauer1 Graz, University of Technology
Hi sorry aber durch den ASM-Quellcode kann ich mich grade nicht durchkämpfen. Wenn du aber so vorgehst wie ich oben beschrieben habe muß es eigentlich klappen. Hier mal meine C-Routinen zum Schreiben und Lesen. Die Leseroutine liefert entweder das gelesene Byte oder -1 (wenn keine Daten vorhanden sind) zurück. //Ließt ein Byte von der USB-Schnittstelle signed int usb_getc(void) { unsigned char t; if(!USB_RXF) { USB_RD_ON; asm("NOP"); t = PIND; USB_RD_OFF; return t; } else return -1; } //Schreibt ein Byte auf den USB void usb_putc(unsigned char t) { while(USB_TXE); //PORTD auf Ausgang DDRD = 0xFF; //Daten auf den Port PORTD = t; USB_WR_ON; USB_WR_OFF; //PORTC auf Eingang DDRD = 0x00; //Pull-Ups ein PORTD = 0xFF; } Matthias
@Matthias soweit erst mal sehr herzlichen Dank. Ich werde mal ein wenig herumprobieren... @Andreas Preis war ca 15 Euro + Versandkosten USB-Kabel und Zubehör kam noch extra. Gruss Andreas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.