Forum: Mikrocontroller und Digitale Elektronik Probleme bei IRDA


von Julius Krebs (Gast)


Angehängte Dateien:

Lesenswert?

Seit Stunden versuche ich ein vernünftiges IR-Signal zur Kommunikation
mit einem Palm zu erzeugen. Leider werden nur etwa 2/3 der Daten
fehlerfrei angenommen. Ich habe unzählige Veränderungen vorgenommen,
doch nichts wollte helfen. Dazu ein paar Worte: Um sicherzugehen, dass
der Übertragungsmodus an beiden Geräten (Palm105 und atmega16) korrekt
eingestellt ist habe ich das invertierte UART-Signal abgegriffen und
direkt an den seriellen Eingang des Palms angeschlossen. Das Ergebnis
war einwandfrei. Die für die Infrarotübertragung notwendige
Trägerfrequenz von 18khz (gemessen mit einem Multimeter) ist mit einer
Abweichung von 0,01khz  akzeptabel. Erzeugt wird diese übrigens
Mithilfe der Compareoutputfunktion eines 8bit-Timers. Kombiniert werden
beide Signale mit einem einfachen UND-Gatter in Form von zwei
Standarttransistoren.
Ich hoffe, dass Schaltplan und Programmcode ausreichen um der
Fehlerquelle auf die Schliche zu kommen.

von Julius Krebs (Gast)


Angehängte Dateien:

Lesenswert?

Der Code hat leider nicht mehr reingepasst

von leo9 (Gast)


Lesenswert?

Du modulierst die LED während einer "0" mit 18kHz. Ich fürchte aber
dass der Palm nach IrDa sendet (zu Beginn eienr "0" einen kurzen
IR-Puls).

Ich habs kurz mit einem Palm Vx und einem TFDS4500 als Empfänger
probiert. Bei einem Hotsync sendet der Palm alle Sekunden ein Paket
nach obiger Codierung.

Dass ein Teil deiner Daten funktioniert liegt vermutlich daran dass bei
manchen Bits eine UART-"0" mit einer 18kHz-"1" zusammentreffen, und
der Palm offensichtlich recht "fremdimpulsimmun" ist.

grüsse leo9

von Julius Krebs (Gast)


Lesenswert?

Hallo leo9,

Leider habe ich nicht ganz verstanden was du meinst. Was genau habe ich
mir unter der "Codierung" vorzustellen?

"Dass ein Teil deiner Daten funktioniert liegt vermutlich daran dass
bei
manchen Bits eine UART-"0" mit einer 18kHz-"1" zusammentreffen,
und
der Palm offensichtlich recht "fremdimpulsimmun" ist"

Ob nun eine 0 mit einer 1 oder einer 0 zusammentrifft ist doch
eigentlich egal, oder?

Vielleicht hilft ein kleiner Auszug aus den vom Palm aufgenommenen
Daten weiter:
01234567890003446&880122$%678901“45679012341678801224466880023$4&’890

von leo9 (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Julius,

anbei findest du ein paar Signale, oben die 18kHz, dann den UART
prinzipiell und UART mit Datenbeispiel. Darunter "dein" IR-Signal und
ganz unten das IR-Signal wie es meinem Dafürhalten nach für IrDa
ausschauen müsste.

grüsse leo9

von Markus (Gast)


Lesenswert?

@Julius:
Wie bist Du denn auf die 18kHz gekommen? IRDA arbeitet doch mit
verschiedenen Geschwindigkeiten und wenn Du z.B. mit 19200bps arbeitest
hättest Du ja bei 18kHz Trägerfrequenz ziemliche Probleme.

Markus

von Michael (Gast)


Lesenswert?

@Julius
schau mal, ob dein Multimeter auch Frequenzen bis mind. 40kHz messen
kann, sonst könnten die 18kHz eventuell ein Aliasing-Problem sein.

von Markus (Gast)


Lesenswert?

@Michael:
Die üblichen Multimeter können schon bis 200kHz messen - aber Irda
benutzt keinen Träger. Wie man auf dem Bild von leo9 schön sehen kann,
werden bei SIR (das "langsame" Irda bis 115200bps) einfach nur kurze
Impulse mit 30% der Bitdauer geschickt.

Markus

von Julius Krebs (Gast)


Lesenswert?

Ok, das Prinzip ist mir Dank der guten Skizze klargeworden. Das heißt
dann wohl im Klartext, dass ich auf das hardwareintegrierte UART
verzichten muss.
Kennt jemand IRDA spezifische UART-Bibliotheken?

von leo9 (Gast)


Lesenswert?

@ Julius:
kommt drauf an, wie schnell dus brauchst. Für pic hab ich das ganze mal
in assembler verbrochen. Jetzt brauch ichs aber auch für einen avr,
allerdings mit CodeVision-Compiler.
In den nächsten ein, zwei Wochen sollte das dann spielen.

grüsse leo9

von edi.edi (Gast)


Lesenswert?

hi,

dein UART kann bleiben nur bei IRDA ist ein bittiming von 1/16
ueblich...
ich habe mal den chip HSDL7000 / 7001 mit erfolg eingesetzt.

ciao
ed

von leo9 (Gast)


Lesenswert?

@ ed:

Für nur Senden kann ich deine Aussage unterstützen, sobald aber
Datenempfang auch notwendig ist scheidet der normale UART leider aus
(das Sampling passiert etwa in "Bit-Mitte" und da ist das IR-Signale
schon wieder aus).

grüsse leo9

von edi.edi (Gast)


Lesenswert?

hallo Leo9,

wahrscheinlich kennst Du den HSDL7000 nicht....er macht aus dem 1/16
bittime wieder ein 16/16 signal.

schau Dir evtl das Datenblatt an

ciao
ed

von leo9 (Gast)


Lesenswert?

@ ed:
Du bekommst 100 Punkte und ich ziehe meine Aussage zurück, ich bin
davon ausgegangen dass du IR-Sender und Empfänger bezeichnest. Dass es
sich um Signal-Wandler handelt habe ich nicht erwartet.

grüsse leo9

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
Noch kein Account? Hier anmelden.