Clock/Data auslesen über LPT Im Unterforum Projekte im Selbstbau - Beschreibung: Selbstbau von Elektronik und Elektro
Autor |
Clock/Data auslesen über LPT |
|
|
|
|
BID = 757307
martix Neu hier
Beiträge: 37 Wohnort: Stuttgart
|
|
Hallo
da ich in diesem Forum schon einmal Hilfe gefunden habe, wende ich mich wieder an euch.
Leider muss ich ein wenig ausholen.
Ich habe einen Car-PC im Auto. Damit möchte ich Radio hören - also warum nicht das original VW Gamma Radio benutzen.
Dieses bietet nämlich einen Ausgang, um Zeichen, die auf dem Display erscheinen, auszugeben (ist dafür gedacht, dass man auf einem Display im Tacho lesen kann, welcher Sender eingestellt ist).
Das möchte ich mir zu Nutze machen und den Sendernamen auf dem PC anzeigen.
Das Radio hat 3 Ausgänge dafür:
1. Ena: (Enable) Wird auf +5V gelegt, wenn Daten gesendet werden.
2. Clock: Gibt den Takt
3. Data: Liefert die eigentlichen Daten.
Ich habe Clock und Data an 2 Eingänge eines Parallelports angeschlossen, die ich mit einem Programm, das ich in Visual Basic geschrieben habe, auslesen kann.
Ena habe ich weggelassen, da man ganz gut erkennen kann, wann Clock anfängt zu laufen.
Das Programm läuft in einer Endlosschleife (mit DoEvents) und ließt ständig den LPT-Port aus. Anfangs hatte ich nur Clock angeschlossen, sodass ich einfach auf eine Veränderung des Eingelesenen reagieren konnte.
Damit (dachte ich) hätte ich das Clocksignal ausgewertet und kann bei jeder Änderung erneut den Port abfragen, um an die Daten zu gelangen.
Nur funktioniert das leider nicht wirklich gut.
Pro Tastendruck (also wenn sich der Sendename ändert) registriere ich zwischen 8 und 11 Takte.
Das wären 8-11 Bits für ein 8-stelliges alphanumerisches Display mit groß/klein-Schreibung. Unmöglich!
Jetzt kann es natürlich sein, dass ich zu langsam abfrage, oder aber, meine Software ist von Grund auf falsch gebaut.
Ich hatte damit noch nie Kontakt und hab mir einfach überlegt, dass man es evtl. so machen könnte.
Jemand, der sich damit auskennt könnte mir sicherlich auf der Softwareseite helfen, wie man an so etwas herangeht.
Evtl. ist der Parallelport dafür auch gar nicht geeignet?
Würde mich über jede Antwort freuen.
Gruß Martin
[ Diese Nachricht wurde geändert von: martix am 28 Mär 2011 23:19 ]
[ Diese Nachricht wurde geändert von: martix am 28 Mär 2011 23:21 ] |
|
BID = 757310
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
|
Weißt du denn überhaupt, in welcher Größenordnung (Millisekunden, Mikrosekunden) die Taktimpulse liegen?
Gefühlt würde ich sagen, die sind deutlich zu schnell für den LPT. Der würde das eventuell über einen passenden Treiber hinbekommen (die Hardware wird das evtl. schaffen), aber mit so einem krüppeligen Programm ist da nichts zu machen.
Im Übrigen müssten die Taktimpulse mindestens mit der doppelten Taktfrequenz abgetastet werden, damit keine Flankenwechsel verpasst werden.
Dafür benutzt man oft kleine Mikrocontroller, die bei jedem Flankenwechsel ein Interrupt auslösen. Ein Programm ließt dann die Datenleitung aus und taktet die Bits schrittweise in einen Speicher. Nach z.B. 8 Bits wurde dann ein Byte empfangen.
Sowas gibt es auch in Hardware und es heißt dann SPI.
Kannst dich ja mal über Prozessoren wie ATmega8 o.ä. schlau machen
Hast du eine Dokumentation der Schnittstelle? Gibt da einige Fallstricke - einige takten z.B. das MSB zuerst aus, während andere das LSB als erstes Bit bevorzugen. Je nach dem ist dann auch die Taktpolarität anders.
P.S.:
Dokumentation wäre klasse. Denn unter Umständen kann man mit dem EN-Eingang ein „Handshake“ implementieren, damit das Gerät nur so schnell sendet, wie man empfangen kann. Das muss aber nicht so sein, EN erinnert in diesem Zusammenhang eben auch an die typischen Aktivierungseingänge, wie sie auch oft bei SPI-Bausteinen vorkommen...
_________________
[ Diese Nachricht wurde geändert von: DonComi am 28 Mär 2011 23:40 ] |
|
BID = 757499
martix Neu hier
Beiträge: 37 Wohnort: Stuttgart
|
Hallo,
schon mal Danke für deine Antwort.
Es gibt leider üüüberhaupt keine Dokumentation.
Habe tagelang danach gesucht, wie die Daten ausgegeben werden... nichts gefunden...
In der Schule hatte ich mal die Aufgabe eine einfache Klimaanlagesteuerung mit einer C-Control von Conrad zu machen.
Die hat ja auch mehrere digitale Eingänge.
Wäre es damit möglich? Da weiß ich wenigsten grob, wie man herangehen muss.
Ich würde sie das "übersetzen" erledigen lassen und den plaintext dann an den PC schicken.
Außerdem könnte man die C-Control noch weitere Aufgaben übernehmen lassen.
Evtl. sogar ganze Zeit anlassen (ich fahre fast jeden Tag). Die Investition würde sich eigentlich lohnen.
Gruß Martin
|
BID = 757501
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Soweit mir bekannt basiert C-Control auf AVRs und die können extern ein Interrupt auslösen.
Wenn du dich damit schon auskennst, dann ist das doch prima!
Hast du ein Oszilloskop?
Damit könnte man die Frequenz des Clock-Signals bestimmen.
_________________
|
BID = 757511
martix Neu hier
Beiträge: 37 Wohnort: Stuttgart
|
Ich habe leider kein Oszi,
allerdings habe ich jemand gefunden, der sich schoneinmal damit beschäftigt hat, das Radio an ein Display anzuschließen, das dafür so nicht gedacht war.
Er hat mir den Verlauf einer Anfrage zugeschickt
(siehe Anhang).
Das untere ist glaube ich Ena, das mittlere Clock und das obere sind Daten(?) das wäre eine Eins am Anfang und am Ende...
Evtl. ist das der Handshake? (Beim Einschalten und Ausschalten des Radios lief die Clock für 2-3 Takte (ich habe jedenfalls 2-3 registiert).
Für eine normale Datenübertragung kommt mir das nämlich ein bisschen kurz vor...
Dann werde ich mir mal eine C-Control kaufen... wollte ich eh schon lange...
Werde dann berichten!
Vielen Dank!
|
BID = 757556
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Das sind knapp 100µs für ein Datenwort zu je acht Bits (hier: 01111110, ASCII: '~')
Das schafft der LPT niemals! (wie gesagt, die Hardware ist evtl. schnell genug, aber nicht die Software.)
Für einen µC wie den Mega8 ist das aber kein Problem.
Es scheint weiterhin so zu sein, dass ENA low-aktiv ist, also auf Masse liegt, wenn Daten gesendet werden.
Die Daten liegen auf Leitung 1 und werden immer bei steigender Flanke eingetaktet.
ENA ist aber ein Ausgang, kein Eingang! Also keine Spannung dort anlegen, du könntest den Treiber zerstören.
_________________
|
BID = 757559
martix Neu hier
Beiträge: 37 Wohnort: Stuttgart
|
Gut, dass ich hier gefragt habe!
Ich hätte noch Tage mit dem LPT-Port rumgespielt!
Vielen vielen Dank.
Ena ist kein Eingang, das ist klar.
Ich habe was im Kopf, dass der Mensch, der mit das Bild geschickt hat, gesagt hat, dass ein Graph invertiert sei...
Ich werde mir am Wochenende eine C-Control kaufen.
Ich weiß nur noch nicht, ob die I, oder die II...
Sind immerhin 50€ Unterschied... die 2er braucht auch nur 120mA und hat mehr Speicher für die auszuführenden Programme und mehr RAM.
Naja, lasse mich bei Conrad beraten.
Wahrscheinlich werde ich nochmals Hilfe brauchen, wenn ich ein paar Schritte weiter bin...
Werde mich aber auf jeden Fall melden, um zu berichten!
Danke
Gruß Martin
|
BID = 757563
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Hallo Martin,
dann frage „diesen Menschen“, welcher Eingang des Oszis invertiert wird.
Plausibel sind Daten- und/oder Takt-Leitung. Enable oder CS ist typischerweise low-aktiv.
Es gibt mehrere Betriebsmodi für SPI, z.B. ob Daten bei fallender oder steigender Flanke eingetaktet werden und welche Pegel die Leitungen im Ruhezustand haben; weiterhin auch, wie die „Bitorder“ ist, also ob das höchstwertigste Bit (MSB - most significant bit) zuerst ausgetaktet oder das niederwertigste (LSB - least significant bit) wird.
Wenn dein Kumpel das weiß, wäre das gut, aber das findet man notfalls auch mit schlichtem Versuchen aus.
Zur C-Control:
Wenn du BASIC oder C kannst, dann reicht sogar nur der Controller - damit kommst du um eine Größenordnung günstiger weg. Allerdings fehlt dann ein Programmieradapter und eine Zielumgebung für den Chip.
_________________
|
BID = 757565
ElektroNicki Inventar
Beiträge: 6429 Wohnort: Ugobangowangohousen
|
Unrad, der fast gar nichts hat?
Mit nem AVR von Pollin kämst du günstiger weg...
_________________
|
BID = 757566
martix Neu hier
Beiträge: 37 Wohnort: Stuttgart
|
Diesen "Menschen" habe ich nach ewigem Suchen im Internet gefunden. Der Post von ihm war von 2002...
Die Mailadresse war aber noch gültig. Ich will ihn eigentlich nicht weiter belästigen.
Ich würde schon gerne was im Gehäuse haben, da das ganze ja dann ins Auto soll. Da hätte das Stabile schon was. Das gibt sonst wieder nur Pfusch mit den Pfostenleisten (ich kenne mich selber... das ist eine zu gute Gelegenheit zum Pfuschen für mich)...
Das AVR-Board von Pollin habe ich mir davor auch schon angeschaut.
Nur hat mich folgendes abgeschreckt:
Zitat :
|
3. Bootloader erzeugen
Sollten Sie die Platine mit einer eigenen Firmware betrieben haben und möchten nun den Auslieferungszustand wieder
herstellen und weitere oder andere Firmwareupdates verwenden, so können Sie über den Button „Bootloader erzeugen“die
Hex-Datei „bootloader.hex“ erstellen lassen, welche Sie anschließend per ISP mit einem passendem Programmiergerät übertragen
können. Achten Sie dabei besonders auf die Einstellungen für FuseBits:
|
Wenn ich darauf eigene Firmware betreiben will (was ich definitv will) und etwas nicht funktioniert, brauche ich ein extra Gerät um den Speicherstein wieder zu beschreiben...
Außerdem habe ich da keine Ahnung davon, wie man Programme schreibt, die auf den Board laufen.
Da habe ich bei der C-Control wenigstens schonmal ein bisschen Vorwissen. Da gibts ne nette Programmierumgebung (Workbench++ oder so)
Basic kann ich und in die Syntax von C müsste ich schnell reinkommen, da wir momentan Java im Studium hatten und die Syntax ja relativ ähnlich sein soll.
Oder habe ich da bei dem AVR-Board was falsch verstanden?
|
BID = 757572
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Ne, das hast du schon richtig verstanden.
Die Firmware wird, wenn kein Bootloader im µC ist, per ISP geladen und das geht nur mittels Programmiergerät (ich habe einen für 15€ mit USB, so teuer ist das also nicht).
ABER:
Nimm das, womit du dich besser auskennst. Bringt ja nichts, wenn du gnadenlos sparst, danach aber nichts funktioniert.
_________________
|
BID = 758626
martix Neu hier
Beiträge: 37 Wohnort: Stuttgart
|
So, habe mir jetzt ne C-Control gekauft.
Da die digitalen Eingänge ja nur auf Masse reagieren, ich aber +5V Signale habe, dachte ich, ich probiers erstmal mit den A/D-Eingängen.
Die sind aber VIEL zu langsam (gerade mal 2 Takte pro Senderwechsel).
Deshalb meine Frage: Wie realisiere ich es, dass ich die +5V Signale in ein Massesignal verwandle.
Mit einem Relais wäre es ja einfach.
Da die aber natürlich viel zu langsam sind, dachte ich evtl. mit einem Transistor?
Ich muss zugeben, ich habe noch nie mit Transistoren gearbeitet, weiß aber, dass sie im Prinzip wie Relais arbeiten. Steuerstrom und Arbeitsstorm.
Wie müsste ich den Transistor (und vorallem welchen) anschließen, dass er, wenn 5V anliegen den Durchgang von Masse auf den Digitalen Port freischaltet?
Könntet ihr mir da nochmal helfen?
Wäre wirklich sehr, sehr nett!
Vielen Dank
|
BID = 758631
IC-Killer Schriftsteller
Beiträge: 635 Wohnort: Stuttgart
|
|
BID = 758640
martix Neu hier
Beiträge: 37 Wohnort: Stuttgart
|
Softwareseitig umdrehen ist leider nicht möglich soweit ich weiß.
Auf 5V reagiert er überhaupt nicht.
Nur, wenn man den Port auf Masse legt, registriert er eine Veränderung.
Könntest du das mit dem Inverter etwas genauer erklären?
Danke
|
BID = 758646
dl2jas Inventar
Beiträge: 9914 Wohnort: Kreis Siegburg
|
http://de.wikipedia.org/wiki/Nicht-Gatter
Relativ weit unten findest Du die Schaltung mit dem Transistor. Mit R V ist der Eingang deines Controllers gemeint, kein extra Bauteil. Jetzt möchtest Du bestimmt die Werte der Bauteile erfahren. Für den Transistor kannst Du einen BC546 o.ä. nehmen. R C ist gut mit 1 kΩ gewählt und R B mit 10 kΩ.
DL2JAS
_________________
mir haben lehrer den unterschied zwischen groß und kleinschreibung und die bedeutung der interpunktion zb punkt und komma beigebracht die das lesen eines textes gerade wenn er komplizierter ist und mehrere verschachtelungen enthält wesentlich erleichtert
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 23 Beiträge im Durchschnitt pro Tag heute wurden bisher 9 Beiträge verfasst © x sparkkelsputz Besucher : 182293599 Heute : 4428 Gestern : 4667 Online : 476 6.11.2024 23:42 1 Besucher in den letzten 60 Sekunden alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0399270057678
|