2012-01-01から1年間の記事一覧

LPC1114FN28/102 (23) -- ICSP 接続で PIC32MX のフラッシュに書き込む (8)

icsp1114 のソース・パッケージを公開しました。(→ こちら) それにともない、HEX パッケージは削除しました。 参考にした「pic32prog」が GPLv2 ライセンスなので、CMSIS ライブラリ関連を除き、GPLv2 ライセンスを継承しています。

LPC1114FN28/102 (22) -- ICSP 接続で PIC32MX のフラッシュに書き込む (7)

LPC1114 用のプログラムができました。 Yahoo! ボックス上においてあります。(→ こちら) とりあえず、HEX パッケージのみを公開します。 ソース・パッケージは近日公開の予定です。 (2012/12/30 追記: ソース・パッケージを公開しました。それにともない、HE…

LPC1114FN28/102 (21) -- ICSP 接続で PIC32MX のフラッシュに書き込む (6)

「Psuedo Operation」の「SendCommand()」は JTAG TAP (Test Access Port) のインストラクション・レジスタ (IR) に値を設定するもので、「XferData()」はデータ・レジスタ (DR) に値を設定すると共に、その値が書かれる前の DR の値を読み出す操作です。 両…

LPC1114FN28/102 (20) -- ICSP 接続で PIC32MX のフラッシュに書き込む (5)

JTAG インターフェースには (プローブ側から見れば) TDI と TMS の 2 本の出力があり、TDO の 1 本の入力があります。 TDI と TMS は独立で、ハードウェア的に言えば、それぞれがパラレル・データから「シリアライズ」されてシリアル・データとして出力され…

LPC1114FN28/102 (19) -- ICSP 接続で PIC32MX のフラッシュに書き込む (4)

前回述べた「キー・シーケンス」を発行したあと、ターゲットが正常に ICSP モードに移行したかどうかを簡単に直接的に調べる方法は存在しないようです。 プローブ側から ICSP モードで、まず IDCODE レジスタやステータス・レジスタを読み出して、期待した値…

LPC1114FN28/102 (18) -- ICSP 接続で PIC32MX のフラッシュに書き込む (3)

「110 円のマイコンで 220 円のマイコンに書き込む」シリーズの 3 回目ですが、「書き込む」側と「書き込まれる」側を明確にするために、タイトルを少し変えました。 進展としては、いわゆる「LED チカチカ」プログラム (Microchip 社のコンパイラ XC32 に付…

LPC1114FN28/102 (17) -- ICSP 接続で PIC32MX のフラッシュに書き込む (2)

前回の記事の最後に示した図を下に再掲しますが、これは Microchip 社のドキュメント PIC32MX Flash Programming Specification (DS61145 Revision K, July 2012) の pp.13 「Figure 5-4」を書き直したものです。 JTAG の 1 クロック分と、2-wire 4-phase IC…

LPC1114FN28/102 (16) -- ICSP 接続で PIC32MX のフラッシュに書き込む (1)

LPC1114FN28 を使って、PIC32MX マイコンのフラッシュにプログラムを書き込む実験をしています。 4 線式 JTAG 接続ではなく、2 線式の ICSP 接続 (2-wire 4-phase) を LPC1114 の SPI (4 ビット転送モード) を使って実現しています。 PC とはシリアル接続を…

LPC1114FN28/102 (15) -- リニア PCM プレイヤー (3)

LPC1114 では GPIO (汎用入出力ポート) は AHB に接続されており、ウェイト・ステートなしで動作します。 そのため、ポートに対して出力する場合の Cortex-M0 の STR 命令の実行クロック数は、本来の値の「2」から増えることはありません。 逆に言えば、GPIO…

LPC1114FN28/102 (14) -- リニア PCM プレイヤー (2)

リニア PCM プレイヤーでは、MMC/SD カードから読み出したウェーブ・データを、せいぜい 8 ビット・オフセット・バイナリ形式から 2 の補数 16 ビット・データに変換する程度で、特に複雑な「処理」はせずに DAC に流しこみます。 特に 16 ビット・ステレオ…

LPC1114FN28/102 (13) -- リニア PCM プレイヤー (1)

LPC1114FN28/102 で MMC/SD カード内の (mp3 でない) リニア PCM ファイルを再生するプレイヤーを作っています。 とは言っても、実用的なものを目指してはいないので、持ち運びできる形にするわけではありません。 MMC/SD カードは「ネイティブ・モード」で…

LPC1114FN28/102 (12) -- IRQLATENCY レジスタ (5)

STMicroelectronics 製の Cortex-M3 マイコン STM32F10x シリーズでは、フラッシュからの読み出しに際して挿入する必要のあるウェイト・ステート数 (WS) について、システム・クロック (SYSCLK) との間に次のような関係があります。 0 MHz 24 MHz 48 MHz 「S…

LPC1114FN28/102 (11) -- IRQLATENCY レジスタ (4)

ARM 社発行の文書 Application Note 226Using the Cortex-M0 on theMicrocontroller PrototypingSystem には、「HMALC-AS3」という「Microcontroller Prototyping System」についての説明が記述されています。 その実体は、「CPU FPGA」と「DUT FPGA」と称す…

LPC1114FN28/102 (10) -- IRQLATENCY レジスタ (3)

ユーザ・マニュアルなどの技術文書に明確な記載はないものの、ブローシャなどプレゼンテーション用資料には「割り込みレイテンシ 16 クロック」と記載されいる数値と、LPC1114FN28/102 の実測結果の 22 クロック程度の数値との違いが腑に落ちず、いろいろ「…

LPC1114FN28/102 (9) -- IRQLATENCY レジスタ (2)

SysTick タイマは、24 ビット幅のダウン・カウンタによる簡単なインターバル・タイマで、一定周期で CPU に割り込みをかけるのを目的としています。 コア・ペリフェラルとして ARM 社から供給される IP 内に含まれるので、半導体ベンダ独自の周辺モジュール…

LPC1114FN28/102 (8) -- IRQLATENCY レジスタ (1)

LPC1114FN28/102 で割り込みレイテンシを調べていて、LPC111x / LPC11C1x のユーザ・マニュアル (UM10398) には記載がない「IRQLATENCY」レジスタ (アドレス 0x40048170) が存在し、機能することを確認しました。 「IRQLATENCY」レジスタは、 LPC11Uxx のユ…

円周率の計算 (15) -- BBP 公式による計算 (4)

ATtiny10 版のプログラムができました。 全てアセンブラ記述で、プログラム・サイズは 860 バイト (430 ワード) です。 思ったより小さくなりました。 SRAM の使用量はデータ 22 バイト、スタック 6 バイトの計 28 バイトで、まだ 4 バイト余っています。 内…

円周率の計算 (14) -- BBP 公式による計算 (3)

今回は PC (intel x86 プロセッサ) 用の C ソース・プログラムを示します。 前々回の「pi_BBP.pde」ファイルと、下の「pi_BBP.c」ファイルを同じフォルダに置き、「pi_BBP.c」をコンパイルするだけです。 整数演算だけなので、math ライブラリ (libm) をリン…

円周率の計算 (13) -- BBP 公式による計算 (2)

今回は AVRStudio で ATtiny13A 用にコンパイルするソースファイル一式を掲載します。 使用したのは AVRStudio 4.19 (build 730) gcc Version 4.5.1 (AVR_8bit_GNU_Toolchain_3.3.0_364) の組み合わせで、他の環境では試していません。 まず、AVRStudio で A…

円周率の計算 (12) -- BBP 公式による計算 (1)

フラッシュ ROM 2 K バイト、RAM 128 バイトの ATtiny2313 で円周率Πの値を BBP 公式 (後述) を使って UART 経由で 16 進数で 4000 桁出力するという記事 (ドイツ語のサイト) 4000 Stellen von Pi mit ATtiny2313 – Mikrocontroller.net があることを知り、…

LPC1114FN28/102 (7) -- 円周率の計算 (11)

LPC1114FN28/102 で Spigot アルゴリズムを使って円周率Πの値 500 桁を UART 経由でシリアル回線に出力するプログラムを作りました。 プログラムの大きさは、フラッシュに書き込むサイズとして 0x47c = 1148 バイトです。 ターミナル・ソフト (tt.exe) でキ…

LPC1114FN28/102 (6)

外付けディジタル・オーディオ DAC および内蔵タイマを PWM DAC として使って約 440 Hz の正弦波を発生させる前回のプログラムを、LPCXpresso IDE でビルドして動作させることができました。 トラ技 2012 年 10 月号付属の DVD-ROM に収録されている LPCXpre…

LPC1114FN28/102 (5)

LPC1114FN28 の内蔵タイマを利用した PWM DAC および外付けディジタル・オーディオ DAC でオーディオ信号を発生させるプログラムを作りました。 プログラムのソースは記事の最後で示します。 外付けディジタル・オーディオ DAC は、いつもの ROHM BU9480F で…

LPC1114FN28/102 (4)

Windows 用のターミナル・ソフトとしては、「TeraTerm」と、Windows XP までは標準でバンドルされていた「ハイパーターミナル」とが有名ですが、これらはいずれもシリアル回線が接続されると有無を言わせず DTR(Data Terminal Ready) をアサートします。 こ…

LPC1114FN28/102 (3)

「Flash Magic」の設定としては、まず、トランジスタ技術 2012 年 10 月号 pp.83 にあるように「Step1 - Communications」の部分で Select : LPC1114/102 COM Port : COM x Baud Rate : 115200 Interface : None (ISP) Oscillator (MHz) : 12 のように設定し…

LPC1114FN28/102 (2)

シリアル接続で LPC1114FN28/102 のフラッシュに書き込むための「公式」のツールが「Flash Magic」です。 RS232C 制御信号の DTR/RTS を LPC マイコンの ~RESET/~BOOT ピンに接続しておくと、Flash Magic の機能を利用してターゲット・マイコンを自動的にリ…

LPC1114FN28/102 (1)

現在、VCF の実験は一時中断して「トランジスタ技術」誌 2012 年 10 月号付属の LPC1114FN28/102 (NXP 製、Cortex-M0 コア、600 mil 幅 28 pin DIP、最大クロック 50 MHz、フラッシュ ROM 32 KB、SRAM 4 KB) の実験をしています。 フラッシュ・メモリの書き…

OTA/VCA/PGA を使用した 2 次特性 VCF (8)

3.3 V 単一電源での実現を念頭に置いたベース結合型のアンチログ回路を下に示します。 前回同様、LTSpice での回路シミュレーションが目的なので、実際に動作させるには追加の回路要素が必要になります。 アンチログ出力側の Q3、Q4 周辺の回路は前回のエミ…

OTA/VCA/PGA を使用した 2 次特性 VCF (7)

OTA 2 個でカットオフ周波数とレゾナンスを電圧制御できる 2 次特性 VCF 用のバイアス電流を作成するアンチログ回路について、もう少し具体的な話をします。 今回はエミッタを結合した差動ペアのベース間に CV を加える一般的な形式のアンチログ回路について…

OTA/VCA/PGA を使用した 2 次特性 VCF (6)

これまで OTA の SPICE マクロ・モデルとして、NS 社の web サイトからダウンロードできる LM13700 のモデルを使ってきましたが、今回 JRC (新日本無線) の web サイトからダウンロードできる NJM13600 の SPICE マクロ・モデルを使ってみてうまく行ったので…