PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC per USB mit PC verbinden... Brauche dringendst Hilfe!!



itsgre.at
26.11.2011, 11:56
Hallo roboternetzler,

Letztes Jahr haben wir in der Schule eine Echtzeituhr mit einem PIC16F690 und LCD gebaut. Für dieses Jahr habe ich mir vorgenommen eine USB-Schnittstelle zu realisieren, die Daten (Uhrzeit, Datum, Erinnerungen...) zwischen Echtzeituhr und Computer übermittelt.

Da der PIC16F690 ja nicht USB-kompatibel ist muss ich den USB-Ausgang irgendwie anders realisieren. Für mich gibt es folgende Möglichkeiten:
1. den I²C-Bus des PIC abgreifen und zu einem I²C-to-USB Converter führen. Habt ihr sowas schon gemacht? Wie würdet ihr das angehen? Welche Probleme werden auftreten, an die ich noch nicht denke?

2. den PIC16 per Huckepack-Platine durch einen neuen, USB-kopatiblen PIC (ist dann wahrscheinlich ein PIC18, oder?) erstezen. Da wir in dem Bereich vom Gehäuse her relativ wenig Platz nach oben haben, wäre das für mich nur eine Notlösung. Glaube aber, dass diese Methode die einfachere zum Programmieren ist (wie übermittle ich Daten per I²C?). Welche Probleme werden hier auftreten? Was muss ich beachten?

Für welche Methode würdet ihr euch entscheiden? Habt ihr sowas schon gemacht?

Da ich das Layout schon bald abgeben muss wäre ich euch sehr verbunden, wenn ihr mir meine Fragen beantworten könntet...

Martin

Andre_S
26.11.2011, 13:16
Hallo Martin,

also per I²C/USB Adapter funktioniert sicherlich, da gibt es verschiedene Module. Wobei ich nur Erfahrungen mit dem dem von ELV angebotenem Modul habe an welchem ich 3 SRF 08 und einen CMPS 10 angebunden habe und per Lap nutze. Sicherlich musst Du dann den PIC aber im Slave Mode betreiben, habe ich noch nicht gemacht. Das Modul von ELV ist aber nicht ganz billig, von Devantech o.a. gibts da noch günstigere. Habe ich aber bisher nicht genutzt, also keine Erfahrungen.

Aber mein Vorschlag. Hat der PIC nicht auch eine serielle Schnittstelle? (habe jetzt nicht nachgeschaut oder im Notfall per Software) Dann könntest Du einfach ein "RS232-TTL/USB" Adapter nehmen, welches knapp über 10 Euro liegt und die Daten seriell (über USB) zw. PC und PIC austauschen. Mach ich auch mit dem MD49 Board und funktioniert tadellos.


Gruß André

askazo
26.11.2011, 13:27
Ich würde Dir dafür eine FTDI USB-UART Bridge empfehlen. Ich habe die zwar noch nicht selber eingesetzt, aber das ist der einfachste Weg, um eine USB-Übertragung auf die Reihe zu bekommen. Vom Controller sendest Du Deinen Daten einfach über die UART, der Chip verpackt das ganze in eine USB-Übertragung und am PC kannst Du das ganze über einen virtuellen COM-Port wieder auslesen.

Eine "echte" USB-Schnittstelle aufzubauen - also z.B. über I²C-USB Baustein oder USB-fähigen µC braucht sehr viel Kenntnis über das USB-Protokoll und ist alles andere als trivial.

Gruß,
askazo

Andre_S
26.11.2011, 13:37
...
Aber mein Vorschlag. Hat der PIC nicht auch eine serielle Schnittstelle? (habe jetzt nicht nachgeschaut oder im Notfall per Software) Dann könntest Du einfach ein "RS232-TTL/USB" Adapter nehmen, welches knapp über 10 Euro liegt und die Daten seriell (über USB) zw. PC und PIC austauschen. Mach ich auch mit dem MD49 Board und funktioniert tadellos.


Gruß André

Hier zwei Beispieladapter:
http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=225

oder FTDI
http://www.ebay.de/itm/270748929489?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649


Gruß André

itsgre.at
26.11.2011, 13:47
Danke für die Antworten!
Ja, der PIC hätte auch serielle Ein- und Ausgänge (RB5 = RX/DT, RB7 = TX/CK). Kann ich aus denen einen RS232 "basteln"? Mit so einem Adapter würde ich mir ja auch das USB-Protokoll ersparen. Außerdem weiß ich auch schon wie ich per C# (also das Interface was am Rechner läuft) drauf zu greife.

Kann ich also aus oben genannten Pins einen RS232 machen? Dann würde ich mir auch das Layout ersparen, da wir die Pins nur abgreifen müssten... Aber wie geht das mit der Spannung? (die ist ja bei RS232 bekanntlich 15V, auf der Platine liegen aber max. 5V an)

PICture
26.11.2011, 15:11
Hallo!


Dann würde ich mir auch das Layout ersparen, da wir die Pins nur abgreifen müssten... Aber wie geht das mit der Spannung? (die ist ja bei RS232 bekanntlich 15V, auf der Platine liegen aber max. 5V an)

Zwischen RS232 vom µC und RS232 vom PC gehört noch ein Pegelwandler (z.B. MAX232:
http://www.datasheetcatalog.org/datasheet/maxim/MAX220-MAX249.pdf ). ;)

itsgre.at
26.11.2011, 16:44
Danke, also noch mal als Zusammenfassung:
Ich leite die Signale vom Pin RB5 und RB7 zu einem RS232-Stecker (was mach ich mit den anderen Signalen? Welche Pins beim rs232 müssen überhaupt für meine Anwendung belegt sein?). Dann gehe ich mit den Signalen zu einem Pegelwandler, der die Spannung der Signale von 5 auf 15V pusht. Dann verlaufen diese Signale zu einem Stecker, der aus dem Gehäuse führt. An den stecke ich dann den RS232-to-USB Converter an und geh mit dem USB zum PC (wo ich den USB, beim Programmieren wie eine Serielle PC-Schnittstelle verwenden kann). Hab ich das richtig verstanden?
Hört sich jedenfalls plausibel an ;)

Wie spreche ich dann den Seriellen Port des PICs (in C) an um Daten zu verschicken (z.B. Variablen)? Welche Pins beim rs232 müssen überhaupt für meine Anwendung belegt sein?
Wäre euch sehr verbunden wenn ihr mir diese beiden Fragen noch beantworten könntet ;)

Andre_S
26.11.2011, 20:24
Hallo!



Zwischen RS232 vom µC und RS232 vom PC gehört noch ein Pegelwandler (z.B. MAX232:
http://www.datasheetcatalog.org/datasheet/maxim/MAX220-MAX249.pdf ). ;)

Das ist zwar richtig, aber im oben dargestellten Fall unnötig, -> "RS232-TTL/USB"
Du benötigst keinen MAX da der von mir genannte Adapter TTL Pegel bereitststellt und somit direkt an den PIC/Atmel angeschlossen werden kann. Bei einfachen USB/Seriell Adapter hingegen würdest Du den Pegelwandler benötigen...


Gruß André

itsgre.at
26.11.2011, 22:01
Okay, dass heißt, wenn ich einen RS232 TTL-to-USB Converter hab brauch ich keinen MAX, aber wenn ich einen normalen RS232-to-USB hab brauch ich einen Pegelwandler. Hab ich das richtig verstanden?
Wie ist das eigentlich mit der Programmierung? Wie kann ich in C Daten vom PIC seriell übermitteln und empfangen?

itsgre.at
27.11.2011, 14:49
Könnte mir vielleicht jemand kurz beantworten, welche Anschlüsse ich für eine RS232-Verbindung brauche? Welche Pins muss ich unbedingt setzen um eine anständige Datentransfer zu gewährleisten?

Andre_S
27.11.2011, 15:49
RX/TX/GND ... hast Du doch auch schon geschrieben... (PIN RB7-TX/RB5-RX)

Verbindungsaufbau steht auch im Link zu dem FTDI Adapter, sogar in bildlicher Darstellung:
RX <-> TX
TX <-> RX
GND <-> GND



Gruß André

itsgre.at
27.11.2011, 17:44
Ja, hab mich nur gefragt, ob ich die anderen 6 Pins nicht auch belegen sollte...
Könntet ihr mir vielleicht noch sagen wie ich in C Daten seriell übertragen kann? Nur die Basics...

Andre_S
28.11.2011, 22:29
Hallo,

kann Dir bei C nicht helfen, da ich PIC nur in Assembler programmiere.
Stelle Deine Frage doch mal in der passenden Rubrik mit Hinweis welchen C-Compiler du nutzt...


Gruß André

itsgre.at
29.11.2011, 13:36
Okay, auf jedenfall danke, dass ihr mir alle Fragen beantwortet habt. Hab es gestern abgegeben, hat alles gepasst...
Martin