Clock/Data auslesen über LPT

Im Unterforum Projekte im Selbstbau - Beschreibung: Selbstbau von Elektronik und Elektro

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 06 11 2024  19:29:42      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Projekte im Selbstbau        Projekte im Selbstbau : Selbstbau von Elektronik und Elektro

Gehe zu Seite ( 1 | 2 | 3 | 4 Nächste Seite )      


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


Zitat :
Da die digitalen Eingänge ja nur auf Masse reagieren, ich aber +5V Signale habe, ......
Wie realisiere ich es, dass ich die +5V Signale in ein Massesignal verwandle.

Offtopic :
Nach Masse kurzschließen


Inverter (oder softwaremäßig "umdrehen")

[ Diese Nachricht wurde geändert von: IC-Killer am  4 Apr 2011 18:07 ]

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
Zur Homepage von dl2jas

http://de.wikipedia.org/wiki/Nicht-Gatter

Relativ weit unten findest Du die Schaltung mit dem Transistor. Mit RV 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. RC ist gut mit 1 kΩ gewählt und RB 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


      Nächste Seite
Gehe zu Seite ( 1 | 2 | 3 | 4 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


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 5 Beiträge verfasst
© x sparkkelsputz        Besucher : 182292723   Heute : 3551    Gestern : 4667    Online : 708        6.11.2024    19:29
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0421130657196