PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spezielle USB Hardware



Killer
30.07.2007, 16:23
Hey,
ich habe hier ein nettes Bauteil gefunden, welches eine USB sowie I2C Schnittstelle hat!
http://www.dimax.com.ua/i2c_usb/u2c12.shtml#TOP

Hat jemand mit diesem Bauteil Erfahrung? Meine Überlegungen bis jetzt:
Ich schließe einen ATMega32 (über I2C ) an die Hardware an und USB natürlich auch. Doch da kommt das erste Problem/ Frage auf: vorrausgesetzt ich habe ein Programm auf dem PC und sende jetzt über USB an die Hardware etwas. Wie lese ich das ganze jetzt über I2C überhaupt aus? Ich kann mir as nicht richtig vorstellen und bitte um Hilfe!

MfG Killer

peterfido
30.07.2007, 18:43
Die API Version ist 0. irgendwas. Dann kostet das Teil 70 US Dollar. Dafür könntest du den FTDI 232RL nehmen und ihn per Seriell an nen günstigen AVR hängen. So hast du Quasi auch USB und I2C für nen Appel und nen Ei. Ich habe mit dem FTDI gute Erfahrungen gemacht. Lässt sich leicht unter Windows Programmieren und beim AVR arbeitest du per UART. Ich hatte wegen dem kleinen IC erst bedenken, habe da aber bei FB-Hoch eine DIL Adapter Platine inklusive dem FTDI gefunden. Ich hatte den Bausatz zum selbstlöten. Vielleicht bieten die auf Nachfrage auch fertige Platinen an.

Zu dem von dir genannten kann ich leider nichts weiter sagen, denke aber, dass die Kommunikation wie bei jeder anderen über TWI laufen sollte.

Killer
30.07.2007, 19:10
Was mir noch eingefallen ist. Wenn ich jetzt Werte wieder zum PC senden möchte, funktioniert das dann auch über das von dir genannte Bauteil?
Wo hast du den Bausatz genau her also die Firma?

MfG Killer

peterfido
30.07.2007, 20:24
Ja, das geht natürlich auch. Du kannst entweder über eine dll kommunizieren, oder per virtuellen Comport. Ich bevorzuge die dll. Bestellt habe ich mir die Platinen telefonisch. Die Homepage ist ib-hoch.de

Killer
30.07.2007, 21:21
Kann es sein, dass dieser Bausatz in dem Katalog bei www.ib-hoch.de nicht aufgeführt ist? Kann man das denn nicht auch irgendwo als fertig zusammengelötete Hardware kaufen um eventuelle Fehler von vorn herein auszuschließen?

MfG Killer

peterfido
31.07.2007, 16:43
Es ist im Katalog unter FT232 DIL bei Halbleiter aufgeführt. Ruf doch einfach mal an und frag, ob er dir den IC auf die Platine lötet. Du brauchst für die fertige Beschaltung aber noch nen kleinen Kondensator. Den Plan dazu findest du im Datenblatt bei FTDI.

edit: Sehe gerade weiter unten im "Katalog" einen fertigen USB 232 Adapter für 12, 52 DM (Doppelmark)

Killer
31.07.2007, 17:23
Nochmal zum FT232-DIL. Kann man das Modul vom AVR aus über I2C ansteuern oder über welche Schnittstelle?

MfG Killer

repi64
31.07.2007, 20:27
Hi,
das IC "spricht" über den UART.
Ist also quasi ein USB auf RS232 Wandler nur halt mit TTL Pegeln.

Killer
31.07.2007, 21:44
Also mal zusammengefasst: Das Mudul hat für PC eine USB Schnittstelle bzw. Buchse und für das "andere Ende" eine RS232 Schnittstelle, an welche ich bequem einen AVR hengen kann, richtig?

MfG Killer

peterfido
01.08.2007, 22:04
Genau so. Darüber hinaus kannst du dem IC bequem einen Namen geben, eine Seriennummer programmieren, Sende- und Empfangs-LEDs anschließen, und einen Takt bekommen. Sieh dir doch einfach mal das Datenblatt und die Homepage (ftdichip.com) an.

Killer
02.08.2007, 11:29
Gut. Kannst du mir mal ein Beispielprogramm unter BASCOM posten, bezogen auf dieses Modul, weil ich bei der Software mit der ich die RS232 Schnittstelle des Moduls ansteuere leichte Probleme habe.
Danke im Vorraus :-)

MfG Killer

peterfido
02.08.2007, 19:23
Hm. Es sind die Standard UART / Seriell Routinen. Etwas ausgeben: print "Ausgabe"




$baud = 38400 ' use baud rate
$hwstack = 128 ' default use 32 for the hardware stack
$swstack = 128 ' default use 10 for the SW stack
$framesize = 128 ' default use 40 for the frame space

Config Serialin = Buffered , Size = 254
declare sub empfangen()
dim b as byte
dim sein as string * 50
dim stream as bit


Enable Interrupts


Do

If Ischarwaiting() = 1 Then
Call Empfangen()

End If
Loop
End

Sub Empfangen()

B = Inkey()
If B > 0 Then

If Stream = 0 Then
If B = 199 Then
Sein = ""
Stream = 1
Else

End If
Else

If B = 13 Then
Stream = 0
Goto Auswerten
Elseif B = 199 Then
Sein = ""
Else
If Len(sein) < 50 Then
Sein = Sein + Chr(b)
End If
End If
End If
End If

Exit Sub

Auswerten:
Print "Empfangen:" ;
Print Sein



End Sub


So in der Art.
Stream(0/1) nute ich, ob gerade ein Datensatz empfangen wird. chr$(199) Symbolisiert bei mir immer den Anfang eines Streams (Datensatzes)

Sub Auswerten wird angesprungen, wenn chr(13) empfangen wird, also Stream analysieren. Sein enthält das Empfangene. Begrenzt habe ich die Streams auf 50 Zeichen. Als Baudrate habe ich 38400 gewählt, da dafür kein krummer Quarz benötigt wird.

Ich habe das gerade nicht getestet, sondern die für die Kommunikation relevanten Teile aus einem fertigen Programm rauskopiert.

Als Gegenstück habe ich ein Programm in VB für den PC geschrieben. Du könntest aber auch über den virtuellen comport testen. Dafür am besten die Agfrage nach chr(199) rausnehmen oder ändern.