Das Open-Control-Projekt - Die Alternative zur C-Control-I


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: