Der Nachfolger des WDR-Computerclub mit Wolfgang Back und Wolfgang Rudolph - ...und immer ein Bit übrigbehalten!


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: IR-Empfang auf der Open-Micro Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Dietmar, Homepage - 11.09.2006 20:00)
 Als Antwort auf Problem IR-Empfang mit neuen BS gelöst? von Andi H. - 11.09.2006 11:56
Dietmar nutzt:  CC1-M-Unit V1.1, Advanced CC1-Unit, Open-Micro, Open-Mini, Open-Mini M-Unit, Open-Mini Station, B-Control, sonstige
Hallo Andi!

> In den Forenbeiträgen steht, daß ein Infrarotempfang mit dem Conrad Micro (Beispiel Infrarotswitch) nicht möglich ist.

Du spielst sicher auf den Systemtreiber RC5_P0.S19 an, der ausschließlich auf der Conrad-Micro 2.01 lauffähig ist. Nicht aber auf der Conrad-Micro Version 2.00.

> Problem IR-Empfang mit neuen BS gelöst?

Deine Frage verstehe ich so, daß Du noch eine 2.00er besitzt und mit dem Gedanken spielst, diese mit dem in Beitrag 11117 beschriebenen Upgrade auf eine Open-Micro umzuflashen.

> Ist es nun möglich, mit dem Open Micro Infrarotsignale z.B. mit dem Programm zu empfangen und auszuwerten?

Die Open-Micro ist weitgehend kompatibel zur Conrad-Micro, aber die Kompatiblität geht nicht soweit, daß die Systemtreiber für die Conrad-Micro auch auf der OM funktionieren. Dazu wäre eine zu große Kompatiblität zum Betriebssystem der Conrad-Micro notwendig, was zuviele Nachteile mit sich bringen würde.

Nichtsdestotrotz habe ich mir den Systemtreiber einmal angesehen. Ich denke, mit ein paar Tricks ist es möglich, diesen Treiber auch auf der OM zu nutzen.

Etwas ungünstig ist, daß der Treiber BYTE[1] und BYTE[2] der Conrad-Micro verwendet, um COMMAND und ADDRESS zurückzugeben. Diese beiden Bytevariablen liegen an Adresse $c0 und $c1 und liegen somit auf der Open-Micro und Open-Mini außerhalb des User-RAMs. Genauer: Sie folgen unmittelbar dahinter. Bei der Entwicklung des OM-Betriebssystems habe ich solche Fälle aber bereits einkalkuliert. Der direkt hinter dem User-RAM folgende Speicherbereich wird vom Betriebssystem nur für Funktionen verwendet, die auf der Conrad-Micro nicht existieren. Wenn der Anwender diese zusätzlichen Features nicht nutzt, ist der Speicher also frei. Auf Adresse $c0 und $c1 wird vom OS die Adresse einer BASIC-Interruptroutine gespeichert. Wenn der IR-Treiber benutzt wird, steht diese Funktion also nicht mehr zur Verfügung. (Siehe dazu auch den "RAM-Speicherbelegungsplan für Open-Micro und Open-Mini" auf der Downloadseite der OM-Infosite.) Außerdem belegt der Treiber zwei Bytes des normalen OM-User-RAMs für temporäre Zwecke.

Hier der getestete Code. Leider besitze ich keine RC5-IR-Fernbedienung und konnte daher die korrekte RC5-Dekodierung nicht überprüfen...

' ---------------------------------------------------------------------------
' Den von DIE HARD fuer die Conrad-Micro 2.01 erstellten Systemtreiber
' RC5_P0.S19 fuer Infrarot-RC5-Empfang auf der Open-Micro und Open-Mini
' nutzbar machen.
' ---------------------------------------------------------------------------

' Pinbelegung des TSOP 1738:

' Pin 1 = GND
' Pin 2 = 5 Volt
' Pin 3 = Output

' In die Versorgungsspannung muß ein RC-Tiefpaß mit 330 Ohm und 4,7 µF
' geschaltet werden, weil der TSOP sonst offenbar bereits Störungen
' empfängt, wenn der Kontroller einen anderen Port toggelt. Siehe Manual.

' ---------------------------------------------------------------------------

INCLUDE "om.def"

DEFINE COMMAND BYTE[65]  '$c0 = BYTE[1] auf Conrad-Micro
DEFINE ADDRESS BYTE[66]  '$c1 = BYTE[2] auf Conrad-Micro

DEFINE temp1   BYTE[30]  '$9d \ Werden vom Treiber
DEFINE temp2   BYTE[32]  '$9f / beschrieben

DEFINE led     PORT[2]

' ---------------------------------------------------------------------------
' Handler fuer KEYB-Interrupt
' ---------------------------------------------------------------------------

PROC keyb_iiar INLASM

! cbeqa #iKYB,iskeyb
! jmp keyb_iiar_end+2    'Sprung zur naechsten IIAR in der Kette

#iskeyb
! jmp $fd03              'Einsprungpunkt fuer KYB-Interrupt auf Conrad-Micro

END PROC

#keyb_iiar_end          'hier hinter sollte die naechste IIAR folgen

' ---------------------------------------------------------------------------
' Hauptprogramm
' ---------------------------------------------------------------------------

#main

UIRKyb=ON                'IIAR-Kette bei einem KYB-Interrupt aufrufen

SYS &hfd08               'KYB-Interrupt fuer PORT[4] aktivieren

PrintSpc=ON

led=OFF

WHILE TRUE
  PAUSE 10
  TOG led

  IF COMMAND OR ADDRESS THEN
    PRINT COMMAND;ADDRESS;temp1;temp2
    COMMAND=0
    ADDRESS=0
  END IF
WEND

' ---------------------------------------------------------------------------
' Systemtreiber in den SYSCODE-Bereich ($fd00) laden (nur einmal noetig)
' ---------------------------------------------------------------------------

SYSCODE "RC5_P0.S19"

Hier zur Sicherheit noch der Inhalt der Datei RC5_P0.S19:

S113FD00C56CA2CCFD0B1694161B81AE07AD0EB7C5
S113FD109DAE06AD08B7C04E9DC13F1A81AD4BAD37
S113FD20065A26F9A43F813F9F06000E3A9F3A9F48
S113FD303A9F27E60700F59849813A9F3A9F3A9FF0
S113FD4027D80600F59949819B0700143FC0AE1ED1
S113FD50A620B800B700AD0A5A26F50600023CC03A
S113FD609A81A6059D9D4A26FD818789AEFFA6043A
S113FD705A26FD4A26FA888681FFFFFFFFFFFFFF10
S113FD80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F
S113FD90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
S113FDA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F
S113FDB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F
S113FDC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F
S113FDD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F
S113FDE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F
S10FFDF0FFFFFFFFFFFFFFFFFFFFFFFF0F
S9030000FC

Übrigens steht ab Adresse $fd48 im Treiber offenbar Code zum Senden eines Bits per IR. Der Code ist aber undokumentiert.

Viele Grüße
Dietmar

Meine Homepage: http://ccintern.dharlos.de

 Antwort schreiben

Bisherige Antworten: