2015年4月17日金曜日

RP-2基板作成

基板が上がってきたので部品を付けて動作試験をしていきます。
この基板はいろいろな用途の回路を盛り込んで作っています。盛り込んでいる機能は次のとおりです。
1.RaspberryPi2との接続(ATMega328pとは排他)
2.ATMega328p(RaspberryPi2接続とは排他)
3.2.1mmDCコネクタでの5V ACアダプタ対応
4.赤外線受光部
5.赤外線発光部
6.圧電ブザー
7.XBee接続
8.12keypad(0-9#*)接続回路(ATMega328p only)
9.人感センサー接続回路(ATMega328p only)
10.火災警報器等の接点出力の検知機能(ATMega328p only)
11.2.54mm pitchのユニバーサル基板

まずは、メインの用途である1,3,4,5,6,7の機能を盛り込んだ基板を作ります。
これまでRaspberryPiで組んでいたホームコントロールシステムの親機をRaspberryPi2で置き換えます。
 部品をマウントした基板(左)とRaspberryPi2(右)
これを組立てます。
下の白いアクリル板は箱に入れるための支持板 

これにアクリルをレーザーカッターで切り出して曲げ加工した物をケースにします。
 ケースの下側(左)とケースの上側(右)

ケース下側と基板を組んだところ

ケース上も組んだところ

物理的にはうまく出来そうです。

ところがそう簡単には行きませんでした。
赤外線リモコンの送受信回路はRaspberryPiのPCM IFを使って組んでいるのですが、RaspberryPiからB+になった時にP6の8pinコネクタ(NoMount)に出ていたGPIO28-31のALT2にあったPCM IFが無くなり40pinコネクタのGPIO18-21のALT0に移動しました。
これは判っていたので回路はそちらに接続するように組んでいたのですが、Raspi2上のプログラムを変更してもうまく動きません。PCM_FSに接続してある圧電ブザーが鳴っていないのとPCMの書き込み時にFIFO Fullで止まってしまってるのでPCM_CLKが入っていないと思われます。

GPIO28のALT2も選ばれていてGPIO18のALT0と入力がぶつかっているのではないかと疑ったのですがどうも違うようです。
丸一日悩んだのですが、どうもGPIOを直叩きしても出てないようでメモリダンプをしたりしてみるとレジスタっぽい値が出てきません。BCM2835からBCM2836に変更になった影響で何か変わっているのではないかとう疑いを抱き始めてメモリマップを眺めていて気が付きました。
DRAMのサイズが1GBになっているはずなのでPeriphralのアドレス空間であるはずの0x20000000はDRAM空間と重なっているではないですか。
あとはネットで検索していたら答えがありました。BCM2836ではPeripehral空間が0x3f000000に移動しているようです。
PCM IFを直叩きしているため罠にハマってました。
これを直したらちゃんと動き始めました。
apache2も高速になって快適です。

0 件のコメント:

コメントを投稿