ラベル PAV-MP1 の投稿を表示しています。 すべての投稿を表示
ラベル PAV-MP1 の投稿を表示しています。 すべての投稿を表示

2010年10月3日日曜日

PAV-MP1 デジ像 車載アダプターの製作 webページにアップしました。

PAV-MP1 デジ像 車載アダプターの製作 webページにアップしました。
webページへのリンク

2010年9月26日日曜日

PAV-MP1車載用アダプタをつくる レジューム ENTERキー送信

電源ON時の「ジュームシしますか?」 の画面に対して「OK」するために自動でENTERを送信することにしました。私が使用しているUSBメモリーは非常に認識が遅いようで、念のため電源ONから約100秒後に送信することにしました。詳細はwebページに。・・・いずれ

;*******************************************
;****  PAV-MP1 enter code send ****
;*******************************************

ENTERSEND
        MOVLW        040H            ;SYSTEM CODE
        MOVWF        SDATA
        CALL        SEND8D
       
        MOVLW        0BFH            ;DEVICE CODE
        MOVWF        SDATA
        CALL        SEND8D
       
        MOVLW        0D0H            ;ENTER CODE
        MOVWF        SDATA
        CALL        SEND8D
       
        MOVLW        02FH            ;ENTER CODE
        MOVWF        SDATA
        CALL        SEND8D
       
        CALL        WAIT


        RETURN

オシロスコープの波形は上の通りですな。

2010年9月19日日曜日

PAV-MP1 レジューム用メモリーを2つにしてくれないかなぁ

苦労したけど、プリンストンさんがファームウェアを考えてくれたらこんな工作いらないんだけどなぁ。
レジューム用に再生か所をメモるのを1分くらいごとに二か所に交互にして、次の電源ON時は正常に書き込めている方のメモリー内容を使う~てことにすれば、片方のメモリー内容が強制電源OFFで壊れていても2分以内でのレジュームができると思うんだけどなぁ。

それくらいはきっともうやっているか・・・片方消し始めたときに強制OFFで破壊・・・正常だと勘違いして読み込み カナ?
(2010.09.20書換)


次のファームウェアに期待~アダプタで儲けられなくなるか(~_~)。って公開している時点で儲けられないかhihi。

でも、今回の工作で磨いた技術は地デジチューナープラステレビのリモコン操作に活用できるかな。
なんて考えています。

PAV-MP1車載用アダプタをつくる PICのプログラム

 PICのプログラムは次の通り。
 ソース貼り付けますが、スペースやタブが代わっていてこのままコピーしてもMPLABを通らないかもしれません。そのうちwebページに載せたいと思います。


;******************************************************************:
; This program is installed in the RFID transimitter.
; 37.9kHz modulated IrDa for PAV-MP1.
; This program is installed in the PIC which drives with 4MHz clock.
;******************************************************************
;
LIST P=PIC16F84A
INCLUDE "P16F84A.INC"
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
;*******************************************
; Define variables
;*******************************************
SDATA EQU 0CH ;Send data 2Byte
CNT1 EQU 0EH ;Counter
CNT2 EQU 0FH ;Counter
CNT3 EQU 10H ;Counter
CNT4 EQU 15H ;Counter
CNT5 EQU 16H ;Counter
BITCNT EQU 11H ;Bit counter
WCNT EQU 12H ;counter for 37.9kHz
W6CNT EQU 13H ;counter for 600usec
WORK EQU 14H ;work area

;*******************************************
; Jump vector
;*******************************************
ORG 0 ;reset
GOTO MAIN
; ORG 4 ;interrupt(not use)
; GOTO START

;*******************************************
; MAIN routine
;*******************************************
MAIN
BCF INTCON,GIE ;Inhibit interrupt

CALL PORT_INI ;initialize
;******* main program **********
START
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO ACC_0V ;ACC=0V so goto POWER OFF
CALL WAIT5 ;ACC=12V wait 5 sec
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO START ;ACC change while in work
CALL POWER_ON ;ACC=12V so goto POWER ON
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO START ;ACC change while in work

GOTO SLEEP_R ;ACC=0V sleep and wait change

ACC_0V
CALL LEED
CALL STOPSEND ;ACC is OFF so stop PAV-MP1
CALL WAIT5 ;wait 5sec
CALL POWER_OFF ;POWER OFF
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO SLEEP_R ;ACC=0V sleep and wait change
GOTO START ;ACC change while in work

;********** sleep ***************

SLEEP_R
BCF INTCON,0 ;RBIF クリア
; BCF INTCON,1 ;INTF クリア
BSF INTCON,3 ;Rb割り込み、RBIEをenable
; BSF INTCON,4 ;INT割り込み、RBIEをenable

SLEEP ;power down mode
LOOP BCF INTCON,7 ;GIE クリア
BTFSC INTCON,7
GOTO LOOP
BCF INTCON,3 ;Rb割り込み、RBIEをdisable
; BCF INTCON,4 ;INT割り込み、RBIEをdisable

GOTO START


;*******************************************
;************ Subroutines ****************
;*******************************************

;*******************************************
;**** send leed phase ****
;*******************************************
LEED
MOVLW 00FH ;reset bit counter
MOVWF BITCNT
LDLP
CALL BIT1 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP ;continue

MOVLW 007H ;reset bit counter
MOVWF BITCNT
LDLP2
CALL BIT0 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP2

CALL BIT1
RETURN

;*******************************************
;**** PAV-MP1 stop code send ****
;*******************************************

STOPSEND
MOVLW 040H ;SYSTEM CODE
MOVWF SDATA
CALL SEND8D

MOVLW 0BFH ;DEVICE CODE
MOVWF SDATA
CALL SEND8D

MOVLW 030H ;STOP CODE
MOVWF SDATA
CALL SEND8D

MOVLW 0CFH ;STOP~ CODE
MOVWF SDATA
CALL SEND8D

CALL WAIT


RETURN
;*******************************************
; Send 8data subroutine
;*******************************************
SEND8D
MOVLW 08H
MOVWF CNT4
SS1 BTFSC SDATA,7
GOTO SS2
CALL SEND0
GOTO SS3
SS2 CALL SEND1
SS3 RLF SDATA
DECFSZ CNT4
GOTO SS1
RETURN

;*******************************************
; Send data 0 subroutine
;*******************************************
SEND0
CALL BIT0
CALL BIT1
RETURN
;*******************************************
; Send data 1 subroutine
;*******************************************
SEND1
CALL BIT0
CALL BIT0
CALL BIT0
CALL BIT1
RETURN


;*******************************************
; Send BIT 0 subroutine
;*******************************************
BIT0
MOVLW 0CH ;output RA2,RA3 1
MOVWF PORTA
MOVLW 0CH ;get counter for 600usec
MOVWF W6CNT
BT01LP
MOVLW 0FH ;15 get for 37.9kHz
MOVWF WCNT
BT00LP
DECFSZ WCNT,F
GOTO BT00LP ;3*15-1+2=46
;***
NOP
DECFSZ W6CNT,F
GOTO BT01LP ;(46+4)*12-1+5=604USEC
RETURN

;*******************************************
; Send BIT 1 subroutine
; "1" :13usec "0":13usec = 37.9kHz
;*******************************************
BIT1
MOVLW 017H ;get counter for 600usec
MOVWF W6CNT
;**** low output for 37.9kHz ****
BTLOOP
MOVLW 000H ;set on data
MOVWF PORTA ;on LED
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
NOP
NOP
NOP
NOP
;**** high output for 37.9kHz ****
MOVLW 0CH ;set port
MOVWF PORTA ;off LED
NOP
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
MOVLW 07H ;set on data for next
;**** end test for 600usec ****
DECFSZ W6CNT,F
GOTO BTLOOP
RETURN ;26*23-1+4=601usec


;*******************************************
; 300msec timer subroutine
;*******************************************
WAIT
MOVLW 0AH ;10
MOVWF CNT3
WTLP3
MOVLW 063H ;99
MOVWF CNT2
WTLP2
MOVLW 064H ;100
MOVWF CNT1
WTLP1
DECFSZ CNT1,F
GOTO WTLP1 ;3*100-1+2=301usec
;**
DECFSZ CNT2,F
GOTO WTLP2 ;(301+3)*99-1+3=30098
;**
DECFSZ CNT3,F
GOTO WTLP3 ;(30098+3)*10-1+3=301msec
RETURN

;*******************************************
; 10sec timer subroutine
;*******************************************
WAIT5
MOVLW 01EH ;33
MOVWF CNT5

WTLP5 CALL WAIT ;300msec
DECFSZ CNT5,F
GOTO WTLP5
RETURN

;*******************************************
; POWER control subroutine
;*******************************************
POWER_ON

MOVLW 0FCH
ANDWF PORTA,1 ;POWER ON (L = FET ON)

RETURN

POWER_OFF

MOVLW 003H
IORWF PORTA,1 ;POWER OFF (H = FET OFF)

RETURN

;*******************************************
; PORT initial setup subroutine
; PORTA: all output
; RA0,RA1 main Power ON/OFF
; RA2,RA3 drive LED
; PORTB: all input
; RB4 ACC input wakeup
;*******************************************
PORT_INI
BSF STATUS,RP0 ;Set page 1
MOVLW 0FFH ;all PORTB is input
MOVWF TRISB ;PortB set all input
CLRF TRISA ;PortA set all output
BCF OPTION_REG,7 ;PORTB pull up enable
BCF STATUS,RP0 ;Set Page 0
MOVLW 00CH ;OUTPUT 0CH
MOVWF PORTA ;LED OFF,Main Power ON
RETURN

;*******************************************
; Program END
;*******************************************

END

2010年9月18日土曜日

PAV-MP1車載用アダプタをつくる 赤外線を送るアクリル板

赤外線発光ダイオードをアクリル板にホットボンドで接着
















リモコンの受信モジュールがあるあたりに傷をいれて赤外線を拡散させます。
「もうちょっときれいにくもらせろっ」て感じですね。後でかみやすりかけヨっと(~_~)。


PAV-MP1車載用アダプタをつくる 完成

注意:RA2とRA3直につないでるの間違いです。使っているのは片方です。
2010/09/28追記
PAV-MP1への12V供給用のコネクタをFETのソース側に移せばよいだけ・・・
なんて、甘くはなかった。
http://soudan1.biglobe.ne.jp/qa5111601.html

ハイサイドスイッチにするにはFETを変えるしかなさそう。PチャンネルのFETなんてジャンク箱の中には見つからず、結局のところリレーを使うことにしました。電流喰うけど仕方ない。

ごくごく普通にトランジスタでいいや。(; _ ;)
フォトカプラ~意味無くネ~
ますます落ち込み(;。;)

2010年9月16日木曜日

PAV-MP1車載用アダプタをつくる 車載で問題発生

完成したつもり・・・。
実験室レベルでは完成した。
本体には何も手を加えずにうまいこと動作してくれる。メーカーさんこんなのどう?。赤外線もPAV-MP1の後部からアクリル板を通して前面の受信窓に入れてやるようにした。工作はいい加減で汚いが、なかなかのアイデアでしょっ(~_~)V 。
ところが・・・・
車載したところ、ビデオや音声出力のRCAケーブルをつなぐとなぜか電源がONになる。

なぜだぁー?

困った。

あっそうか。あたりまえじゃん。FETで切ってるのは電源のマイナス側じゃん。俺って何てバカなの。明日回路変更しなきゃ。

2010年9月14日火曜日

PAV-MP1車載用アダプタをつくる 基板作成


基板は完成。
回路図を描くとき電源の+-を間違ったので +VDD の線がいまいちだ。
はんだもひどいか・・・

2010年9月13日月曜日

PAV-MP1車載用アダプタをつくる 回路図


赤外線で再生停止出力信号を送信してから電源を切ろうと思います。
電源ON/OFFにはフォトモスリレーを使おうと思っていたのだが手元にない。100円の部品購入に送料1000円かけるのは避けたい。手元にあるフォトカプラとジャンク箱の基板からはがしたFETで何とかしようか。

おっと なんてこった
電源間違ったじゃないか

ごめんなさい。

2010年9月4日土曜日

PAV-MP1車載用アダプタをつくる フローチャート


こんなんでどうでしょう?
自分だけわかればいいと思ってかなりでたらめな書き方ですが・・・。
スリープからの復帰後はスタートから再開のつもりです。

2010年8月29日日曜日

PAV-MP1再生停止の赤外線信号をつくる


上が付属リモコンの再生停止ボタンの信号。
下が本日の成果。
何とか停止させることができしました。

あとはACC電源をモニタして主電源を遅延してOFFする部分を作らないといけないな。

試行錯誤で疲れました。
またそのうちに続きをやります。
誰か、まともなハードとソフトを作ってくれないかなぁ・・・・。
て、イウかプリンストンさん、なんとかしてよ~。
参考にしたというか、ソースの主要部分をいただきました。
http://www.picfun.com/equipj31.html
ありがとうございます。

とりあえずの汚いソースメモ。

;******************************************************************:
; This program is installed in the RFID transimitter.
; 37.9kHz modulated IrDa
; This program is installed in the PIC which drives with 4MHz clock.
;******************************************************************
;
LIST P=PIC16F84A
INCLUDE "P16F84A.INC"
;*******************************************
; Define variables
;*******************************************
SDATA EQU 0CH ;Send data
CNT1 EQU 0EH ;Counter
CNT2 EQU 0FH ;Counter
CNT3 EQU 10H ;Counter
BITCNT EQU 11H ;Bit counter
WCNT EQU 12H ;counter for 37.9kHz
W6CNT EQU 13H ;counter for 600usec
WORK EQU 14H ;work area

;*******************************************
; Jump vector
;*******************************************
ORG 0 ;reset
GOTO MAIN
ORG 4 ;interrupt(not use)
GOTO MAIN

ORG 8
;*******************************************
; MAIN routine
;*******************************************
MAIN
BCF INTCON,GIE ;Inhibit interrupt
CALL PORT_INI ;initialize
;******* main loop **********
LOOP
CALL SCAN ;key scan and return key code
CALL LEED ;send leed phase
CALL SEND ;send data
CALL SEND ;send same data twice
CALL WAIT ;300MSEC timer start
GOTO LOOP ;endless loop

;*******************************************
;************ Subroutines ****************
;*******************************************

;*******************************************
;**** send leed phase ****
;*******************************************
LEED
MOVLW 10 ;reset bit counter
MOVWF BITCNT
LDLP
CALL BIT1 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP ;continue

MOVLW 7 ;reset bit counter
MOVWF BITCNT
LDLP2
CALL BIT0 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP2

CALL BIT1
RETURN

;*******************************************
;**** send data PAV-MP1 stop ****
;*******************************************
SEND
CALL SEND0
CALL SEND1
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND1
CALL SEND0
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND0
CALL SEND0
CALL SEND1
CALL SEND1
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND1
CALL SEND1
CALL SEND0
CALL SEND0
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND1
CALL WAIT


RETURN

;*******************************************
; Send data 0 subroutine
;*******************************************
SEND0
CALL BIT0
CALL BIT1
RETURN
;*******************************************
; Send data 1 subroutine
;*******************************************
SEND1
CALL BIT0
CALL BIT0
CALL BIT0
CALL BIT1
RETURN


;*******************************************
; Send BIT 0 subroutine
;*******************************************
BIT0
MOVLW 01FH ;output all 1
MOVWF PORTA
MOVLW 0CH ;get counter for 600usec
MOVWF W6CNT
BT01LP
MOVLW 0FH ;15 get for 37.9kHz
MOVWF WCNT
BT00LP
DECFSZ WCNT,F
GOTO BT00LP ;3*15-1+2=46
;***
NOP
DECFSZ W6CNT,F
GOTO BT01LP ;(46+4)*12-1+5=604USEC
RETURN

;*******************************************
; Send BIT 1 subroutine
; "1" :13usec "0":13usec = 37.9kHz
;*******************************************
BIT1
MOVLW 017H ;get counter for 600usec
MOVWF W6CNT
MOVLW 07H ;set on data
;**** low output for 37.9kHz ****
BTLOOP
MOVWF PORTA ;on LED
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
NOP
NOP
NOP
NOP
;**** high output for 37.9kHz ****
MOVLW 01FH ;set port
MOVWF PORTA ;off LED
NOP
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
MOVLW 07H ;set on data for next
;**** end test for 600usec ****
DECFSZ W6CNT,F
GOTO BTLOOP
RETURN ;26*23-1+4=601usec


;*******************************************
; Dynamic key scan subroutine
;*******************************************
SCAN
MOVF PORTB,W ;input PORTB
MOVWF WORK ;temp
COMF WORK,F ;complement
MOVF WORK,W ;set Z flag
BSF PORTA,0 ;reset
BTFSS STATUS,Z ;if data is none
GOTO EXIST ;exist key input
GOTO SCAN ;loop next scan

;******* fined key,convert to key code ********
EXIST
RETURN ;exit to main

;*******************************************
; 300msec timer subroutine
;*******************************************
WAIT
MOVLW 0AH ;10
MOVWF CNT3
WTLP3
MOVLW 063H ;99
MOVWF CNT2
WTLP2
MOVLW 064H ;100
MOVWF CNT1
WTLP1
DECFSZ CNT1,F
GOTO WTLP1 ;3*100-1+2=301usec
;**
DECFSZ CNT2,F
GOTO WTLP2 ;(301+3)*99-1+3=30098
;**
DECFSZ CNT3,F
GOTO WTLP3 ;(30098+3)*10-1+3=301msec
RETURN


;*******************************************
; PORT initial setup subroutine
; PORTA: all output
; RA3,RA4 drive LED
; RA0TORA2 used for dynamic key scan
; PORTB: all input(key input)
;*******************************************
PORT_INI
BSF STATUS,RP0 ;Set page 1
MOVLW 0FFH ;all PORTB is input
MOVWF TRISB ;PortB set all input
CLRF TRISA ;PortA set all output
BCF OPTION_REG,7 ;PORTB pull up enable
BCF STATUS,RP0 ;Set Page 0
MOVLW 01FH ;output all 1
MOVWF PORTA ;Off LED
RETURN

END

2010年8月26日木曜日

PAV-MP1 スーパーレジュームにはまってしまった。

参考になりました。
http://moke2ex.blog42.fc2.com/blog-entry-878.html
ありがとうございました。

車載メディアプレーヤーにしようと、購入したPAV-MP1、
この問題があっては車載は無理ですね・・・(;_;) 悲しいことつづき

イヤ、解決意欲をそそる問題続き。

picと赤外線で何とかしてみようか。