Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   6 PINES (http://foros.zackyfiles.com/forumdisplay.php?f=434)
-   -   Mod decos Sl35/SL65s para que funcionen con firms Truman (http://foros.zackyfiles.com/showthread.php?t=524112)

vishero 28/07/2007 00:44

Mod decos Sl35/SL65s para que funcionen con firms Truman
 
Proyecto original de "Vinix & Kosovo & SAT-ULC users" en el foro alemán ULC.

Hilo de dicho proyecto: [B]w*w.sat-ulc.com/ulc/thread.php?threadid=50033&threadview=0&hilight=&hilightuser=0&page=1[/B] [SIZE="1"](Información "legal" en alemán, solo modificación de hard)[/SIZE]

Se trata de un pequeño circuito que permite solucionar la incompatibilidad de los decos Comag SL35 y SL65s con los Truman, es decir solucionar los problemas con el mando y el sonido cuando tienen flasheados dicho firm.

En el caso de los Sl35 es un Mod del frontal, con varias conexiones desde dicho frontal al circuito. En el SL65s solo hay que conectar a 3,3v, masa, intercalar la señal IR y lo mas "complicado", conectar con tres patas del chip de sonido PCM1742KE.

Para el proyecto se pueden usar desde el "glorioso" PIC 16F84-04 hasta los ATMega 8 y 32...

A continuación poner la información que se encuentre, diagramas, fotos, dudas sobre programadores de pics, etc. etc...

sl2

P.D.: Si se registra en el foro alemán, además de poder ver el hilo, se podrá acceder a las descargas de los correspondientes archivos hex para meterle a los pic's y AT's, tanto en dicho hilo como en en ulpload que tiene el foro en la sección de los SL35/SL65.

vishero 28/07/2007 01:02

Fotos de MOD de bertram02 (foro ULC) hecho en un SL65s y con un pic 16F84:

http://img441.imageshack.us/img441/4...lettrq7.th.jpg http://img526.imageshack.us/img526/2...0060vq8.th.jpg http://img526.imageshack.us/img526/2...068kqk3.th.jpg http://img300.imageshack.us/img300/5...069kva3.th.jpg

http://img410.imageshack.us/img410/5...0070pj4.th.jpg http://img515.imageshack.us/img515/1...070amp5.th.jpg http://img300.imageshack.us/img300/6...0071hz7.th.jpg http://img526.imageshack.us/img526/2...0072zz7.th.jpg

Como se ve, alimentó el Mod desde los 3.3v que viene de la fuente, masa al tornillo de la placa, cortó el cable negro que va desde el frontal a la placa (conexión "ida y vuelta"), y lo mas dificultoso, la conexión de tres cables a las patas del chip de sonido1742KE, en este caso para poder soldar, retiró previamente los dos condensadores que están pegados a el. Para otros "Moders" (muy apañados ellos... :) ) no ha sido necesario.


sl2

SantiPHREACK 28/07/2007 01:31

Aquí mi [B]"SL65-12 A1 MOD"[/B] perdonad por la calidad de la afoto:-/

[URL=http://img341.imageshack.us/my.php?image=21072007002cp5.jpg]http://img341.imageshack.us/img341/3...7002cp5.th.jpg[/URL]

vishero 28/07/2007 01:47

Yo quiero ver los condesadores!!!!... :D:D:D

Veo que le pusiste los leds y el interruptor Mode-Truman/Mode-Comag.

Tengo una duda con el circuito, en vez de meterle un Resonador cerámico de 4MHz quería meterle un cristal de 4MHz que ya tengo, con dos condensadores de 22pf, alguien lo hizo así en ULC, pero no entiendo bien como los puso. Van de cada una de las patas del cristal a masa?

sl2

vishero 28/07/2007 03:03

Foto de los cables soldados en el chip de sonido de un SL35, al estar mas despejado que en SL65, es menos dificultoso soldarlos, incluso pareciera que uno de ellos se suelda en una resistencia conectada a la pata 15.

http://img207.imageshack.us/img207/1...nidony3.th.jpg
Foto by Vinix

sl2

vishero 28/07/2007 03:16

Unas ideas de como hacer algún "artilugio" para ponerlo pegado encima del chip de sonido y no soldar directamente en el. En este caso se usaría parte de un zócalo, torciendo las patas para que encajen sobre las del PCM1742KE, como está pensado para un SL35 son solo 2.

[URL=http://img521.imageshack.us/my.php?image=dackontxr6.jpg]http://img521.imageshack.us/img521/2...kontxr6.th.jpg[/URL]

Alguna otra idea?

sl2

vishero 28/07/2007 03:50

Diagrama del circuito para un SL35 by Vinix:

http://img510.imageshack.us/img510/5...ion2yu2.th.jpg

Código:

Componentes:

Pos.    Cant.      Tipo              Referencia
  1        1    16F84 o 16F84a          IC1
  2        1    Resonador 4 MHz        RES1
  3        1    LED 2,5mm verde        LED MODE
  4        1    LED 2,5mm rojo          LED IR
  5        6    10 K 0,25W 5%          R1,R2,R3,R4,R5,R6
  6        2      330 0,25W 5%          R7,R8

En el SL35 hicieron un Mod de frontal, para el SL65s habría que quitarle las conexiones a los botones del mismo, con sus respectivas resistencias, no estoy seguro que funcionen, en la documentación dice que son solo para los SL35. Otra diferencia son las referencia a los números de conectores CON que difieren con los del SL65s. El resto es igual.

Habría que "limpiar" dicho diagrama para el SL65s para no crear confusión.

Otra duda que tengo es lo referido a la sustitución del resonador por un cristal de 4MHz con 2 condensadores de 22pf.

Sería ideal que alguien con conocimientos de alemán tradujera el pdf de la documentación, que está muy bien hecho. La traducción online se entiende menos que el original....
sl2

vishero 28/07/2007 04:14

Hex v2.5 Final (27.07.2007) para el Pic 16F84 y 16F84A by Vinix:
(no contiene HOT-CODE)

SL35_SO_FB_WDT_V2_5.HEX
Código:

:020000040000FA
:020000001928BD
:080008009800030E99000108A5
:100010009A0064001714971081018316C430810080
:1000200083128B10190E8300980E180E0B168B1767
:1000300009006400AA131F3085008316850083120F
:10004000813086008316860083128316C4308100B7
:10005000831286140611061606136400A501861B7A
:10006000A5174922861B482864008B130508A600A3
:1000700026189828A6189B2826199E280608803935
:100080002506031D2D2806180616061C0612342800
:1000900064000B309300D7309500970196019A01C8
:1000A000A301A4016400060880392506031D2D283C
:1000B0000B168B176400171C5E286E28050807397D
:1000C000A60026181429A618172926191A29060881
:1000D00080392506031D2D2864005B289714971886
:1000E0006F2864001A081502031C77287928161453
:1000F0007A281610930B7D288128960D971464009A
:100100006F28640000309300640083121308890094
:100110008316081483120808940016081406031D99
:1001200092281D29930A22301306031D842848288B
:100130001E30A800A1282830A800A1282A30A80035
:10014000A128291CA428AE28F730900006126D22A1
:100150000616D620F520D6202914B828F7309000AE
:1001600006126D220616D620D620D6202910B828D1
:100170000830A700A81FD328D620A80DA70BBA289F
:10018000003090006D22003090006D220030900011
:100190006D22003090006D22003090006D22003002
:1001A00090006D223428F520A80DBE281C30900048
:1001B0006D22F930900006126D2200000000000050
:1001C000000000000000000000000000000000002F
:1001D000000000000000000000000000000000001F
:1001E000000000000000061608006A3090006D2232
:1001F000F930900006126D2200000000000000009F
:1002000000000000000000000000000000000000EE
:1002100000000000000000000000000000000000DE
:100220000000000006160800003093001D290D3064
:1002300093001D29113093001D298616640021307A
:1002400013060319752AAA1B772A1308A200A30113
:1002500064003E2264002308A400AA1F3929C73085
:10026000A40703300318013E8A002408C7239B001B
:100270004229CB30A40702300318013E8A0024082B
:10028000CB229B00A30AA40164002308A400AA1F98
:100290005329C730A40703300318013E8A002408FD
:1002A000C7239C005C29CB30A40702300318013E11
:1002B0008A002408CB229C00A30AA401640023081E
:1002C000A400AA1F6D29C730A40703300318013EFC
:1002D0008A002408C7239D007629CB30A40702306A
:1002E0000318013E8A002408CB229D00A30AA40122
:1002F00064002308A400AA1F8729C730A40703307D
:100300000318013E8A002408C7239E009029CB30A1
:10031000A40702300318013E8A002408CB229E0065
:10032000A30AA40164002308A400AA1FA129C730BE
:10033000A40703300318013E8A002408C7239F0046
:10034000AA29CB30A40702300318013E8A002408F2
:10035000CB229F00A30AA40164002308A400AA1FC3
:10036000BB29C730A40703300318013E8A002408C4
:10037000C723A000C429CB30A40702300318013ED4
:100380008A002408CB22A000A30AA4016400230849
:10039000A400AA1FD629C730A40703300318013EC2
:1003A0008A002408C723A100AA13DF29CB30A407A1
:1003B00002300318013E8A002408CB22A100A401C8
:1003C00064000822E6211422861248280730930090
:1003D00030220830930030221B08930030221C0882
:1003E000930030221D08930030221E089300302213
:1003F0001F08930030222008930030220130930020
:10040000302221089300302201309300302208006E
:100410000612003090006D22D73090006D22061633
:10042000753090006D2208000616053093000030EC
:1004300090006D22930B172A7D3090006D220612DA
:10044000013090006D22E13090006D220616BD3023
:1004500090006D220612E93090006D220616080009
:100460000612E93090006D220616F23090006D22DF
:10047000930B302AD03090006D2208000030220605
:100480000319472A2308073EA300A20B422AA30A06
:10049000080014309100861B512A05309200061383
:1004A000542A033092000617861008309300110D6D
:1004B0000318861591006922930B572A0830930080
:1004C000120D0318861592006922930B602A861478
:1004D0000800061506118611080009309400940BD7
:1004E0006F2A6400900F6D2A0800AA17482864003C
:1004F000163013060319992A1730130603199C2A7C
:10050000183013060319A02A193013060319A42A58
:100510001A3013060319A82A1B3013060319AC2A34
:100520001C3013060319B02A1D3013060319B42A10
:10053000482800309300B72A013093006400B72A9E
:10054000023093006400B72A033093006400B72A96
:10055000043093006400B72A053093006400B72A82
:10056000063093006400B72A073093006400252901
:0A05960082000334023405340234FD
:1005A000023401340134023401340334063401349A
:1005B0000234013402340134023401340634033489
:1005C000013404340234043401340234023401347A
:1005D0000434043402340134023401340234023469
:1005E0000134013402340734023401340234033458
:1005F0000134053401340334013403340534023446
:100600000234013401340234033403340434023438
:100610000134023401340234063403340134013429
:100620000134023408340234013401340134013419
:100630000234053401340434013401340334013408
:1006400002340134013401340934013401340234F8
:1006500001340234073402340134013402340434E6
:1006600005340134013402340134023402340134DB
:1006700006340334013401340634043401340134C3
:1006800001340234013403340134013405340434B8
:1006900001340134023401340134013401340934A9
:1006A0000134033401340134013404340534013499
:1006B0000234023401340134053404340134033487
:1006C0000134023404340334023401340234093472
:1006D0000134013401340134013403340734023469
:1006E0000134013401340134023401340934013459
:1006F0000134013401340434063401340234013449
:100700000134013402340234073402340134013438
:100710000134033401340634033401340134013428
:100720000234013401340934013401340134053414
:100730000534013401340234013401340234033409
:1007400006340134023401340134033402340134F8
:1007500004340234033401340A34013401340134E2
:1007600001340134013402340234043403340234D9
:04077000013402341A
:02078E008200E7
:1007900002340134013404340534013402340234A7
:1007A0000134053404340134013402340334013497
:1007B0000434023403340134023404340434023483
:1007C0000134023401340234043401340134043479
:1007D0000134043401340434013405340134033465
:1007E0000134013402340234023405340234023458
:1007F0000134023402340434033402340134023448
:02400E00F53F7C
:104200001E00100022001900140032001A002600BF
:104210002000300027002F0037002800210029004F
:1042200031002A0023001B002E00180035002D004D
:1042300025001D0034002C0024001C003300360033
:104240002B001F00560049004E0049005800200076
:0842500032003000300037009D
:00000001FF

Se acuerdan cuando posteabamos los hex para las PIC1...
Que tiempos aquellos!!!...

Código fuente de la v2.4, el de la v2.5 no estaba:
(Solo como verificación del contenido del HEX)

SL35_SO_FB_WDT_V2_4.asm
Código:

; Init Sequenzer für PCM1742 DAC in SL35 und SL35/1CI
; FB Code Swaper für Comag an Truman Software auf SL35 und SL35/1CI
; Abfrage ob Truman Firmware oder Orginal Firmware benutzt werden soll
; Orginal Fernbedienung von Comag auf Truman Firmware
; SOFTWARE VERSION 2.04
;
; 26.06.2007 by VINIX
; 27.06.2007 Abfrage ob Truman FIRMWARE oder COMAG Firmware benutzt wird hinzugefügt,Sound INIT "professionalisiert" ;-)
; 28.06.2007 FB Emulator COMAG FB auf Truman FIRMWARE hinzugefügt
; 02.07.2007 Emulator Implementiert
; 06.07.2007 Interrupt Versuch RB0, Hardware Modifiziert
; 07.07.2007 Tabelle Vervollständigt und Optimiert
; 08.07.2007 IR Indikator bleibt in der Software / war Urrsprünglich nur zum Test Eingebaut / ist aber auch so nützlich
; 09.07.2007 Mode Abfrage zur Laufzeit
; 10.07.2007 WDT Implementiert (soll ein "Hängen" der FB bei längerer Nichtbenutzung Verhindern)
;                        Hintergrund ist die Empfindlichkeit des IR Empfängers. Dieser Reagiert auf alle Impulse, dadurch kann es
;                        Vorkommen das die Software in der Datenempfangs Routine, die Interruptgesteuert ist, "Gefangen" ist.
;                        Sollte das Passieren so wird der WDT nach ca. 10 - 20 mS nicht mehr gelöscht und dieser Löst dann ein
;                        RESET aus und der Controller begint wieder von Vorne.
; 14.07.2007 Tabelleadressberechnung verbessert
; 20.07.2007 Fronttastatur Funktion über FB EMU zum Portpin Sparen für den TRUMAN und den COMAG Mode Eingebaut 


; PORTBELEGUNG des PIC 16F84:
; ===========================
; Hardware Version 2_4
;
; RA 0 = POWER                                (EINGANG)
; RA 1 = UP                                        (EINGANG)
; RA 2 = DOWN                                (EINGANG)
; RA 3 = NC                                        (EINGANG)
; RA 4 = NC                                        (EINGANG)
;
; RB 0 = IR_IN                                (EINGANG)    INTERRUPT EINGANG !
; RB 1 = ML/15 Data Latch        (AUSGANG)         
; RB 2 = MC/14 CLOCK                (AUSGANG) 
; RB 3 = MD/13 DATA                        (AUSGANG) 
; RB 4 = FBC_OUT                        (AUSGANG)
; RB 5 = LED IR AKTIV                (AUSGANG)       
; RB 6 = LED C/T                        (AUSGANG)
; RB 7 = Truman Enable                (EINGANG)  / Hinzugefügt um bei FB EMU implementation eine Möglichkeit zu haben die
;                                                                                / Orginal Firmware wieder Benutzen zu können ohne den Verlust der FB Funktion
;                                                                                / wenn die Versorgungsspannung vom Pic genommen würde.


        TITLE        "SL35_FB.ASM"
        include "p16f84.inc"
        LIST        P=16F84
        __CONFIG _CP_OFF & _WDT_ON & _XT_OSC & _PWRTE_ON

   
; Fileregister Definieren für Konastanten und Variablen
; =====================================================
VERKO        EQU        0x10                                ; Speicher der Verzögerungsdurchläufe       
FDIX        EQU        0x11                                ; First out / MSB also Register Index
LDDX        EQU 0x12                                ; Last out / LSB also Register Data
ZWI                EQU        0x13                                ; Zwischenspeicher für Vergleichsroutine usw.
ZWI2        EQU        0x14                                ; Zwischenspeicher 2 für Vergleichsroutine usw.
ENT                EQU        0x15                                ; Entscheidungszahl
IRIN1        EQU        0x16                                ; Speicher für das 16 Bit LSB Empfangsbyte
FIRST        EQU 0x17                                ; Interrupt Durchlauf Flag's
W_TEMP        EQU        0x18                                ; TEMPFILE Work
STA_TMP        EQU        0x19                                ; TEMPFILE Status
ZEIT        EQU 0x1A                                ; TMR0 Speicher nach Interrupt
TCA1        EQU 0x1B                                ; Truman Code Ausgabe 1'te Byte
TCA2        EQU 0x1C                                ; Truman Code Ausgabe 2'te Byte
TCA3        EQU 0x1D                                ; Truman Code Ausgabe 3'te Byte
TCA4        EQU 0x1E                                ; Truman Code Ausgabe 4'te Byte
TCA5        EQU 0x1F                                ; Truman Code Ausgabe 5'te Byte
TCA6        EQU 0x20                                ; Truman Code Ausgabe 6'te Byte
TCA8        EQU 0x21                                ; Truman Code Ausgabe 8'te Byte
MULTI        EQU        0x22                                ; Multiplikator
ERGEB        EQU 0x23                                ; Tabellen Index Comag
VV                EQU        0x24                                ; Tabellensprungadresse aus Comag Index und Truman Code Table
ITE                EQU        0x25                                ; INIT TEST Register / Mode Umschaltung
FRONTP        EQU        0x26                                ; Frontpanel Abfrage
SCHI        EQU        0x27                                ; SCHLEIFENZÄHLER COMAG
IHCS        EQU        0x28                                ; COMAG TASTENSPEICHER
WETA        EQU        0x29                                ; COMAG Zwischenspeicher für den Wechsel der Präambel im Comag FB / Frontpanel Mode

                ORG        0                                        ; RESET VECTOR (Hauptprogramm)
                GOTO        HAUPTPROGRAMM       

; ################################################################################################################################

; INTERRUPT SERVICE ROUTINEN (werden Aufgerufen sobald eine Interrupt Kondition erfüllt wurde)
; ============================================================================================
        ORG        4                                        ; Start der Interrupt Routine

; PUSH (Retten von System Registern vor dem Interrupt)
; ====================================================
                MOVWF        W_TEMP                        ; Work FR Sichern
                SWAPF        STATUS, W                ; STATUS ins W Register
                MOVWF        STA_TMP                        ; STATUS im Temporary File Speichern

; Hier wird Abgefragt welche Quelle den Interrupr Ausgelöst hat:
; ==============================================================
; In diesem Programm wird nur der INT am RB0 Benutzt, deshalb frei

; Register für die Spätere Verarbeitung Sichern:
; ==============================================
                MOVF        TMR0,W                        ; Timerwert sichern PRIORITÄT, die Größe ist equivalent des Bitzustandes Kurz = 0 / Lang = 1
                MOVWF        ZEIT                        ; Zeit bis zum Auslösen des Interrupt Speichern

; Watchdog Löschen wenn Interrupr Ausgelöst wird:
; ===============================================
                CLRWDT                                        ; Watchdog Löschen

; Startimpuls Flag setzen:
; ========================
                BSF                FIRST,0                        ; Schleifenflag setzen, wenn 0 dann ist das der Start des FB Telegramm (Startimpuls)

; Daten Flag        Löschen:
; ======================
                BCF                FIRST,1                        ; Flag Löschen       

; TMR0 Löschen:
; =============
                CLRF        TMR0                        ; TMR0 0

; TMR0 Neu Starten, da nach einem Schreibzugriff /CLRF ist auch Schreiben/ der Vorteiler Automatisch auf 1:2 Gesetzt wird:
; ========================================================================================================================
                BSF                STATUS,RP0                ; Page Select 0
                MOVLW        B'11000100'                ; Option Register laden mit: Pullup AUS / INT bei 0->1 / RTCC auf INTERN / Prescaler 1:32
                MOVWF        OPTION_REG                ; In das Option Register schreiben
                BCF                STATUS,RP0                ; Page Select 1

; Löschen des Interrupt Flags für RB0
; ===================================
                BCF                INTCON,INTF                ; Interrupt Flag Löschen (WICHTIG, da sonst sofort nach RETFIE wieder ein INT Ausgelöst wird)

; POP (Zurückschreiben von System Registern nach dem Interrupt)
; =============================================================
                SWAPF        STA_TMP, W                ; STATUS in das W
                MOVWF        STATUS                        ; STATUS Restaurieren
                SWAPF        W_TEMP,F                ; Nibble Tauschen und im FR speichern
                SWAPF        W_TEMP,W                ; Nibbles Tauschen im W Register Speichern
                BSF                INTCON,INTE                ; RB-0 Interrupt Einschalten
                BSF                INTCON,GIE                ; Generell Interrupt Enable
                RETFIE                                        ; Rücksprung vom Interrupt

; #################################################################################################################################

; Hier Startet das HAUPTPROGRAMM
; ==============================
HAUPTPROGRAMM:
; Watchdog Löschen:
; =================
                CLRWDT                                        ; Watchdog Löschen
               
; Port A initialisieren und Tris Register setzten
; ===============================================
;                          1 = EINGANG
;            0 = AUSGANG
;            BIT 76543210
                MOVLW        B'00011111'                ; APORT PIN 0 - 4 Eingang
                MOVWF        PORTA                        ; an den PORT Anlegen
                BSF                STATUS,RP0                ; Page Select ausführen 1
                MOVWF        TRISA                        ; ins Tris Register übernehmen
                BCF                STATUS,RP0                ; Page select wieder auf 0

; Port B initialisieren und Tris Register setzten
; ===============================================
;                          1 = EINGANG
;            0 = AUSGANG
;            BIT 76543210
                MOVLW        B'10000001'                ; BPORT Pin 0 und 7 Ausgang, 1 - 6 Ausgang
                MOVWF        PORTB                        ; an den PortB legen
                BSF                STATUS,RP0                ; Page select ausführen 1
                MOVWF        TRISB                        ; PortB lesen und ins TRIS Register schreiben
                BCF                STATUS,RP0                ; Page select wieder auf 0
               
; TMR0 und Prescaler definieren
; =============================
; Bit Value                TMR0 Rate  t/count bei 4 MHz
; ------------------------------------------
;                000                1:2                                  2 uS
;                001                1:4                                  4 uS
;                010                1:8                                  8 uS
;                011                1:16                        16 uS
;                100                1:32                        32 uS
;                101                1:64                        64 uS
;                110                1:128                        128 uS
;                111                1:256                        256 uS

                BSF                STATUS,RP0                ; Page Select 0
                MOVLW        B'11000100'                ; Option Register laden mit: Pullup AUS / INT bei Wechsel von 0->1 / RTCC auf INTERN / Prescaler 1:32
                MOVWF        OPTION_REG                ; In das Option Register schreiben
                BCF                STATUS,RP0                ; Page Select 1

; Portpins für den PCM1742 Labeln:
; ================================
; ACHTUNG HARDWARE GEÄNDERT WEGEN INTERRUPT EINGANG IR AUF RB0:
; =============================================================
#DEFINE ML                PORTB,1                        ; PCM 1742KE Latch
#DEFINE MC                PORTB,2                        ; PCM 1742KE Clock
#DEFINE MD                PORTB,3                        ; PCM 1742KE Data

; Portpins für den IR Empfänger und Fernbedienung Ausgang COMAG Labeln:
; =====================================================================
#DEFINE IR                PORTB,0                        ; Infrarot FB Eingangssignal von der Frontplatine
#DEFINE FBC                PORTB,4                        ; FB Ausgang zum ALI vom Emulator

; Portpins für den IR Indikator LED Labeln:
; =========================================
#DEFINE LEDI        PORTB,5                        ; LED IR Indikator (Blinkt bei Empfang von der Fernbedienung) 

; Portpins für den Wahlschalter Firmware und Anzeige LED Labeln:
; ==============================================================
#DEFINE LED                PORTB,6                        ; LED AUS = COMAG Firmware / LED AN = Truman Firmware 
#DEFINE TB                PORTB,7                        ; Schalter Eingang Comag oder Truman Firmware

; Anweisung für den Compiler / MPASM Microchip
; ============================================
#DEFINE        TABLELENGTH        d'238'                ; Tabellelänge der Codes

; Grundzustände Herstellen, egal ob Truman Firmware oder Comag Firmware:
; ======================================================================
                BSF                ML                                ; Latch ist aktiv Low, Ruhezustand High
                BCF                MC                                ; Clock ist aktiv High, Ruhezustand Low
                BSF                FBC                                ; FBC ist aktiv LOW, Ruhezustand High
                BCF                LED                                ; LED Ausgeschaltet beim Einschalten des Receivers am Netzschalter

; Grundeinstellung nach dem Einschalten Speichern:
; ================================================
REINIT: CLRWDT                                        ; Watchdog Löschen
                CLRF        ITE                                ; LÖSCHEN
                BTFSC        TB                                ; Aktuellen MODE Speichern
                BSF                ITE,7                        ; 1 Speichern

; PCM 1742 KE Initialisieren:
; ===========================
                CALL        PCMINIT                        ; SOUNDINI Auswahl des Modes nun in der INIT Routine

; Truman Software Enable Abfragen, um Festzustellen ob die FB Emulation laufen soll oder nur Signale Relayed werden / HIGH = Truman / LOW = SL35:
; ======================================================================================================================================================
                BTFSC        TB                                ; Zeiter Test ob HIGH, wenn LOW (COMAG Ausgewählt) Überspringe nächste Zeile
                GOTO        FBEMU                        ; Springe in die Fernbedienungsemulation COMAG FB auf TRUMAN Firmware

; Truman Bit war nicht gesetzt,               
; COMAG Fernbedienung für COMAG Orginal Firmware bzw. Truman, es werden nur die Eingangszustände auf den Ausgang gelegt:
; ======================================================================================================================
COMAG:        CLRWDT                                        ; Watchdog Löschen
                BCF                INTCON,GIE                ; Generell Interrupt Disable (sonst würde ein IR Signal diese Routine Stören)
                MOVF        PORTA,W                        ; Port A Einlesen
                MOVWF        FRONTP                        ; Speichern im FR
                BTFSC        FRONTP,0                ; Auf 0 Testen / wenn 0 dann POWER Auslösen
                GOTO        FCPOWER                        ; Funktion POWER
                BTFSC        FRONTP,1                ; Auf 0 Testen / wenn 0 dann CH UP Auslösen
                GOTO        FCUP                        ; Funktion UP
                BTFSC        FRONTP,2                ; Auf 0 Testen / wenn 0 dann CH DOWN Auslösen
                GOTO        FCDOWN                        ; Funktion DOWN
                MOVF        PORTB,W                        ; Gesammten Port B Einlesen
                ANDLW        b'10000000'                ; Bit 7 Filtern
                XORWF        ITE,W                        ; Neuen Zustand mit Alten Zustand Vergleichen
                BTFSS        STATUS,Z                ; Zero Flag = 1 / MODE hat nicht gewechselt, Keine Reinitialisierung Notwendig
                GOTO        REINIT                        ; Zero Flag = 0 / MODE hat gewechselt, Reinitialisiere                       
                BTFSC        IR                                ; IR Eingang Abfragen, wenn 0 dann nächste Zeile Überspringen
                BSF                FBC                                ; FB AUSGANG zum COMAG auf High setzen
                BTFSS        IR                                ; IR EINGANG Abfragen, wenn 1 dann nächste Zeile Überspringen
                BCF                FBC                                ; FB AUSGANG zum COMAG auf LOW setzen
                GOTO        COMAG                        ; Do it Forever / bis zum Nächsten Ausschalten über den Netzschalter

; #############################################################################################################################
; Ab hier wirds TRICKY ( Tricky... Tricky... Tricky ...its Tricky
; Schlaflose Nächte, Viereckige Augen, der Penetrante Geruch von durch Lötspitzen verbrannten Fingern, Hurra wir Basteln
; #############################################################################################################################
; IR Empfänger mit Hilfe der Interruptroutine Abfragen und Auswerten:
; ===================================================================
FBEMU:        MOVLW        d'11'                        ; Anzahl der Bits im Datentelegramm der COMAG Fernbedienung
                MOVWF        ZWI                                ; Speichere im Zwischenspeicher für die Bit Abzählschleife
                MOVLW        d'215'                        ; Operationswert für die Ermittlung des Bitzustandes Anhand der Impulslänge
                MOVWF        ENT                                ; Speichern im FR
                CLRF        FIRST                        ; Merker für den Startimpuls Löschen

; Auswertungs Register Löschen (alte Werte):
; ==========================================
                CLRF        IRIN1                        ; Löschen des 'alten' Inhaltes
                CLRF        ZEIT                        ; TMR0 Zwischenspeicher Löschen
                CLRF        ERGEB                        ; Speicher für Comag Index Löschen
                CLRF        VV                                ; Adressoffset für den Tabellensprung Löschen
                CLRWDT                                        ; Watchdog Löschen (alle 15 - 18 mS) sonst RESET

; Prüfen ob der Mode gewechselt werden soll:
; ==========================================
                MOVF        PORTB,W                        ; Gesammten Port B NEU Einlesen
                ANDLW        b'10000000'                ; Unrelevante Bit's Ausblenden (Nur Bit 7 Interessant)
                XORWF        ITE,W                        ; Nun den NEUEN Zustand mit dem ALTEN Vergleichen
                BTFSS        STATUS,Z                ; Zero Flag = 1 / MODE hat nicht gewechselt, Keine Reinitialisierung Notwendig
                GOTO        REINIT                        ; Zero Flag = 0 / MODE hat gewechselt, Reinitialisiere                       

; Interrupt Quelle Wählen:
; ========================
                BSF                INTCON,INTE                ; RB-0 Interrupt Einschalten

; Ab jetzt Interrupt Erlauben:
; ============================
                BSF                INTCON,GIE                ; Generell Interrupt Enable
                CLRWDT                                        ; Watchdog Löschen nur zur Sicherheit       
; Startimpuls Filtern (Flag wird in der Interruptroutine gesetzt):   
; ================================================================
STAIMP:        BTFSS        FIRST,0                        ; Warten auf den ersten Interrupt (Startimpuls)               
                GOTO        MCII                        ; Zwischendurch das Frontpannel und den Mode Schalter Überprüfen
                GOTO        WWW                                ; Startimpuls der FB Empfangen, nun zum Datenempfang Springen

; Prüfen ob der Mode gewechselt werden soll:
; ==========================================
MCII:        MOVF        PORTA,W                        ; Port A Einlesen
                ANDLW        b'00000111'                ; Nur RA 0-2 Filtern
                MOVWF        FRONTP                        ; Speichern im FR
                BTFSC        FRONTP,0                ; Auf 0 Testen / wenn 1 dann POWER Auslösen
                GOTO        FPOWER                        ; Funktion POWER
                BTFSC        FRONTP,1                ; Auf 0 Testen / wenn 1 dann CH UP Auslösen
                GOTO        FUP                                ; Funktion UP
                BTFSC        FRONTP,2                ; Auf 0 Testen / wenn 1 dann CH DOWN Auslösen
                GOTO        FDOWN                        ; Funktion DOWN
                MOVF        PORTB,W                        ; Gesammten Port B NEU Einlesen
                ANDLW        b'10000000'                ; Unrelevante Bit's Ausblenden (Nur Bit 7 Interessant)
                XORWF        ITE,W                        ; Nun den NEUEN Zustand mit dem ALTEN Vergleichen
                BTFSS        STATUS,Z                ; Zero Flag = 1 / MODE hat nicht gewechselt, Keine Reinitialisierung Notwendig
                GOTO        REINIT                        ; Zero Flag = 0 / MODE hat gewechselt, Reinitialisiere               
                GOTO        STAIMP                        ; Nein, der Erste Interrupt ist noch nicht Aufgetreten, Erneut auf FI Warten
               
; Flag für Datenimpuls setzen:
; ============================
WWW:        BSF                FIRST,1                        ; STARTIMPULS VORBEI 0000 = Programmstart / 0001 = Startimpuls OK / 0011 = im Datenempfang                         

; Abfrage ob Datenempfang mit Hilfe des 'Datenempfang Flag's':               
; ============================================================
DAIMP:        BTFSC        FIRST,1                        ; Prüfen ob der nächste Interupt Ausgelöst wurde
                GOTO        DAIMP                        ; Nein, Warte auf Interrupt
       
; FUZZY LOGIC ZEIT (Impulslänge) Auswerten und Entsprechenden Bitzustand Zuweisen:
; ================================================================================
FLA:        CLRWDT                                        ; Watchdog Löschen
                MOVF        ZEIT,W                        ; Inhalt TMR0 von Interrupt1 zu Inerrupt2 in das Work kopieren
                SUBWF        ENT,W                        ; TMR0 - ENT = + XXX (1) oder -XXX (0) 
                BTFSS        STATUS,C                ; Carry ist 1 wenn Ergebniss negativ => 0 wurde Empfangen                                               
                GOTO        SEIR1                        ; CARRY = 0 / LANG / Bitzustand ist 1 gehe Zuweisen
                GOTO        SEIR0                        ; CARRY = 1 / KURZ / Bitzustand ist 0 gehe Zuweisen

; Empfangenes Bit war eine 1:
; ===========================
SEIR1:        BSF                IRIN1,0                        ; LSB Bit 0 auf 1 Setzen
                GOTO        FER                                ; Weiter zum Prüfen ob weitere Bit's Empfangen werden müßen

; Empfangenes Bit war eine 0:
;============================
SEIR0:        BCF                IRIN1,0                        ; LSB Bit 0 auf 0 Setzen

; Prüfen ob alle 11 Bit's Empfangen wurden:
; =========================================
FER:        DECFSZ        ZWI,F                        ; Bitzähler -1
                GOTO        WEITER                        ; Noch nicht alle Bit's Empfangen
                GOTO        AUWEIA                        ; Alle 11 Bit's Empfangen nun zur Auswertung und Codewandlung gehen

; Schieben der FR NACH Bitzähler:               
; ===============================
WEITER:        RLF                IRIN1,F                        ; Nach Links Schieben für den Empfang des nächsten Bit
                BSF                FIRST,1                        ; Datenempfang Flag wieder setzen, wurde im Interrupt gelöscht                         
                CLRWDT                                        ; Watchdog Löschen
                GOTO        DAIMP                        ; Zurück zur Abfrage da noch nicht alle Bit's Empfangen wurden


; Alle 11 Bits sind nun in den Registern IRIN1 und IRIN2, nun an die Auswertung
; =============================================================================
; IRIN2 enthält nur einen Indikator für das Wechseln der Codefunktion:
; z.B.: Als 1'stes 'POWER' Taste Gedrückt IRN2 = 0000 0111 danach als 2'tes 'OK' Taste Gedrückt IRN2 = 0000 0101
; Dies wird hier nicht Gebraucht und deshalb braucht man das IRIN2 eigentlich nicht.
; DANKE an KOSOVO für den Hinweis

; FB COMAG Code wird aus dem EEPROM geholt und in einer Zählschleife Vergleichen.
; Stimmt der Empfangene Code mit einem COMAG Code dann addiere Zählerinhalt zum PC und hole Ausgabedaten im Trumanformat
; Wenn der Empfangene Code <> COMAG Code dann Ignorieren und erneut zur IR Abfrage Wechseln
; ACHTUNG: Wer 'TURBO ZAPPER' ist, der sollte sich eine Truman FB Kaufen, dies ist eine NOTLÖSUNG !
; Auch bitte keine Kritik das ab und zu die FB nicht Reagiert, siehe Oben.

; Wer es besser machen kann, sollte das Tun (!) und mir eine Kopie des Source Senden, ich Lernen gerne auch noch dazu.


; CODEVERGLEICH COMAG FERNBEDIENUNG:
; ==================================
AUWEIA:        CLRWDT                                        ; Watchdog Löschen
                MOVLW        d'00'                        ; Lade den Schleifenzähler mit der Ersten Adresse für das EEPROM
                MOVWF        ZWI                                ; Speichere im Schleifenzähler

; Daten aus dem EEPROM Holen:
; ===========================
LOS:        CLRWDT                                        ; Watchdog Löschen
                BCF                STATUS,RP0                ; Bank select 0
                MOVF        ZWI,W                        ; EEPROM Speicherstelle die Gelesen werden soll in das W Kopieren
                MOVWF        EEADR                        ; In das EEPROM Adressregister Schreiben
                BSF                STATUS,RP0                ; Bank select 1
                BSF                EECON1,RD                ; EEprom Lesen
                BCF                STATUS,RP0                ; Bank select 0
                MOVF        EEDATA,W                ; Lade WORK mit Bitmuster für die Taste XXX aus dem EEprom
                MOVWF        ZWI2                        ; Speichere im Zwischenspeicher
               
; Hier findet der Vergleich Statt:
; ================================
                MOVF        IRIN1,W                        ; Lade W mit IRIN1 zum Vergleichen
                XORWF        ZWI2,W                        ; Exclusiv Oder Verknüpfen und Ergebniss im W speichern
                BTFSS        STATUS,Z                ; Sind beide Wert identisch so wird das Zero Flag gesetzt / Überspringe nächste Zeile
                GOTO        LNT                                ; Der Vergleich war negativ, Lade nächste Bitfolge aus dem EEPROM
                GOTO        AUTRUFO                        ; Vergleich war positiv, Aktueller Wert in ZWI ist nun der INDEX für die Tabelle CODE TRUMAN Format

; Nächster Tastencode aus dem EEprom Holen:
; =========================================
LNT:        INCF        ZWI,F                        ; Schleifenzähler +1 (Index +1)
                MOVLW        d'33'                        ; Max 34 Befehle Vergleichen ( 0 - 33 )
                XORWF        ZWI,W                        ; Exclusiv ODER mit Work
                BTFSS        STATUS,Z                ; Sind beide Wert identisch so wird das Zero Flag gesetzt / Überspringe nächste Zeile
                GOTO        LOS                                ; Hole den nächsten Wert aus dem EEPROM
               
; Kein Zeichen aus dem EEprom stimmt mit dem Empfangenen Zeichen Überein, gehe zurück zur FB Abfrage
; ==================================================================================================
                GOTO        FBEMU                        ; FB erneut Abfragen

; Frontpannel Auslöse Routine für den COMAG MODE:
; ===============================================

; POWER TASTE Manuel Ausgelöst:
; =============================
FCPOWER:MOVLW        d'30'                        ; EEprom Speicherinhalt direkt Eingeben
                MOVWF        IHCS                        ; IM FR Speichern       
                GOTO        COMAAA                        ; Ausgabe Aufrufen

; UP TASTE
; ========
FCUP:        MOVLW        d'40'                        ; EEprom Speicherinhalt direkt Eingeben
                MOVWF        IHCS                        ; IM FR Speichern       
                GOTO        COMAAA                        ; Ausgabe Aufrufen

; DOWN TASTE
; ==========
FCDOWN:        MOVLW        d'42'                        ; EEprom Speicherinhalt direkt Eingeben
                MOVWF        IHCS                        ; IM FR Speichern       
                GOTO        COMAAA                        ; Ausgabe Aufrufen

; Hier wird der zur Taste gehörende FB Code an den IR Eingang im COMAG Format Ausgegeben:
; =======================================================================================
COMAAA: BTFSS        WETA,0                        ; Wechsel Taste Speicher / Präambelwechsel wie Orginal
                GOTO        FIRS                        ; 101
                GOTO        LAST                        ; 111

FIRS:        MOVLW        d'247'                        ; Verzögerungszeit für 300 uS
                MOVWF        VERKO                        ; Speichere in der Verzögerungskonstante
                BCF                FBC                                ; LOW IMPULS von 300 uS (Start Impuls)
                CALL        VERZO                        ; Verzögerung Abarbeiten
                BSF                FBC                                ; HIGH Zustand Wiederherstellen
                CALL        COEI                        ; 1 Ausgeben
                CALL        CONU                        ; 0 Ausgeben
                CALL        COEI                        ; 1 Ausgeben
                BSF                WETA,0                        ; wechsel merker
                GOTO        COSI                        ; weiter

LAST:        MOVLW        d'247'                        ; Verzögerungszeit für 300 uS
                MOVWF        VERKO                        ; Speichere in der Verzögerungskonstante
                BCF                FBC                                ; LOW IMPULS von 300 uS (Start Impuls)
                CALL        VERZO                        ; Verzögerung Abarbeiten
                BSF                FBC                                ; HIGH Zustand Wiederherstellen
                CALL        COEI                        ; 1 Ausgeben
                CALL        COEI                        ; 1 Ausgeben
                CALL        COEI                        ; 1 Ausgeben
                BCF                WETA,0                        ; wechsel merker
                GOTO        COSI                        ; weiter

; Präambel gesendet, nun den FB CODE Senden:
; ==========================================
COSI:        MOVLW        d'08'                        ; 8 BIT Ausgeben
                MOVWF        SCHI                        ; Speichern im Schleifenregister
PCB:        BTFSS        IHCS,7                        ; Bitzustand Prüfen
                GOTO        HELO                        ; LOW AUSGABE
                CALL        COEI                        ; 1 Ausgeben
                RLF                IHCS,F                        ; Nach Links Schieben, MSB FIRST
MEW:        DECFSZ        SCHI,F                        ; 8 Bit fertig ?
                GOTO        PCB                                ; Prüfe Comag BIT
                MOVLW        d'00'                        ; Volle Verzögerung
                MOVWF        VERKO                        ; Verzögerung
                CALL        VERZO                        ; Verzögerung
                MOVLW        d'00'                        ; Verzögerung
                MOVWF        VERKO                        ; Verzögerung
                CALL        VERZO                        ; Verzögerung
                MOVLW        d'00'                        ; Verzögerung
                MOVWF        VERKO                        ; Verzögerung
                CALL        VERZO                        ; Verzögerung
                MOVLW        d'00'                        ; Verzögerung
                MOVWF        VERKO                        ; Verzögerung
                CALL        VERZO                        ; Verzögerung
                MOVLW        d'00'                        ; Verzögerung
                MOVWF        VERKO                        ; Verzögerung
                CALL        VERZO                        ; Verzögerung
                MOVLW        d'00'                        ; Verzögerung
                MOVWF        VERKO                        ; Verzögerung
                CALL        VERZO                        ; Verzögerung
                GOTO        COMAG                        ; zurück zur Comag Routine

HELO:        CALL        CONU                        ; Null Ausgeben
                RLF                IHCS,F                        ; Nach Links Schieben
                GOTO        MEW                                ; Zurück zum Bitzähler

; CODE Ausgabe im Comag Mode für Frontpanel Tasten im FB Format:
; ==============================================================

; COMAG EINS
COEI:        MOVLW        d'28'                        ; Verzögerungszeit für 1 = 7,3 mS
                MOVWF        VERKO                        ; Speichere in der Verzögerungskonstante
                CALL        VERZO                        ; Verzögerung Abarbeiten
                MOVLW        d'249'                        ; Verzögerungszeit für 300 uS
                MOVWF        VERKO                        ; Speichere in der Verzögerungskonstante
                BCF                FBC                                ; LOW IMPULS von 300 uS
                CALL        VERZO                        ; Verzögerung Abarbeiten
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                BSF                FBC                                ; HIGH Zustand Wiederherstellen
                RETURN                                        ; Zurück zum Aufrufenden Programmteil
               
; COMAG NULL
CONU:        MOVLW        d'106'       
                MOVWF        VERKO                        ; Speichere in der Verzögerungskonstante
                CALL        VERZO                        ; Verzögerung Abarbeiten
                MOVLW        d'249'                        ; Verzögerungszeit für 300 uS
                MOVWF        VERKO                        ; Speichere in der Verzögerungskonstante
                BCF                FBC                                ; LOW IMPULS von 300 uS
                CALL        VERZO                        ; Verzögerung Abarbeiten
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                NOP                                                ; Feinjustierung der Zeit auf 1 uS Genau
                BSF                FBC                                ; HIGH Zustand Wiederherstellen
                RETURN                                        ; Zurück zum Aufrufenden Programmteil

; Frontpannel Auslöse Routine für den TRUMAN MODE:
; ================================================

; POWER TASTE Manuel Ausgelöst:
; =============================
FPOWER:        MOVLW        d'00'                        ; EEprom Speicherstelle direkt Auswählen
                MOVWF        ZWI                                ; IM FR Speichern       
                GOTO        AUTRUFO                        ; Ausgabe Aufrufen

; UP TASTE
; ========
FUP:        MOVLW        d'13'                        ; EEprom Speicherstelle direkt Auswählen
                MOVWF        ZWI                                ; IM FR Speichern       
                GOTO        AUTRUFO                        ; Ausgabe Aufrufen

; DOWN TASTE
; ==========
FDOWN:        MOVLW        d'17'                        ; EEprom Speicherstelle direkt Auswählen
                MOVWF        ZWI                                ; IM FR Speichern       
                GOTO        AUTRUFO                        ; Ausgabe Aufrufen

; Mit Hilfe des Schleifenzählers ist nun die Funktion Adressierbar, hier wird mit Hilfe des ZWI der zu Sendene TRUMAN Code
; aus einer Tabelle geholt und auf den IR Eingang des COMAG Ausgegeben
; ========================================================================================================================
AUTRUFO:BSF                LEDI                        ; Erreichen dieser Position mit LED Anzeigen (Kann später auch al FB Indikator benutzt werden)
                MOVF        ZWI,W                        ; Lade Aktuelle Position des Schleifendurchlaufs (0 - 33)
                MOVWF        MULTI                        ; Multiplikator
                CLRF        ERGEB                        ; Ergebnis der letzten Adressoffset Berechnung für das Tabellenlesen Löschen
                CLRWDT                                        ; Watchdog Löschen
; Berechne die Startadresse für ein Lesen aus der CODE Tabelle Equivalent zum Ermittelten Comag CODE Index:
; =========================================================================================================
                CALL        AOERM                        ; Tabellen Offset Berechnen (pro Index + 7 Stellen)
                CLRWDT                                        ; Watchdog Löschen

; Hier findet der Eigentliche Sprung in die Tabelle statt:
; ========================================================
; 1'te Speicherstelle Auslesen
; ============================
                MOVF        ERGEB,W                        ; Tabellen Offset über das W Register nach VV
                MOVWF        VV                                ; Kopieren um den Orginal Inhalt von ERGEB nicht zu Verändern
                MOVLW        LOW        TABLE                ; Lade untere Adresse der Tabelle
                ADDWF        VV,F                        ; Addiere Offset mit Tabellenadresse
                MOVLW        HIGH TABLE                ; Lade obere Adresse der Tabelle
                BTFSC        STATUS,C                ; Prüfe ob die Obere Adresse in der 2'ten Bank ist
                ADDLW        d'01'                        ; JA, Addiere 1 zum Program Counter Latch
                MOVWF        PCLATH                        ; Speichere im PCL
                MOVF        VV,W                        ; Kopiere Offset ins Work
                CALL        TABLE                        ; Hole Byte aus der Tabelle von Position VV und kehre mit DATA XX im W zurück
                MOVWF        TCA1                        ; 1'te Byte für die Spätere Verarbeitung in der Senderoutine Speichern
                INCF        ERGEB,F                        ; Erhöhe Adresse um eins (es müßen ja 7 Bytes gelesen werden)
                CLRF        VV                                ; Lösche die Alte Berechnung des Sprungadresse
                CLRWDT                                        ; Watchdog Löschen

; 2'te Speicherstelle Auslesen
; ============================
                MOVF        ERGEB,W                        ; Tabellen Offset über das W Register nach VV
                MOVWF        VV                                ; Kopieren um den Orginal Inhalt von ERGEB nicht zu Verändern
                MOVLW        LOW        TABLE                ; Lade untere Adresse der Tabelle
                ADDWF        VV,F                        ; Addiere Offset mit Tabellenadresse
                MOVLW        HIGH TABLE                ; Lade obere Adresse der Tabelle
                BTFSC        STATUS,C                ; Prüfe ob die Obere Adresse in der 2'ten Bank ist
                ADDLW        d'01'                        ; JA, Addiere 1 zum Program Counter Latch
                MOVWF        PCLATH                        ; Speichere im PCL
                MOVF        VV,W                        ; Kopiere Offset ins Work
                CALL        TABLE                        ; Hole Byte aus der Tabelle von Position VV und kehre mit DATA XX im W zurück
                MOVWF        TCA2                        ; 2'te Byte für die Spätere Verarbeitung in der Senderoutine Speichern
                INCF        ERGEB,F                        ; Erhöhe Adresse um eins (es müßen ja 7 Bytes gelesen werden)
                CLRF        VV                                ; Lösche die Alte Berechnung des Sprungadresse
                CLRWDT                                        ; Watchdog Löschen

; 3'te Speicherstelle Auslesen
; ============================
                MOVF        ERGEB,W                        ; Tabellen Offset über das W Register nach VV
                MOVWF        VV                                ; Kopieren um den Orginal Inhalt von ERGEB nicht zu Verändern
                MOVLW        LOW        TABLE                ; Lade untere Adresse der Tabelle
                ADDWF        VV,F                        ; Addiere Offset mit Tabellenadresse
                MOVLW        HIGH TABLE                ; Lade obere Adresse der Tabelle
                BTFSC        STATUS,C                ; Prüfe ob die Obere Adresse in der 2'ten Bank ist
                ADDLW        d'01'                        ; JA, Addiere 1 zum Program Counter Latch
                MOVWF        PCLATH                        ; Speichere im PCL
                MOVF        VV,W                        ; Kopiere Offset ins Work
                CALL        TABLE                        ; Hole Byte aus der Tabelle von Position VV und kehre mit DATA XX im W zurück
                MOVWF        TCA3                        ; 3'te Byte für die Spätere Verarbeitung in der Senderoutine Speichern
                INCF        ERGEB,F                        ; Erhöhe Adresse um eins (es müßen ja 7 Bytes gelesen werden)
                CLRF        VV                                ; Lösche die Alte Berechnung des Sprungadresse
                CLRWDT                                        ; Watchdog Löschen

; 4'te Speicherstelle Auslesen
; ============================
                MOVF        ERGEB,W                        ; Tabellen Offset über das W Register nach VV
                MOVWF        VV                                ; Kopieren um den Orginal Inhalt von ERGEB nicht zu Verändern
                MOVLW        LOW        TABLE                ; Lade untere Adresse der Tabelle
                ADDWF        VV,F                        ; Addiere Offset mit Tabellenadresse
                MOVLW        HIGH TABLE                ; Lade obere Adresse der Tabelle
                BTFSC        STATUS,C                ; Prüfe ob die Obere Adresse in der 2'ten Bank ist
                ADDLW        d'01'                        ; JA, Addiere 1 zum Program Counter Latch
                MOVWF        PCLATH                        ; Speichere im PCL
                MOVF        VV,W                        ; Kopiere Offset ins Work
                CALL        TABLE                        ; Hole Byte aus der Tabelle von Position VV und kehre mit DATA XX im W zurück
                MOVWF        TCA4                        ; 4'te Byte für die Spätere Verarbeitung in der Senderoutine Speichern
                INCF        ERGEB,F                        ; Erhöhe Adresse um eins (es müßen ja 7 Bytes gelesen werden)
                CLRF        VV                                ; Lösche die Alte Berechnung des Sprungadresse
                CLRWDT                                        ; Watchdog Löschen

; 5'te Speicherstelle Auslesen
; ============================
                MOVF        ERGEB,W                        ; Tabellen Offset über das W Register nach VV
                MOVWF        VV                                ; Kopieren um den Orginal Inhalt von ERGEB nicht zu Verändern
                MOVLW        LOW        TABLE                ; Lade untere Adresse der Tabelle
                ADDWF        VV,F                        ; Addiere Offset mit Tabellenadresse
                MOVLW        HIGH TABLE                ; Lade obere Adresse der Tabelle
                BTFSC        STATUS,C                ; Prüfe ob die Obere Adresse in der 2'ten Bank ist
                ADDLW        d'01'                        ; JA, Addiere 1 zum Program Counter Latch
                MOVWF        PCLATH                        ; Speichere im PCL
                MOVF        VV,W                        ; Kopiere Offset ins Work
                CALL        TABLE                        ; Hole Byte aus der Tabelle von Position VV und kehre mit DATA XX im W zurück
                MOVWF        TCA5                        ; 5'te Byte für die Spätere Verarbeitung in der Senderoutine Speichern
                INCF        ERGEB,F                        ; Erhöhe Adresse um eins (es müßen ja 7 Bytes gelesen werden)
                CLRF        VV                                ; Lösche die Alte Berechnung des Sprungadresse
                CLRWDT                                        ; Watchdog Löschen

; 6'te Speicherstelle Auslesen
; ============================
                MOVF        ERGEB,W                        ; Tabellen Offset über das W Register nach VV
                MOVWF        VV                                ; Kopieren um den Orginal Inhalt von ERGEB nicht zu Verändern
                MOVLW        LOW        TABLE                ; Lade untere Adresse der Tabelle
                ADDWF        VV,F                        ; Addiere Offset mit Tabellenadresse
                MOVLW        HIGH TABLE                ; Lade obere Adresse der Tabelle
                BTFSC        STATUS,C                ; Prüfe ob die Obere Adresse in der 2'ten Bank ist
                ADDLW        d'01'                        ; JA, Addiere 1 zum Program Counter Latch
                MOVWF        PCLATH                        ; Speichere im PCL
                MOVF        VV,W                        ; Kopiere Offset ins Work
                CALL        TABLE                        ; Hole Byte aus der Tabelle von Position VV und kehre mit DATA XX im W zurück
                MOVWF        TCA6                        ; 6'te Byte für die Spätere Verarbeitung in der Senderoutine Speichern
                INCF        ERGEB,F                        ; Erhöhe Adresse um eins (es müßen ja 7 Bytes gelesen werden)
                CLRF        VV                                ; Lösche die Alte Berechnung des Sprungadresse
                CLRWDT                                        ; Watchdog Löschen

; 7'te Speicherstelle Auslesen
; ============================
                MOVF        ERGEB,W                        ; Tabellen Offset über das W Register nach VV
                MOVWF        VV                                ; Kopieren um den Orginal Inhalt von ERGEB nicht zu Verändern
                MOVLW        LOW        TABLE                ; Lade untere Adresse der Tabelle
                ADDWF        VV,F                        ; Addiere Offset mit Tabellenadresse
                MOVLW        HIGH TABLE                ; Lade obere Adresse der Tabelle
                BTFSC        STATUS,C                ; Prüfe ob die Obere Adresse in der 2'ten Bank ist
                ADDLW        d'01'                        ; JA, Addiere 1 zum Program Counter Latch
                MOVWF        PCLATH                        ; Speichere im PCL
                MOVF        VV,W                        ; Kopiere Offset ins Work
                CALL        TABLE                        ; Hole Byte aus der Tabelle von Position VV und kehre mit DATA XX im W zurück
                MOVWF        TCA8                        ; 7'te Byte für die Spätere Verarbeitung in der Senderoutine Speichern
                CLRF        VV                                ; Lösche die Alte Berechnung des Sprungadresse
                CLRWDT                                        ; Watchdog Löschen

; Ausgabe zum IR Eingang der COMAG Hardware:
; ==========================================
                CALL        TRUSTA                        ; Truman IR Startsequenz Ausgeben
                CALL        CODAUS                        ; Truman CODE Ausgeben
                CALL        TRUSTO                        ; Truman Stopsequenz Ausgeben
                BCF                LEDI                        ; LED IR Indikator wieder Ausschalten wenn die Aussendung zum COMAG Erfolgt ist

; Alles Erledigt, Frage Fernbedienung erneut ab und Warte auf einen Befehl:
; =========================================================================
                GOTO        FBEMU                        ; Zurück zum Anfang

; Routine zur Codeausgabe im Truman Format:
; =========================================
CODAUS: MOVLW        d'7'                        ; 1. Byte zu Senden (Inhalt 07)        ist ein Statischer Wert, d.h. er ist in jedem Code immer gleich !
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVLW        d'8'                        ; 2. Byte Senden (Inhalt = 08) ist ein Statischer Wert, d.h. er ist in jedem Code immer gleich !
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVF        TCA1,W                        ; 3. Byte Senden, (Inhalt = XX) wurde aus der Tabelle Gelesen
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVF        TCA2,W                        ; 4. Byte Senden, (Inhalt = XX) wurde aus der Tabelle Gelesen
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVF        TCA3,W                        ; 5. Byte Senden, (Inhalt = XX) wurde aus der Tabelle Gelesen
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVF        TCA4,W                        ; 6. Byte Senden, (Inhalt = XX) wurde aus der Tabelle Gelesen
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVF        TCA5,W                        ; 7. Byte Senden, (Inhalt = XX) wurde aus der Tabelle Gelesen
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVF        TCA6,W                        ; 8. Byte Senden, (Inhalt = XX) wurde aus der Tabelle Gelesen
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVLW        d'1'                        ; 9. Byte zu Senden (Inhalt 01)        ist ein Statischer Wert, d.h. er ist in jedem Code immer gleich !
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVF        TCA8,W                        ; 10. Byte Senden, (Inhalt = XX) wurde aus der Tabelle Gelesen
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                MOVLW        d'1'                        ; 11. Byte zu Senden (Inhalt 01)        ist ein Statischer Wert, d.h. er ist in jedem Code immer gleich !
                MOVWF        ZWI                                ; Übergabe an die Ausgabe Routine mit Hilfe unseren Zwischenspeichers
                CALL        BYAUS                        ; Bytes Ausgeben auf FBC
                RETURN

; Startsequenz im Trumanformat: Low für 9,1 mS gefolgt von High für 4,4 mS
; ========================================================================
TRUSTA:        BCF                FBC                                ; FB Ausgang zum Receiver auf Low setzen
                MOVLW        d'00'                        ; Vorladen mit 0 ist nicht Stabil, da wir auf ZERO Flag testen, deshalb mit 1 Vorladen
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                MOVLW        d'215'                        ; Vorladen 928 uS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                BSF                FBC                                ; FB Ausgang zum Receiver auf High setzen
                MOVLW        d'117'                        ; Vorladen für 4,4 mS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                RETURN                                        ; Zurück zum Aufrufenden Programmteil

; Stopsequenz im Trumanformat: High für 46,5 mS gefolgt von Low für 9,1 mS danach High für 2,1 mS und Low für 700 uS.
; ===================================================================================================================
TRUSTO: BSF                FBC                                ; FB Ausgang zum Receiver auf High setzen
                MOVLW        d'05'                        ; Durchlaufschleifenzähler Laden
                MOVWF        ZWI                                ; im Zwischregister speichern
GACK:        MOVLW        d'00'                        ; Vorladen mit 8,61 mS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                DECFSZ        ZWI,F                        ; Schleifenzähler -1, auf 0 Testen und bei 0 nächste Zeile Überspringen
                GOTO        GACK                        ; Schleifenzähler ist noch nicht 0, also nochmal das ganze
                MOVLW        d'125'                        ; Vorladen 4,16 mS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                BCF                FBC                                ; FB Ausgang zum Receiver auf Low setzen
                MOVLW        d'01'                        ; Vorladen mit 0 ist nicht Stabil, da wir auf ZERO Flag testen, deshalb mit 1 Vorladen
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                MOVLW        d'225'                        ; Vorladen 960 uS 
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                BSF                FBC                                ; FB Ausgang zum Receiver auf High setzen
                MOVLW        d'189'                        ; Vorladen 2,1 mS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                BCF                FBC                                ; FB Ausgang zum Receiver auf Low setzen
                MOVLW        d'233'                        ; Vorladen 704 uS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                BSF                FBC                                ; Ruhezustand Wiederherstellen
                RETURN                                        ; Zurück

; Byteausgabe im Trumanformat: Low für die Dauer von 700 uS, gefolgt von High für die Dauer von 400 uS LOW
; =======================================================================================================
BYAUS:        BCF                FBC                                ; FB Ausgang zum Receiver auf LOW setzen
                MOVLW        d'233'                        ; Vorladen 736 uS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                BSF                FBC                                ; IR EMU Ausgang auf High
                MOVLW        d'242'                        ; Vorladen 416 uS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                DECFSZ        ZWI,F                        ; Bitzähler -1, wenn 0 Überspringe nächste Zeile
                GOTO        BYAUS                        ; von vorne, noch nicht alle Bit's Übertragen
                MOVLW        d'208'                        ; Vorladen 1,536 mS
                MOVWF        VERKO                        ; In das FR für die Verzögerungszeit Kopieren
                CALL        VERZO                        ; Verzögerungsroutine Aufrufen
                RETURN                                        ; zurück zum Aufrufenden Programmteil

; Einfache Adressoffset Berechnung:
; =================================
AOERM:       
; Zuerst Prüfen ob der Index 0 ist, dann ist die Startadresse der Tabelle = 1
                MOVLW        d'0'                        ; Vergleichswert Laden
                XORWF        MULTI,W                        ; Vergleichen
                BTFSC        STATUS,Z                ; Prüfen ob gleich
                GOTO        WEIA                        ; Ja Inhalt ist 0, nun nur Ergebniss +1 als Startadresse
LUS:        MOVF        ERGEB,W                        ; Ergebnis der Adressberechnung ins W Laden
                ADDLW        d'07'                        ; Ergebnis +7
                MOVWF        ERGEB                        ; Speicher Ergebnis der Addition zurück in Ergebnis
                DECFSZ        MULTI,F                        ; Index -1, Wenn Index = 0 dann Überspringe nächste Zeile
                GOTO        LUS                                ; Index muß weiter Erhöht werden               
WEIA:        INCF        ERGEB,F                        ; ERGEBNIS = ERGEBNIS +1
                RETURN                                        ; Zurück zum Aufrufenden Programmteil

; NEUE Init Sequenz des PCM DAC mit Wechsel des MODE:
; ===================================================
; Neue Modeumschaltung, läuft jetzt auch ohne Ausschalten am Netzschalter
; PCM 1742 Adress und Daten Register Zuweisen:
; ============================================
PCMINIT:MOVLW        H'14'                        ; Register 20 (h14) Audio Data Format Control
                MOVWF        FDIX                        ; im Speicher Ablegen
                BTFSC        TB                                ; Auswahl Mode Abfragen
                GOTO        TRUSO                        ; Truman Sound INIT

; COMAG SOUND INIT:
; =================
                MOVLW        H'05'                        ; B0 / B1 / B2 = 101 FMT SET to 16-24 BIT Std., Left Justified Format
                MOVWF        LDDX                        ; im Speicher Ablegen
                BCF                LED                                ; Kontroll Lampe für den COMAG MODE Ausschalten
                GOTO        GOGO                        ; Zur Initialisierung gehen

; TRUMAN SOUND INIT:
; ==================
TRUSO:        MOVLW        H'03'                        ; B0 / B1 / B2 = 011 FMT SET to 16 BIT Std., RSV set to Zero, FLT default 0, RSV set to Zero
                MOVWF        LDDX                        ; im Speicher Ablegen
                BSF                LED                                ; Kontroll Lampe für den TRUMAN MODE Einschalten

; PCM Latch auf LOW setzen für Datenübernahme:
; ============================================
GOGO:        BCF                ML                                ; Latch des PCM auf LOW setzen

; MSB FIRST zuerst das REGISTER INDEX
; ===================================
                MOVLW        h'08'                        ; Lade Work mit Anzahl der Auszugebenden Bit's (Bitzähler Wert 8)
                MOVWF        ZWI                                ; speichere Zwischen
               
NNF1:        RLF                FDIX,W                        ; Indexbyte nun Bitweise nach Links durch das CARRY Schieben und im W Register speichern
                BTFSC        STATUS,C                ; Carry Flag des Status Register prüfen ob eine 0 oder 1 als MD gesendet werden soll
                BSF                MD                                ; Carry war 1 also setze DATA auf HIGH
                MOVWF        FDIX                        ; Speichere Inhalt vom W zurück ins FR
                CALL        AUSGABE                        ; Gebe auf MD aus
                DECFSZ        ZWI,F                        ; Bitzähler -1, wenn 0 Überspringe nächste Zeile
                GOTO        NNF1                        ; Bitzähler ist < 0, noch nicht alle Bits Ausgewertet und gesendet, Schleife

; MSB FIRST nun das DATAS REGISTER
; ================================
                MOVLW        h'08'                        ; Lade Work mit Anzahl der Auszugebenden Bit's (Bitzähler Wert 8)
                MOVWF        ZWI                                ; speichere Zwischen
               
NNF2:        RLF                LDDX,W                        ; Datenbyte nun Bitweise nach Links durch das CARRY Schieben und im W Register speichern
                BTFSC        STATUS,C                ; Carry Flag des Status Register prüfen ob eine 0 oder 1 als MD gesendet werden soll
                BSF                MD                                ; Setze MD auf HIGH
                MOVWF        LDDX                        ; Speichere Inhalt vom W zurück ins FR
                CALL        AUSGABE                        ; Gebe auf MD aus
                DECFSZ        ZWI,F                        ; Bitzähler -1, wenn 0 Überspringe nächste Zeile
                GOTO        NNF2                        ; Bitzähler ist < 0, noch nicht alle Bits Ausgewertet und gesendet, Schleife

; Daten sind gesendet, nun Latch des PCM wieder auf HIGH setzen zum Übernehmen der Daten
; ======================================================================================
                BSF                ML                                ; Latch auf High setzen
                RETURN                                        ; zurück zum Hauptprogramm

; Clock Leitung des PCM High / Low schalten
; =========================================
AUSGABE:BSF                MC                                ; Clock High
                BCF                MC                                ; Clock Low       
                BCF                MD                                ; MD zuücksetzen
                RETURN

; NEUE VERZÖGERUNGS ROUTINE OHNE TMR0 (32 uS pro Teiler / Kalibrierbar in der ersten Zeile)
; =========================================================================================
VERZO:        MOVLW        d'09'                        ; Lade aktuellen Wert des Timers (24 +8 uS bei 4 MHz)                       
                MOVWF        ZWI2                        ; Speichere im 2'ten Zwischenspeicher                               
VER1:        DECFSZ        ZWI2,F                        ; Inhalt von ZWI2 -1, wenn Null Überspringe die nächste Zeile               
                GOTO        VER1                        ; Weiter Verzögern
                CLRWDT                                        ; Watchdog Löschen
                INCFSZ        VERKO,F                        ; Inhalt von VERKO +1, wenn Null Überspringe nächste Zeile               
                GOTO        VERZO                        ; Nochmaliger Durchlauf der Verzögerungsroutine
                RETURN                                        ; Zuück zum Aufrufenden Programmteil                               

; Speicherort in Ram / für den Compiler
; =====================================
        ORG        0x2D9

; Tabelle der TRUMAN Codes von 1 - 34 Korospondiert mit dem im EEPROM gespeicherten COMAG Codes:
; ==============================================================================================
TABLE:        MOVWF        PCL                                                                       
                DT        d'3', d'2', d'5', d'2', d'2', d'1', d'1'        ; TRUMAN CODE 1                POWER
                DT        d'2', d'1', d'3', d'6', d'1', d'2', d'1'        ; TRUMAN CODE 2                ROT
                DT        d'2', d'1', d'2', d'1', d'6', d'3', d'1'        ; TRUMAN CODE 3                GRÜN
                DT        d'4', d'2', d'4', d'1', d'2', d'2', d'1'        ; TRUMAN CODE 4                GELB
                DT        d'4', d'4', d'2', d'1', d'2', d'1', d'2'        ; TRUMAN CODE 5                BLAU
                DT        d'2', d'1', d'1', d'2', d'7', d'2', d'1'        ; TRUMAN CODE 6                SAT
                DT        d'2', d'3', d'1', d'5', d'1', d'3', d'1'        ; TRUMAN CODE 7                TV/SAT
                DT        d'3', d'5', d'2', d'2', d'1', d'1', d'2'        ; TRUMAN CODE 8                EPG
                DT        d'3', d'3', d'4', d'2', d'1', d'2', d'1'        ; TRUMAN CODE 9                WEIß
                DT        d'2', d'6', d'3', d'1', d'1', d'1', d'2'        ; TRUMAN CODE 10        EXIT
                DT        d'8', d'2', d'1', d'1', d'1', d'1', d'2'        ; TRUMAN CODE 11        MENU
                DT        d'5', d'1', d'4', d'1', d'1', d'3', d'1'        ; TRUMAN CODE 12        P/N
                DT        d'2', d'1', d'1', d'1', d'9', d'1', d'1'        ; TRUMAN CODE 13        MUTE
                DT        d'2', d'1', d'2', d'7', d'2', d'1', d'1'        ; TRUMAN CODE 14        CH UP
                DT        d'2', d'4', d'5', d'1', d'1', d'2', d'1'        ; TRUMAN CODE 15        V-
                DT        d'2', d'2', d'1', d'6', d'3', d'1', d'1'        ; TRUMAN CODE 16        OK
                DT        d'6', d'4', d'1', d'1', d'1', d'2', d'1'        ; TRUMAN CODE 17        V+
                DT        d'3', d'1', d'1', d'5', d'4', d'1', d'1'        ; TRUMAN CODE 18        CH DOWN
                DT        d'2', d'1', d'1', d'1', d'1', d'9', d'1'        ; TRUMAN CODE 19        P+
                DT        d'3', d'1', d'1', d'1', d'4', d'5', d'1'        ; TRUMAN CODE 20        P-
                DT        d'2', d'2', d'1', d'1', d'5', d'4', d'1'        ; TRUMAN CODE 21        RECALL
                DT        d'3', d'1', d'2', d'4', d'3', d'2', d'1'        ; TRUMAN CODE 22        FAV
                DT        d'2', d'9', d'1', d'1', d'1', d'1', d'1'        ; TRUMAN CODE 23        1
                DT        d'3', d'7', d'2', d'1', d'1', d'1', d'1'        ; TRUMAN CODE 24        2
                DT        d'2', d'1', d'9', d'1', d'1', d'1', d'1'        ; TRUMAN CODE 25        3
                DT        d'4', d'6', d'1', d'2', d'1', d'1', d'1'        ; TRUMAN CODE 26        4
                DT        d'2', d'2', d'7', d'2', d'1', d'1', d'1'        ; TRUMAN CODE 27        5
                DT        d'3', d'1', d'6', d'3', d'1', d'1', d'1'        ; TRUMAN CODE 28        6
                DT        d'2', d'1', d'1', d'9', d'1', d'1', d'1'        ; TRUMAN CODE 29        7
                DT        d'5', d'5', d'1', d'1', d'2', d'1', d'1'        ; TRUMAN CODE 30        8
                DT        d'2', d'3', d'6', d'1', d'2', d'1', d'1'        ; TRUMAN CODE 31        9
                DT        d'3', d'2', d'1', d'4', d'2', d'3', d'1'        ; TRUMAN CODE 32        INFO
                DT        d'10', d'1', d'1', d'1', d'1', d'1', d'1'        ; TRUMAN CODE 33        0
                DT        d'2', d'2', d'4', d'3', d'2', d'1', d'2'        ; TRUMAN CODE 34        SHIFT (ex. PAUSE)

; Über Shift "PAUSE" und Tast XX Erreichbar                                ; TRUMAN    / COMAG
; ==========================================================================
                DT  d'2', d'1', d'1', d'4', d'5', d'1', d'2'        ; F1                / 1
                DT  d'2', d'1', d'5', d'4', d'1', d'1', d'2'        ; F2                / 2
                DT  d'3', d'1', d'4', d'2', d'3', d'1', d'2'        ; HELP                / 3
                DT        d'4', d'4', d'2', d'1', d'2', d'1', d'2'        ; BLAU                / 4
                DT  d'4', d'1', d'1', d'4', d'1', d'4', d'1'        ; LUPE                / 5
                DT        d'4', d'1', d'5', d'1', d'3', d'1', d'1'        ; UHF                / 6
                DT  d'2', d'2',        d'2', d'5', d'2', d'2', d'1'        ; TV/RADIO        / 7
                DT        d'2', d'2', d'4', d'3', d'2', d'1', d'2'        ; PAUSE        / PAUSE


; Erste Adresse der EEprom Speichertabelle für die COMAG CODES:
; =============================================================
        ORG h'2100'               

; Maximal 64 Bytes können im internen EEprom des 16F84 gespeichert werden                    I I I I I I  I 
; EEPROM Daten  COMAG CODE                  FUNKTION                                COMAG        TRUMAN                        7 8 X X X X X X 1 X 1                GETESTET
; ==========================================================================================================================
                DE                b'00011110'                ; POWER Taste                        OK                POWER                        7 8 3 2 5 2 2 1 1 1 1                OK
                DE                b'00010000'                ; ROT                                        OK                ROT                                7 8 2 1 3 6 1 2 1 1 1                OK
                DE                b'00100010'                ; GRÜN                                        OK                GRÜN                        7 8 2 1 2 1 6 3 1 1 1                OK
                DE                b'00011001'                ; GELB                                        OK                GELB                        7 8 4 2 4 1 2 2 1 1 1                OK
                DE                b'00010100'                ; BLAU                                        OK                BLAU                        7 8 4 4 2 1 2 1 1 2 1                OK
                DE                b'00110010'                ; AUDIO Taste                        <==>        SAT                                7 8 2 1 1 2 7 2 1 1 1                ??
                DE                b'00011010'                ; TIMER Taste                        <==>        TV/SAT                        7 8 2 3 1 5 1 3 1 1 1                ??
                DE                b'00100110'                ; EPG Taste                                OK                EPG                                7 8 3 5 2 2 1 1 1 2 1                OK
                DE                b'00100000'                ; TEXT Taste                        OK                WEIß                        7 8 3 3 4 2 1 2 1 1 1                OK
                DE                b'00110000'                ; EXIT Taste                        OK                EXIT                        7 8 2 6 3 1 1 1 1 2 1                OK
                DE                b'00100111'                ; MENU Taste                        OK                MENU                        7 8 8 2 1 1 1 1 1 2 1                OK
                DE                b'00101111'                ; M/P Taste                                <==>        P/N                                7 8 5 1 4 1 1 3 1 1 1                ??
                DE                b'00110111'                ; MUTE Taste                        OK                MUTE                        7 8 2 1 1 1 9 1 1 1 1                OK
                DE                b'00101000'                ; CH UP Taste                        OK                CH UP                        7 8 2 1 2 7 2 1 1 1 1                OK
                DE                b'00100001'                ; V- Taste                                OK                V-                                7 8 6 4 1 1 1 2 1 1 1                OK
                DE                b'00101001'                ; OK Taste                                OK                OK                                7 8 2 2 1 6 3 1 1 1 1                OK
                DE                b'00110001'                ; V+ Taste                                OK                V+                                7 8 2 4 5 1 1 2 1 1 1                OK
                DE                b'00101010'                ; CH DOWN Taste                        OK                CH DOWN                        7 8 3 1 1 5 4 1 1 1 1                OK
                DE                b'00100011'                ; P+ Taste                                OK                P+                                7 8 2 1 1 1 1 9 1 1 1                OK
                DE                b'00011011'                ; P- Taste                                OK                P-                                7 8 3 1 1 1 4 5 1 1 1                OK
                DE                b'00101110'                ; RECALL Taste                        OK                RECALL                        7 8 2 2 1 1 5 4 1 1 1                OK
                DE                b'00011000'                ; FAV Taste                                OK                FAV                                7 8 3 1 2 4 3 2 1 1 1                OK
                DE                b'00110101'                ; 1                                                OK                1                                7 8        2 9 1 1 1 1 1 1 1                OK
                DE                b'00101101'                ; 2                                                OK                2                                7 8 3 7 2 1 1 1 1 1 1                OK
                DE                b'00100101'                ; 3                                                OK                3                                7 8 2 1 9 1 1 1 1 1 1                OK
                DE                b'00011101'                ; 4                                                OK                4                                7 8 4 6 1 2 1 1 1 1 1                OK
                DE                b'00110100'                ; 5                                                OK                5                                7 8 2 2 7 2 1 1 1 1 1                OK
                DE                b'00101100'                ; 6                                                OK                6                                7 8 3 1 6 3 1 1 1 1 1                OK
                DE                b'00100100'                ; 7                                                OK                7                                7 8 2 1 1 9 1 1 1 1 1                OK
                DE                b'00011100'                ; 8                                                OK                8                                7 8 5 5 1 1 2 1 1 1 1                OK
                DE                b'00110011'                ; 9                                                OK                9                                7 8 2 3 6 1 2 1 1 1 1                OK
                DE                b'00110110'                ; INFO Taste                        OK                INFO                        7 8 3 2 1 4 2 3 1 1 1                OK
                DE                b'00101011'                ; 0                                                OK                0                          7 8 10 1 1 1 1 1 1 1 1                OK
                DE                b'00011111'                ; PAUSE Taste                        OK                PAUSE                        7 8 2 2 4 3 2 1 1 2 1                ??
                DE          "VINIX 2007"

; Diese Tasten sind nicht Verfügbar !
; ===================================
;
;                BEI COMAG  KEINE TASTE VORHANDEN                UHF                                                                7 8 4 1 5 1 3 1 1 1 1                wird nicht gebraucht
;                BEI COMAG  KEINE TASTE VORHANDEN                F1                                                                7 8 2 1 1 4 5 1 1 2 1                ???? Wofür
;                BEI COMAG  KEINE TASTE VORHANDEN                F2                                                                7 8 2 1 5 4 1 1 1 2 1                ???? Wofür
;                BEI COMAG  KEINE TASTE VORHANDEN                HELP                                                        7 8 3 1 4 2 3 1 1 2 1                ???? ?????
;                BEI COMAG  KEINE TASTE VORHANDEN                TV/RADIO                                                7 8 2 2 2 5 2 2 1 1 1                wäre schön
;                BEI COMAG  KEINE TASTE VORHANDEN                LUPE                                                        7 8 4 1 1 4 1 4 1 1 1                ???? ?????

                END


sl2

Lanza, si esto no se puede, a la papelera....

barrigaverde 28/07/2007 11:32

la verdad vishero que has realizado un gran trabajo .no he optado por ella pues creo poder sacar socido de la salida digital que tenenmos los del sl 65a b1 con una tarjeta de sonido que tengo ya postee todo pero esa es una opcion, en algunos caso el personal no tiene forma de programar un pic o atmel aunque creo que hay un circuito para atmel facil no se si tendra valor para un pic con un entrenador y puerto paralelo esta en un pdf haber si lo encuentro

Adobe 28/07/2007 11:40

Vishero te puse en el hilo de pruebas.. que si existia un zocalo en SMD del tipo J para el chip de audio para ponerlo encima del chip. con esto no habria que tocar el deco.
Otra cosa el tema del frontal esta un poco confuso y no se muy bien las modificaciones a realizar.
Yo por ahora tengo hecho todo a falta de cortar el cable para el mando
y soldar en el chip (que no me agrada).

saludos

lanza3d 28/07/2007 11:46

Cita:

Iniciado por vishero (Mensaje 2959486)
Lanza, si esto no se puede, a la papelera....

wenas vishero, yo mi Aleman esta un poco "verde" y mis conocimientos de programacion mas "verde" todavia.

si lo que has puesto, no permite el visionado de canales de pago (o sea un firm oficial y que solo permite ver los canales FTA) se puede dejar.

Si por el contrario, es un firm modificado y que permite el visionado de canales de pago, de una forma ilegal .... hay que quitarlo.


Asi que tu diras, :rolleyes:

barrigaverde 28/07/2007 11:52

no se si me equivoco lanza3d pero esto es un programa para qque el fichero de truman funcione el sonido y el mando todo ello dentro del sl65a pero el firm alternativo aqui no esta claro de todas formas si no puede estar pues como dice vishero a lapapelera

vishero 28/07/2007 13:22

xLanza3D, como dice barrigaverde, el hex en sí no tiene nada que permita ver nada, el mod en su conjunto solo permite hacer posible el meter firms de otros aparatos no compatibles. Ahora, lo que uno le meta ya es otra cosa...

xbarrigaverde, en el hilo alemán del mod alguien comentó lo de la falta de salida optica en el truman original (que no la trae el deco) y le indicaron que usara otro firm, no sé si el anterior modificado, o de otro deco compatible con el Truman pero con salida óptica, digital y S-VHS.
Si encuentro el post (que el hilo es larguísimo y en alemán) te digo cual es.

xAdobe, si leí tu sugerencia, a mi tampoco me seduce la idea de soldar en la placa, mas en ese lugar, y si el zócalo SMD fuera fácil de conseguir sería la solución.
Tu ya lo tienes?, podrías poner una foto?, aunque sea sacada de alguna web.
El tema de la conexión, hay un pdf de bertram02 (el de las fotos) con las modificaciones hechas, pero está en alemán y no lo entiendo ni traduciéndolo online, sobre todo lo del 74HC164D, lo iba a colgar en la sección español de ULC a ver si alguien me lo traduce. Lo pongo como viene por si lo entiendes.

Talvez SantiPHREACK podría poner el diagrama que el hizo, aunque sea hecho a mano y sacándole una foto.

[QUOTE]Umbau der Anzeige beim SL65 unter Truman-Software

Wenn man die Truman-Soft auf den SL65 aufspielt funktioniert die Anzeige nicht mehr richtig. Grund dafür ist, dass das IC U1 (74HC164D) die verschiedenen Segmente der 7-Segment-Anzeigen anders ansteuert. Deswegen muss man manche Verbindungen auftrennen und anders „verlegen“.

Folgende Pins am IC hochbiegen: Pin 3, 4, 5, 6, 11 und 12

Folgende Verbindungen herstellen:

- Pin 3 mit R7
- Pin 4 mit R6
- Pin 5 mit R12
- Pin 6 mit R11
- Pin 11 mit R9
- Pin 12 mit R8

Das war´s dann schon... Viel Spaß beim Umbau...

An dieser Stelle noch vielen Dank an Vinix für die tolle Vorarbeit! [/QUOTE]
[SIZE="1"]Info by [B]bertram02[/B][/SIZE]

Algún voluntario de "Traductores Sin Fronteras"... :)

sl2

lanza3d 28/07/2007 14:04

[QUOTE=vishero;2959701]xLanza3D, como dice barrigaverde, el hex en sí no tiene nada que permita ver nada, el mod en su conjunto solo permite hacer posible el meter firms de otros aparatos no compatibles. Ahora, lo que uno le meta ya es otra cosa...
[/QUOTE]

entoces sin problemas ;)

Adobe 28/07/2007 14:07

Creo que esto del frontal es unir con cables del pin del Integrado 74HC164D a las resistencias que te indican PERO SOLO CREO QUE NADIE HAGA NADA.
Y lo del zocalo mirare por inter.. a ver si veo algo en mi pueblo no se vende nada de elctronica y mis chapuzas me las hago reciclando de aparatos viejos.

saludos

vishero 28/07/2007 15:58

barrigaverde,

El firm Truman con salida coaxial está en upload de ULC, arriba del todo en " TEST BEREICH Firmware ", se llama "SL 35 & 65 PW Ok Read Info", puesto por "ReaperXxX01" el 19.06.2007, el comprimido es "SL 35 & 65 Pw Ok.rar" y dentro tiene:

El "System Upgrade 10-30-2006 bootloader"
El firm "Truman.EMU.1.3.60.Serbia.abs"
Y un .doc en alemán (que manía tienen de poner todo en alemán... :) )
donde dice algo del funcionamiento del coaxial digital y su uso con un mando 8en1 universal.

[Quote]"Sound kann nur über Digital-Coax angeschlossen werden,
wie bestätiigt wurde ."

y

Sound über Digital-Coax angeschlossen,
und meine LIFE/MEDION/TEVION 8in1 Uni-Fernbedienung
auf Suchlauf angeworfen und siehe da,
bei dem zweiten Code hat es dann geklappt!!
[/Quote]

Ojo que es un firm de pruebas...

sl2

barrigaverde 28/07/2007 16:28

grs vishero por este explendido post aunque ya habia posteado por ello siempre cuando he probado ficheros de truma o globo he observado que se enciende los diodos del conector de la salida digital optica pero no sabia que los fichero no daban salida digital coaxial eso aun no lo he probado pero me falta poco un par de sosillas

barrigaverde 28/07/2007 17:11

vishero para que observes resumiendo mucho esto es lo que quiero hacer con un circuito hecho a mano

h**p://web.telia.com/~u91003452/live/images/PinoutDrawings.gif

barrigaverde 28/07/2007 17:16

También usaremos un par de diodos para asegurarnos que no introducimos tensiones mayores de cinco voltios, ni menores de cero voltios.




El único elemento activo del circuito es el integrado 74HC04, que debe ser alimentado con 5 voltios. No hay problema, porque en el bus de expansión tenemos esa alimentación.

lo siento no me ha salido el esquema

aqui os pongo la direccion por si lo quereis ver es muy sencillo para los que tengan soumblaster live

h**p://www.hispasonic.com/articulo74.html

en el datasest del micro en la figura 4 se ve claramente las patillas ha conexionar solo hace falta un chips pues aun le sobran patillas que si fuera necesario se podrian utilizar aunque el esquema solo utiliza cuatro saludos

vishero 29/07/2007 20:59

barrigaverde,
Recien ahora caigo, (después de haber leído desde el principio el hilo del A1 (donde estaba el firm que te comentaba antes) y los post de Air101 en ULC), con lo que me decías del audio digital.

El firm no saca audio analógico, pero si digital, y lo que buscaban era convertirlo. La idea de Air de un conversor (DAC) no es mala, pero si mas cara que el mod. Ahora si se tiene un amplificador con entrada digital se puede usar, ya sea para sacar audio por el sistema de altavoces o mandarlo al TV por las salidas RCA del amplificador.

Para salir del paso vale, pero creo que lo mas práctico es el mod. que soluciona tanto el sonido como lo del mando.

Ahora que ha salido a la luz la apertura de irdet*2 y vi*ccess2.5 seguramente habrá que actualizarse y con los Truman hay "soporte" muy bueno...

sl2

barrigaverde 31/07/2007 17:53

saludos vishero gras por todo en ello llevo pensando desde hace mucho tiempo de que efectivamente es asi es el que mas soporte tiene en todas la direcciones y sobre todo si esta en jastra por ese motivo lo estoy preparando sin prisa para el proximo años claro que ya esta encima saludos

vishero 02/08/2007 03:15

Siguiendo con el tema, al final terminé desarmando todo el cacharro...

Después de recorrerme varias tiendas no encontré el Resonador de 4MHz, así que hice una prueba con un cristal de 4MHz y dos condensadores de 22pf y no funcionó. Pero no sé si ese es el problema, o que no hice el punteado del 74HC164D, ya que pensé que al ir la señal del IR directa al conector (cable negro) no haría falta.

También intente montar el MOD con un AVR, pero justo los que se necesitan no tengo. Se pueden usar un Atmel AVR ATMega32, ATMEGA16 , ATMega8535 (40 patas) o un ATMega8 (28 patas), y yo tengo de los "clásicos" AT8515 y ATMega8515.

Solo hice lo necesario para que funcionara el mando, el sonido de momento lo dejaré tal cual, si es que, como dicen, hay salida digital, por lo menos en el óptico hay señal al meterle el firm del Truman, y si funciona correctamente lo usaré con un amplificador con entrada digital.

Lo de soldar en el PCM1742KE, mire por debajo y solo hay un solo punto en la zona del chip que pudiera ser una pata, pero había que quitarle el esmalte para comprobarlo, y si hubiera continuidad tampoco soluciona nada, así que por aquí no se puede.
Por arriba, solo habría que soldar solo en dos patas, ya que una de las resistencias del costado (RA16) estaría conectada a la pata 15 (una pita, pero no se ve bien).

Para quitar, y reponer, los 2 condensadores de 10uf hay que sacar la placa. Al reponerlos se podrían poner unos nuevos y colocarlos acostados, y si tocaran en algún otro componente buscar unos mas bajos, de esta manera no habría que sacarlos nuevamente si hubiera que soldar otra vez.

Fotos de frontales:

Frontal SL35 (Kosovo-ULC):
http://img241.imageshack.us/img241/8...6671ty6.th.jpg http://img216.imageshack.us/img216/4...tineky7.th.jpg

Frontal SL35-1 CI (Vinix-ULC):
http://img241.imageshack.us/img241/3...talemh7.th.jpg http://img529.imageshack.us/img529/4...otalcj8.th.jpg

Frontal SL65s:
http://img186.imageshack.us/img186/6...delarj5.th.jpg http://img176.imageshack.us/img176/6...traslw5.th.jpg

Mirando las diferencias, además de la cantidad de botones, la principal es el 74HC164D, ya que las anteriores no lo tienen.
http://img176.imageshack.us/img176/9...164ddv0.th.jpg

En el MOD de bertram02 se puede ver el puenteado:
http://img186.imageshack.us/img186/3...164dhf7.th.jpg

Que según el texto en alemán que puse antes, sería algo así:
http://img176.imageshack.us/img176/9...164dvo1.th.jpg

Esto será solo para que funcione el display?. O para los botones del frontal también?...
Lo de soldar esto así, de manera "irreversible" sin desoldar, no me gusta. Creo que le meteré un switch múltiple para poder ponerlo al estado "normal" cuando se quiera.

Aquí la pista del IR, hasta el cable negro que hay que puentear con el 16F84.
http://img527.imageshack.us/img527/9...tairqc6.th.jpg

Bueno, seguiré buscando el dichoso resonador, y si no encuentro compraré un AT.

sl2

jubamo 02/08/2007 03:41

[QUOTE=vishero;2963164]
Después de recorrerme varias tiendas no encontré el Resonador de 4MHz, así que hice una prueba con un cristal de 4MHz y dos condensadores de 22pf y no funcionó. Pero no sé si ese es el problema, o que no hice el punteado del 74HC164D, ya que pensé que al ir la señal del IR directa al conector (cable negro) no haría falta.
[/QUOTE]

El puenteado es solo para que se vea bien el display, los botones no van, porque se los mete al pic para que este saque los códigos del mando por el cable de infrarojos.

Vinix lo tiene configurado para cristal así que te debe de funcionar, fíjate en los leds. He mirado el datasheet de 16f84 y el cristal va entre la patilla 15 y 16 y también de la 15 un condensador de entre 15 a 33 pF y a la patilla 16 lo mismo los dos a masa.

Suerte.

vishero 02/08/2007 04:01

Hola jubamo,

Así es como lo tengo, con dos de 22pf a masa, uno en cada pata del cristal.

Los led funcionan, pero ambos se quedan encendidos.

El de MODO estaría bien, pero el IR ¿no debería encenderse cuando recibe señal del mando?...

Luego la pata 10 al frontal, y la pata 6 al CON3... (Aqui dudo si está bien)

El resto lo verifiqué y está correcto...

sl2

barrigaverde 02/08/2007 05:55

sasludos vishero solo comentarte que ayer visualice la version 2.5 en dicho foro con imagen del circuito de version 2.4 parece que han cambiado algo en el programa del pic saludos

jubamo 02/08/2007 09:14

Ein significa entrada Aus salida (o algo así). La patilla 6 es RB0/INT (entrada de interrupción es la que viene del panel) y conforme dice Vinix en el *.asm en su versión 2.4

; Portpins für den IR Empfänger und Fernbedienung Ausgang COMAG Labeln:
; =====================================================================
#DEFINE IR PORTB,0 ; Infrarot FB Eingangssignal von der Frontplatine **************(patilla-6)
#DEFINE FBC PORTB,4 ; FB Ausgang zum ALI vom Emulator *************(patilla-10)

; Portpins für den IR Indikator LED Labeln:
; =========================================
#DEFINE LEDI PORTB,5 ; LED IR Indikator (Blinkt bei Empfang von der Fernbedienung) *****(patilla-11)

; Portpins für den Wahlschalter Firmware und Anzeige LED Labeln:
; ==============================================================
#DEFINE LED PORTB,6 ; LED AUS = COMAG Firmware / LED AN = Truman Firmware **********(patilla-12)
#DEFINE TB PORTB,7 ; Schalter Eingang Comag oder Truman Firmware *************(patilla-13)


Fijate que un led luce cauando esta activado el truman y el otro cuando hay actividad de infrarojos.

saludos.

vishero 02/08/2007 15:58

Pufff, me está cansando el puñetero...

Después de leer un buen rato el pdf alemán con traductor al lado, efectivamente es como pone jubamo, la 10 al CON3 y la 6 al frontal.

La pata 13 (MODO) está directa con la R de 10K a VCC, por lo que el Led de la 12 está siempre encendido.

El led de la 13 (indicador IR) está siempre encendido y parpadea cuando le doy con el mando.

Pero según que firm le ponga, hace cosas "raras", uno (el Truman.EMU.1.3.60.Simpsons Editionboot,otoloader.bin) se inicia siempre en stnadby, con 00:00, pero no se puede iniciar con el mando, aunque se ve en el led del mod que recibe señal. Sí se inicia con el botón de Power, a partir de ahí los símbolos raros del display y se apaga, y entra en un bucle de encendidos y apagados.

Si le meto el Truman de Serbia (Truman.EMU.1.3.60.Serbia.bin), sin el MOD se inicia y ahí se queda con los símbolos raros y el cartel de no hay señal en un canal de Astra. Si le pongo el mod, se inicia con los símbolos, pero también comienza con los bucles de apagados y encendidos, en el poco tiempo que da, he podido entrar en el Menu con el mando, pero se apagó.

Si le meto el último Truman "oficial" (Truman_EMU_1.3.63_AMSTAR.bin), se flashea perfectamente, pero directamente no inicia (sin el mod), se queda con un cartel de "Program no found" y de ahí no pasa.

EL tema de los reinicios constantes con el mod ni idea que será. ¿Estará el pic jodido?. He usado los hex v2.4, 2.5 y 2.5a, se deja grabar y verificar sin problema.

Seguiré probando cosas...

Con un AVR el mod será más rápido?, lo digo por que en lo poco que me deja usarlo pareciera que es algo lenta la reacción.

sl2

vishero 02/08/2007 16:53

El bucle de reinicios lo solucioné, si no es por Zacky podría haber estado años... :)

En el ICProg, no configuraba en el Oscilador como "XT", lo tenía en "RC"... :p

Ahora lo único que puedo hacer es encenderlo y apagarlo con... la tecla del nº9 del mando de la TV!!!!!!!!!!!!!!!

Que H. de P.!!...


sl2

jubamo 02/08/2007 17:37

[QUOTE=vishero;2963569]El bucle de reinicios lo solucioné, si no es por [URL="http://foros.zackyfiles.com/showpost.php?p=2963503&postcount=2"]Zacky[/URL] podría haber estado años... :)

En el ICProg, no configuraba en el Oscilador como "XT", lo tenía en "RC"... :p

Ahora lo único que puedo hacer es encenderlo y apagarlo con... la tecla del nº9 del mando de la TV!!!!!!!!!!!!!!!

Que H. de P.!!...


sl2[/QUOTE]

He probado a cargarlo en el Icprog y a mi me lo abre con la opción XT.
Tanto la V2.4 como la V2.5 y en el .asm de la V2.4 esta configurado como XT, no entiendo como a ti al cargarlo al Icprog se te queda en RC.

De la velocidad, ten en cuenta que debe de transmitir el nuevo código después de leer el que has pulsado.

Lo de que solo te funcione con el mando 9 de la TV, esto es nuevo :), pero te indica que el pic esta trabajando. El mando original debe de valer, pues SantiPREACK lo ha hecho trabajar; ahora se me ocurren dos cosas:

1.) Cargar el firmware con la opción "allcode+bootloader".
2.) Fijate en que el cristal es exactamente de 4.000 y no 4.325 o similar.


Saludos.
PD. Con estos aparatos tenemos entretenimiento asegurado. :)

SantiPHREACK 02/08/2007 18:19

Webas vishero

Te cuento como lo hice yop

A falta de Resonador cerámico, no me complique mucho y utilice un cristal normal de 4MHz exactos y a pelo, es decir sin condensadores ni na.

El esquema que yo utilice es este

[URL=http://img388.imageshack.us/my.php?image=sl65modmk2.jpg]http://img388.imageshack.us/img388/1...5modmk2.th.jpg[/URL]

que como ves es un pelin mas simple y no utiliza los botones del frontal, y el hex no me acuerdo muy bien si fue la versión 2.1 o la 2.3 con su configuración por defecto del Oscilador como "XT" y va como la seda.

y respecto a puentear el "74HC164D" del frontal, como muy bien dices, simplemente es para que se lea correctamente el display , no influye para nada con los botones, a ver si saco tiempo y lo pruebo:p

barrigaverde 02/08/2007 19:08

saludos compañeros necesito consejo como realizo el crc osea el como ya lo tengo pero de que zona solo el maiconde o otalodader y maiconde juntos o todo el fichero???

jubamo 02/08/2007 19:38

Cada parte lleva su CRC y por la parte de abajo corta por donde salen los ceros, fijate en la imagen que puso Santi.

Saludos.

barrigaverde 02/08/2007 19:54

saludos jubamo afirmativo me he fijado en la imagen en la que hacer referencia la crc del otaloader y pienso que es el unico que hay que realizar el resto de apartado llevan ncrc y eso no hay que realizarselo o estoy equivocado por eso lo prengunto no lo tengo muy claro

posdata he visto en el 5 un sl65 ali E 1 parece que es el de ultima ornada estoy intentando descoprimirlo pero no va me da error con las tres terminaciones normalmete utilizadas lzma,zip gzip saludos

jubamo 02/08/2007 20:34

Solo tienes que cambiar el CRC al que hayas modificado (maincode)? aquello solo es un ejemplo, pero si pones NCRC en el lucar del crc trabaja igualmente sin esa comprobación.

De lo segundo ni idea.

vishero 02/08/2007 20:36

Jubamo & Santi

Bueno, funcionando...

No pregunten como, por que no tengo ni p*** idea..., mezclé tantas variables que ya ni sé lo que tiene dentro...

Volví al firm del Truman Serbia, con "un" hex metido con ICProg y XT, inicia con los dos leds encendidos, le doy al mando y responde, pero cada tecla que aprieto se "clava", le doy a CH+ y se pone a pasar canales a lo loco..., Menú y lo mismo, pasa por todas las opciones sin interrupciones.

Lo apago desde atrás y lo desenchufo...

Pienso un momento si lanzarlo por la ventana del 7º, o meterlo en el microhondas... :D

Le doy otra oportunidad, enciendo sin tocar absolutamente nada, se activa solo el led verde (MODO Truman), le doy al mando, titila el led rojo (IR) y ... funciona!!!!...

Repito la operación tres veces y sigue funcionando. :confuso::confuso::confuso:

Algunas teclas están cambiadas pero puede ser por la versión del hex que tiene, le meteré la 2.5a a ver si se soluciona.

El circuito que hice desde el inicio es igual al que puso Santi, pero sin la conexión al 1742KE, no tienen switch por que era de pruebas, se lo pondré al definitivo y las resistencias a los leds de 2,5mm son de 330ohm. El cristal es de 4.00000000MHz y los dos condensadores de 22pf. El pic un 16F84-04.

Todos los firms los metí como "allcode+bootloader" con el upgrade del Truman.

Confirmo que da salida de audio digital, tanto la óptica como la coaxial, lo tengo conectado a un amplificador audio/vídeo 5x1, y funciona perfecto en ambas, se puede conectar a cualquier equipo de audio que tenga entradas digitales.

El firm en si es para otro tema, tiene algunos pro y algunas contras, habrá que personalizarlo.

Paso a la otra etapa, el display...

Pero ahora me voy a tomar una caña de litro.... :D

sl2 y gracias por las ayudas y/o sugerencias...

barrigaverde 02/08/2007 20:43

pues me alegro un monton asi mas de uno nos vamos a pasar por esas latitudes aunque me falta como te decia una cosilla el 4000 mhz pero mañana creo me lo tienen estaba encargado pero como no lo puedo recoger solo los sabados y no trabajan en estos meses haber si me puede dar un piro un rato del curro suerte

SantiPHREACK 22/08/2007 17:37

Para los que todavía no se han animado a hacerle el "MOD" de los Truman o no se han enterado, solo deciros que acaba de salir recién calentito de el horno la ultima versión que hace Auto ;) Comprobado.

barrigaverde 22/08/2007 20:05

pues grs santi ya tengo el cristal solo me falta animarme saludos

Adobe 22/08/2007 20:57

Yo he tenido que desmontar el resonator este de una placa pero por ahora realizare la parte del mando lo del PCM me da miedo :-(
saludos y gracias

jubamo 23/08/2007 19:37

Tambien he realizado el mod de Vinix.
Ahora hay que aprender este firmware.

Saludos.


La franja horaria es GMT +2. Ahora son las 14:56.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate