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.
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
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$%67890145679012341678801224466880023$4&890
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
@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
@Julius schau mal, ob dein Multimeter auch Frequenzen bis mind. 40kHz messen kann, sonst könnten die 18kHz eventuell ein Aliasing-Problem sein.
@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
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?
@ 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
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
@ 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
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
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.