Vol.553 3.Oct.2008
B
Blu-ray Discのプロテクトに関する確認
by S.S.
昨今のテレビディスプレイのHD化において、DVDに代わる映像メディアとしてBlu-ray Discの割合が高くなってきているようです。ハイビジョン映像の供給が多くなることは喜ばしい限りです。
このBlu-ray Disc、コンテンツ供給側のメリットの一つとして、コピープロテクト等の著作権保護技術(AACS、ROM Mark、BD+の3つの技術が使用されている)の高さが上げられてきました。特に、BD+はプロテクトが破られてしまった時にも、新たなプログラムをBDプレイヤーに導入できる機能で、目玉の一つとなっているようです。
さて、このBD、実際にはもうコピーが可能になってしまっている様です。マイ研AV同好会としては、やはり事の真偽を確かめる必要があると思っていました。8月になりBD-Rドライブも2万円台に落ちてきましたので、思い切って実行に移すことにしました。
準備したもの
BD-Rドライブ:プレクスター PX-B910SA(ドライブはPanasonic)、2万円くらい
ソフトウェア: Slysoft AnyDVD + HD Option 、79ユーロ (まとめ買い割引有り)
(ちなみにSlysoft社(http://www.slysoft.com/ja/)は、羊のマスコットで一世を風靡したCloneDVDの販売会社です。)
BD-ROM: 2年くらい前に買ったのもの。
プレイヤー:WinDVD(BDに対応しているバージョン)
OSは、Vista ultimate 64bitです。
さて、実作業です。AnyDVD HDを導入すると、Windows右下の通知領域にアイコン(狐の顔)が現れる様になります。これを右クリックすると、いくつかのメニューが現れます。この中にディスクにコピーする旨のメニューを選び実行します。これだけ。そうするとハードディスクにBD-ROMの中身がファイルとしてはき出されます。
さて、このファイル、そのままではソフトプレイヤーで再生できませんでした。
そこで、BD-Rにファイルとして書き込みました。フォーマットはBDで使われているUDF 2.5を指定です。
さて、焼き上がったBR-Rをソフトプレイヤーで開いてやると・・・、本当に再生が始まりました。コピー、もうできてしまうのですね。その後、AnyDVD HDがバージョンアップして、BDをisoファイルとしてかき出せる様になりましたので、そのテストも行ってみました。以前と同様にアイコンをクリックするとisoとして出力するメニューが出ます。BD等の場合、「エラーもそのまま出力する」というチェック項目があります。これをチェックするとたぶん成功率が高くなるのでしょう。とりあえず、チェックをした場合としない場合とでテストしてみました。SlysoftのisoマウントソフトのcloneDriveはうまく動作しませんでしたので、isoファイルをBD-REに焼き込んでのテストです。まず、AnyDVD HDが動作しているPC上ではどちらも再生されました。もう、完全にコピー可能な状態です。さらに、PS3での再生も行ってみました。「エラーもそのまま出力する」を選んだディスクは「不正なディスクです」エラーが出て再生できません。まぁ、当たり前だと思ったのですが、もう一方のディスクは何と再生されてしまいました。
確認したのが古いタイプのディスクということなのかもしれませんが、何れにしてもDVDの時の様な状況になりつつあるのかもしれません。
S
PICを使おう(6)−LCDディスプレィ−
by fjk
PICからの情報がLEDだけでは寂しいので、文字が表示できるキャラクターLCD(秋月電子、16文字×2行)を接続してみる。LCDをPICで使用した例はたくさんあるので、それらを参考に配線を行い16F88にプログラムを書き込んで、電源を入れると・・・・、文字が表示されるはずなのに全く何も表示されない。
実は簡単に実現できると思っていたのに、完動するまでに3週間(実作業時間はそれほどでもないが)もかかってしまった。久しぶりにオシロスコープをさわることになり、やっと動作させることが出来た。この間のミスやトラブルを以下にまとめる。
<ハードウエア>
- 1.LCDのピン配置に注意
- LCDパネルのピン配置をじっくり見なかったことが最初のミス。14番ピンがパネルの端に記述されていたので、1番ピンが反対側から順に並んでいる物と思いこみ配線していた。実際は15,16,1,2,・・・,14と並んでいた。
- 2.LCDの輝度調整ピンには0.5〜1V程度を加えよ
- 参考にした資料では、3番ピンには何も接続されていいなかった。配線が必要ないのかと思っていたら、このピンはLCDの輝度調整用で電圧を加えないと(0Vにすると表示が真っ暗となる)文字は見えないのである。
<ソフトウェア>
- 1.16F88ではOSCCONレジスタを設定せよ
- 16F88の内部発信器を使う場合8種類の周波数を選ぶことが出来る。周波数はOSCCONレジスタで選択できる。リセット後は31.25kHzとなっているので、8Mhzを使うには70HをOSCCONレジスタに書き込まなければならない。LED明るさをPWMでコントロールしようとしたところ、何故かLEDの点滅が見える。そこでクロックをPICの外部に取り出し(6番ピン)、オシロで調べてみると、31.25kHzとなっていた。OSCCONレジスタは他の多くのPICでも採用されているのでデータブックで確認する必要がある。
- 2.LCDの書き込みはタイミングに注意
- アセンブラプログラミングで、電源投入後、すぐにLCDの初期化を行うと、失敗することがある。LCDのマニュアルにも書いてあるように150ms以上の待ちを入れること。さらに、LCDのビジー信号の確認をしていないのでデレータイムを十分に取ること。但し、4ビットモードでは上位データを転送後、時間をあけすぎて下位データを転送すると正しく送られないことがあるので注意(ノイズによりE信号があったと間違えられるみたい)−>パスコン挿入で安定。
その他で注意すべき事は、ICSPを使いながらPB6,7をLCD用に接続する場合はPICとLCD間に数100Ω程度の抵抗が必要な場合がある。これがないと、Pickit2からの書き込みどころかPICの認識もしてくれないこともある(Pickit2マニュアルの30頁を参照)。
microBASICで作製したプログラムは以下のとおりである。PB0は実際には配線していない(LCDのR/WはGNDに配線)
program LCD4test
' PIC16F88 外部20MHz(セラロック使用)
' LCD制御pin R/W:RB0 RS:RB1 E:RB4
' LCDデータpin D4:RA0 D5:RA1 D6:RA2 D7:RA3
' Devvice Flags:
' _CP_OFF _CCP1_RB3 _DEBUG_OFF _WRT_ENABLE_OFF
' _CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_OFF _PWRTE_ON
' _WDT_OFF _HS_OSC _IESO_ON__CFG2 _FCMEN_ON__CFG2
dim text as char[20]
main:
PORTA = 0
TRISA = 0 ' ポートAは全て出力
ANSEL = 0 ' アナログは使用しない
PORTB = 0
TRISB = 0 ' ポートBは全て出力
Lcd_Config(PORTA,3,2,1,0,PORTB,1,0,4) ' LCDの初期化
text = "PIC16F88"
Lcd_Out(1,1,text) ' (1,1)にデータを表示
text = "LCD Test"
Lcd_Out(2,1,text) ' (2,1)にデータを表示
end.
RB6(RS),RB7(E)を制御に使用した場合、Pickit2の[programer]の[Verify on write]のチェックを外しておかないと、書き込み時にベリファイエラーが出る(正常には書かれているのですが・・)。
・・と、0.1μFのバイパスコンデンサをPICとLCDに付けたら安定しました(手抜きはダメですね)。
program LCD4test2
' PIC16F88 内部クロック8MHz(IRCF1-2:111)
' LCD制御pin R/W:RB0 RS:RB7 E:RB6
' LCDデータpin D4:RA0 D5:RA1 D6:RA7 D7:RA6
' Devvice Flags:
' _CP_OFF _CCP1_RB3 _DEBUG_OFF _WRT_ENABLE_OFF
' _CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_OFF _PWRTE_ON
' _WDT_OFF _INTRC_IO _IESO_ON__CFG2 _FCMEN_ON__CFG2
dim text as char[20]
main:
OSCON = %01110000 ' 8MHzを選択
CMCON = %00000111 ' コンパレータは使用しない(今回は記述省略可)
PORTA = 0 ' PAデータを初期化
TRISA = %00110000 ' PA4,5は入力、他のPAポートは出力
ANSEL = %00010000 ' PA4はアナログ入力
PORTB = 0 ' PBデータを初期化
TRISB = %00000001 ' PB0は入力、他のPBポートは出力
Lcd_Config(PORTA,6,7,1,0,PORTB,7,0,6) ' LCDの初期化
text = "PIC16F88 useB6,7"
Lcd_Out(1,1,text) ' (1,1)にデータを表示
text = "LCD Test INTRC"
Lcd_Out(2,1,text) ' (2,1)にデータを表示
end.