マイコン工作実験日記

Microcontroller を用いての工作、実験記録

ちょびっと改造

2010-04-30 14:39:58 | Weblog
先日はAT91SAM7S用のTOPPERS/ASPを動かしてみましたが、チップ依存部のコードを読んでみると変更したい箇所があったので、ちょっと改造してみました。変更するのは、使用するタイマです。

AT91SAM7シリーズの各デバイスは、WDT, PIT, RTT, TCという4種類のタイマを持っています。WDTはwatch dog timerで、システム監視用です。RTTはReal Time Timerで経過時間を計測するためのものです。WDTとRTTのふたつは内蔵の32KHzのRC発信器で動作します。PITとTCは、通常クリスタルを発振源としてPLLで逓倍して作成したマスタクロック(MCK)で動作するタイマです。TCが入出力端子を持っており、入力のキャプチャやPWM出力ができるのに対して、PITは周期的な割り込み生成が主な機能で入出力端子を持っていません。

元のASPのチップ依存部では、TCをTOPPERSのタイマとして使っているですが、わたしはいつもPITを使うことにしているので、この部分を変更したくなったわけです。TCではなくて、PITを使いたい主な理由は...
  1. そもそもPITはOSの周期割り込み用途向けに用意されたタイマであるから。
  2. 周期割り込みの生成が目的であれば、入出力端子は必要ないから。
  3. SAM7SにはTCタイマは、TC0~TC2の3チャンネルしかない。そのうちのひとつを、RTOSに取られてしまうのはイタイ。
と、いったところです。PITを使うことにすると、その割り込みはシステムコントローラを経由するため、DBGUシリアルと同じ割り込み要求番号(INTNO)となってしまいます。そこで、もともとはDEF_INHでタイマ割り込みのハンドラを定義していたのを、ATT_ISRで割り込みサービスルーチンの定義に置き換えてやります。SAM7やSAM9では、RTT, WDTもシステムコントローラを経由しての割り込み要求となるので、ATT_ISRが使えるのはとてもありがたいですね。

# ここまで記事を書いてから気が付きましたが、ベストテクノロジーの
# ブログに同じ内容の記事がありました。

次のジャケットの構想

2010-04-26 23:36:22 | W-SIM
昨年はAT91SAMよりもLPC2388の方に力が入った1年となってしまいました。その影響もあり結局W-SIMジャケットは1種類しか作りませんでしたが、今年もそろそろ次なるW-SIMジャケットの構想(妄想?)を練ろうかと思います。

これまでCODECチップを使ったり/使わなかったりとか、USB電話機を使ったり、普通の電話機をつなげたりとか、SIPとのGWを作ってみたりとか毎回趣向を変えてきましたが、そろそろ新基軸を打ち出そうにも思いつかないので、ここはいたってベーシックにいってみようかと思います。取り組みたいものには2種類ありまして...

その1
電話機ジャケットの作り直し。AT91SAM7A3を使って電話機ジャケットを作りましたが、こいつを見直してより実用的なものにしたい。ポイントは
  • もう少し小さくする。
  • MCUをAT91SAM7S256に変更する。死蔵していたMMsam7を活用する。
の2点です。SAM7A3では実験的にはMCIを使ってSDカードつなげたりしたのですが、32KBというRAMサイズの制限もあり電話機能と共存して使えませんでした。そこで今回はSDカードは削ってその分も小型化。できる限り部品数も低減した簡単なハードにする方向で。でも、結局はSLICボードの大きさがネックになりそうではあります。

その2
原点に戻って、キーパッドを使った端末を作る。こちらも少しは小型化したいんですが。。ハードも簡単化することにして、今度はCODECチップを使わずにすまそうと思います。つまりMCUでA/D変換とD/A変換をやろうかと。近頃のCortex-M3ではA/D, D/A共に12ビットできるようです。これなら通話品質としては充分に使えると思われます。

どちらも小型化のためには、プリント基板作るのが一番効果的なのですが、やはりとりあえずはユニバーサル基板で試作してみないと。。MCUについては、ほんとはSAM3Sを使いたいのですが、なかなか出てきません。その1の方もSAM3Sを使った方がいいのですが、とりあえずは死蔵在庫の消費に努めるためにSAM7Sで作り始めてみようかと思います。そして、SAM3Sが出たら、再度組み換えようかと。

その2については、とりあえずはSAM3Uを使っての勉強と、実験から始めてみようかと思います。SAM3Uには12ビットADはありますが、DAはありません。じつは、STM32を使えば全ての要件を満たせるのですが、ATMEL好きのわたしとしては、できればSAM3でいきたい!!

なんにも新しい機能が無いのも寂しいので、USBモデム機能くらは盛り込んでみようと思います。自分はNS001Uを持っているので、コイツのふりをしてVendor IDやProduct IDを返してやれば、Windowsにインストール済みのドライバやモデム infファイルをそのまま利用してデータ通信ができるはずです。


バチモン

2010-04-22 12:42:49 | Weblog
日経エレクトロニクスに偽物部品が出回っており、その被害が拡大しているという話がでていましたが、SparkFunもバチモンをつかまされたとのことです。モノはATmega328。入手困難になるほど、人気あるんですね。デートコードを見て、怪しそうだと気づいて調べたという、他人事なのでおもしろいお話になっていますので、一読をお勧めします。チップの中身まで確認してますし。

オチとして、中身空っぽの偽物を0.5ドルで販売開始というのも楽しませてくれます。現在、残り在庫1465個。どのくらい減っていくか見ているのも楽しいかも。

W-SIM対応機器開発評価キット

2010-04-21 22:39:27 | W-SIM
Yukiさんのつれづれ日記経由でW-SIM対応機器開発評価キットを知ったので、さっそく紹介を読んでみました。

まず、お値段が19,900円ととても安いので、ずいぶんと敷居が低くなった印象を受けます。技術資料だけでなく、W-SIM本体と1年間のパケ代が含まれていますしね。オマケ的にW-SIMコネクタ2種類まで用意されているのが微笑ましいです。ちなみにALPSのカタログによればW-SIMコネクタには8種類があるようで、Mouserには6種類の在庫があるようです。

開示される資料はパケット通信をおこなうのに必要な範囲に限定されるらしく、そのためにコンソーシアムの准会員という資格になるようです。提供対称は法人とか大学であり、個人向け提供はありません。データ通信の範囲であればATコマンド叩けばいいし、NS001Uのように月980円で済む端末を使えばキットよりも安上がりではあります。でも、キットで提供される技術情報を参照すれば、物理インタフェースの詳細や、電話帳などの資源のアクセス方法もわかるのだろうと想像します。

データ通信をおこなうだけであれば、NS001Uのような端末をUSBホスト機能を持つマイコンにつないで使えば、W-SIMソケットも必要ないので工作としては一番お手軽だなと思ったりしています。そのうちにATMELからOTG対応のSAM3Sとかが出たらやろうと目論んでいるのですが、まだまだ時間かかりそうですね。いっそのことLPC2388/LPC1768とかSTM32で実験した方がいいかもしれない。

# RX4201Nが生産完了になっていることを今頃になって知る。
# 月980円は、在庫処分セールだったのね。

こっちもバージョンアップ

2010-04-16 22:13:55 | Weblog
先週はIPAフォントのバージョンアップを確認したのですが、今週はlibjpegです。昨年、10年ぶりくらいにバージョン6bからバージョン7へのバージョンアップがあったのですが、気が付いたらバージョン8aになってました。いちおう入れ代えてみましたが、自分が使っている範囲内では大きな変更はなさそうです。性能的にも何ら変わりませんでした。

現在LPC2388での表示の使い方だと、VGAの元データを240x180に縮小表示となっており、これなら大体500ms~800msくらいで展開と表示の処理ができています。しかし、元データがさらに大きくなったり、VGAでも縮小しないとなるとかなり時間がかかります。部分的にアセンブラにするとかで最適化するとか、Cortex-M3のCPUで処理時間を比べてみるといったあたりの実験をそのうちにやってみたいものです。

はじめてのASP

2010-04-12 23:54:18 | Weblog
これまでずっとTOPPERS/JSPばっかり使ってきましたが、そろそろASPへの移行を進めようと思い、まずは試しに使ってみることにしました。これまでは、ASPを使う積極的な理由が見つからなかったし、TINETも対応できていない状況だったので、さらに消極的になっていました。昨年末にTINET 1.5でASP対応もなされたので、そろそろASPを使い始めてもいいかとは思っていました。

さて、実際にASPの実装例をみてみると、都合のいいことにAT91SAM7SベースのBTC090をターゲットとした簡易パッケージが用意されています。BTC090は単なるヘッダボードですから、同じようなヘッダボードであれば、そのまま動かせるハズです。そんなわけで、今回のターゲットはこれ↓です。



いつものようにPropoxで買ったボードです。とりあえず動作することだけは確認したのですが、まっとうなアプリを作るわけでもなく放置状態だったものを引っ張り出しました。

ともかくも、Ubuntu上でsample1をビルドすることに。まずは、コンフィギュレータであるcfgを作るのですが、ここでさっそくひっかかります。BoostというC++ライブラリが必要です。apt get してインストール。それでも、cfgのコンパイル時にエラーになります。どうやら、Ubuntuにインストールされた g++, Boost環境と、cfgの期待する環境との不整合のようです。ヘッダファイルを追加してやることで、コンパイルを通してどうにかcfgを作成しました。


続いて、sample1をビルドしようとするとkernel_cfg.cのコンパイルでエラー発生。_kernel_imp_mask_tbl[] の初期値が正しく出力できていません。似たような話がTOPPERS MLにあったので、それを倣ってchip.tfを修正したら無事ビルドできました。



環境との整合性で、Make一発とはいきませんでしたが、まぁ一度すませてしまえばいいだけのことです。これなら、今後は普通に使い続けられそうです。ASPでは、.cfg ファイルでの表現能力が強化されてCFG_INTで割り込み属性の記述もできるようになったので、割り込み優先度の設定も明示的に行えるようです。これを契機に、今後はASPで開発していくことにしようと思います。

フォントの変更

2010-04-10 20:14:05 | LCD
MP3プレーヤのLCD画面表示には、IPAフォントを使っているのですが、先日、新しいバージョンのフォントがリリースされというニュースを読みました。気が付くと、すでに1カ月以上が経過しているので、ようやくとIPAを覗いて、新フォントをダウンロードしてきました。

いままでは、IPA GUIというフォントを使っていたのですが、現在のバージョンのリリースにはこのフォントは含まれていないようです。確認してみるとIPA GUIはバージョン2.03 の頃のフォントで、その後3.01を経て現在は3.02になっているようです。全然、気付いてなかった。。今回は、新たに和文文字は固定幅、英文文字はプロポーショナルにしたIPAexフォントというのがリリースされたということなので、こちらを使ってみようと思い作業中。ちょっと試したところでは、IPA GUIよりも線が細く感じられるので、フォントを入れ代えるべきかどうかは思案中です。

平原綾香にはついていけない

2010-04-07 23:42:00 | MP3プレーヤ
今頃になってAACのデコード処理が、再生の速度に追いついていけない場合があることに気が付きました。いつも同じアルバムしか聞いていなかったため、動作確認が充分でなかったのです。SDカードを2GBから4GBに換えたのを機会にAACのアルバムを追加したところ、ブツブツとおと切れが発生することに気が付きました。何も問題無く再生できる曲もあるのですが、曲によっては音が割れるほどひどくなってしまうこともあります。これまでに調べた中では、平原綾香のJupiterが一番ひどく音割れします。

CODECへのDMA出力用のバッファを大きくして時間稼ぎをしたところ、かなり症状は改善されたのですが、平原綾香はなかなか手強いです。音割れまでには至らないものの、まだ音切れが生じます。バッファの容量にも限りがあるので、タスクの優先度を変更してみたりしましたがやはり音切れが残ってしまいます。

しょうがないので、禁じ手にでることにしました。LPC2388は72MHzで動作させているので、ほんとは MAM (Memory Acceleration Module)では4CCLK分のフェッチサイクルをMAMTIMに与えなければいけないのですが、これを3に変更。問題はきれいになくなりました。処理に時間がかかっている関数をフラッシュからRAMに配置しなおすことでも問題解決できるかもしれませんが、MAMTIMを3にしても今のところ不都合は生じていないようなので、これで様子を見ることにします。

クロックの同期

2010-04-03 19:51:40 | MP3プレーヤ
CODECへの出力に続いて、CODECからの入力についてもI2SのDMA対応を行いました。仕組みは出力の場合と基本的に同じなので、説明省略します。ただし、追加でもうひとつ対処した問題があります。それが、CODECとUSBのクロックの同期です。この問題も、放置したままになっていたので。。

これまで、CODECの動作クロックにはCODECモジュール上に載っている12MHzのクリスタルを使用していました。これを使うのが作業的には一番簡単だったからです。実用上も音楽プレーヤとして使っている場合には、これで何の問題もありません。ところが、FMラジオとして使って、USBスピーカへ出力する場合には問題が生じます。なぜなら、CODECがFMチューナからのアナログ信号をデジタル化する作業は、CODEC上の12MHzクリスタルをもとにして行われるのに対して、USBスピーカへの出力はLPC2388基板上のクリスタルをもとにして生成されたクロックを用いておこなわれるからです。両者が完全に同一周波数になっていれば問題ありませんが、個別のクリスタルがもとになっているのですから、そうはなりません。

実際にFM放送を聞いていると、ちゃんとキレイに聞こえていることもありますが、しばらくすると次第に音がかすれてきて、まるでチューニングがずれたかのように聞こえたりします。そして、しばらくするとまたキレイに聞こえるようになったりします。CODECとUSBの双方のクロックが互いにゆらぐので、こんな症状が発生するのでしょう。普段はヘッドフォンで聞いていることの方が多いので、USBスピーカ出力で問題があることはわかっていたのですが、放置したままになっていました。

問題の原因はCODECとUSBが違うクロックで動いていることですので、同じクロックを使って同期がとれれば、問題は解決できるはずです。そこで、↓のようにLPC2388とCODECの接続を変更しました。



CODECモジュールでは、MCKをモジュール上のクリスタルではなく、外部から入力することができるようになっているので、これを使います。LPC2388は72MHzで動作していますので、それを3分周した24MHzでタイマのMAT出力を反転させてやることで、12MHz出力を作りました。これで、きれいに問題解決できました。

品切れ

2010-04-01 12:48:44 | Weblog
今頃になって知ったのですが、トラ技別冊の「今すぐ使える!H8マイコン基板」が発売早々に品切れになっているようです。マルツが販売している拡張基板やLCD基板も品切れのようです。全部そろえるとそれなりの値段になると思うのですが、スゴイ人気ですね。H8というブランドの強みでしょうか?あるいは、「オシロスコープ」という実利的なアプリケーションが値ごろ感と工作ごごろを煽るのでしょうか。

そんななか、CQ出版では「CQ出版社基板付きフェア」をいくつかの書店で開催中のようです。取り扱い商品の中に「H8マイコン基板」が含まれているところを見ると、近々増刷(増産?)されるということなんでしょうか?

付録基板といえば、インターフェース6月号のSH-2Aも楽しみなところです。以前のSH基板は封も切らずに死蔵したままなのですが、RAM 1M, LCD出力機能ありとか言われると、やはり興味を惹かれます。CQ出版の広告宣伝のページを見ると、6月号連動広告企画案内の文書が出ています。このとおりの内容になるとすれば、最初からLCD制御の解説記事が載るようです。拡張基板は3.5インチLCDのようですが、これは「H8マイコン基板」とは別ものなんだろうか?あるいは、共通仕様かな?