AE-ATmegaのあれこれ(その1)

秋月キットのATmega168/328マイコンボードキット AE-ATmegaを組み立てていて疑問に思っていたことを調べたのでまとめておきます。参照する回路図は2014/03/21現在のものです。 キットの組み立て説明書にある回路図と、基板単体の回路図は同じよ…

JTAGICE mkIIとICSP変換

AVR関係のプログラム開発にはKEE JTAGICE mkIIを使用しています。しばらくターゲットにAE-ATmegaを使用するので、JTAGからICSPに変換する必要があります。 そこでブレッドボード用のジャンパーワイヤ(オス-メス)を使用して変換ケーブルの代用にしています。 …

Atmel Studio(6.1)からKEE AVR JTAGICE mkIIへ接続できない

とっても久しぶりにAVRのプログラムを書こうとしたら開発環境がAVR StudioからAtmel Studioに変わっていました。AVR32 Studioと統合したみたいですね。浦島太郎状態です。 最新版のAtmel Studio 6.1をダウンロードしましたが、KEE AVR JTAGICE mkIIへ接続で…

秋月キットAE-ATmegaを組んでArduino化

もちろん問題なく動作しました。基本的には、製品紹介ページにある組み立て説明書通りにすれば仕上がります。 Arduino化するため、16MHzの水晶振動子を選択(20MHzも付属)。USBシリアル変換モジュール(AE-UM232R)もジャンパ・ピンをカットして、半田によりシ…

Arduino始めました

久しぶりのブログ更新になってしまいました。 私の頭はシングル・タスク処理しかできないようで、忙しくなると他のことが手に付かなくなり、ブログを書いていたことすら忘れてしまいます。 最近、AVR関係でJTAGデバッガを久しぶりに使い出したところ、トラブ…

AT32UC3BのPDCA(読んでみただけ2)

前回の続き。 ドキュメント「AT32UC3B Series Preliminary」の「19. Peripheral DMA Controller」部分。 19.4.8 Interrupts IER(Interrupt Enable Register)に書くことで割込を有効にすることができ、IDR(Interrupt Disable Register)に書くことで割込を無効…

OLIMEXにFAXが送れない

OLIMEXにオーダーのメールを送った後、返信に付いてきたPURCHASE ORDERをFAXしようとした。 以前に4回ほど経験があるので慣れたものだったのだが、今回FAXが送信できなかった。引っ越しした関係でひかり電話(NTTのIP電話の一種、と言えばいいのかな?)に変…

チップ部品サイズの対応表

回路図CADソフトEAGLEのライブラリに登録されているチップ部品は、メトリックとインチが混在している。アホな私は、そのサイズがどちらのものか判らず毎回調べているが、さすがに面倒に思えてきたので対応表にしておく。これがすべてではないがこれだけあれ…

AT32UC3BのPDCA(読んでみただけ)

今回はAT32UC3BのPDCA(Peripheral DMA Controller)を読んでみる。 ドキュメント「AT32UC3B Series Preliminary」の「19. Peripheral DMA Controller」部分。 19.1 Features USARTとSSC、SPIのような周辺モジュールとの間で転送を起動する。 チャンネル当たり…

AVR32UC3BのHMATRIX(まとめ)

AVR32UC3BのHSB Bus Matrix(HMATRIX)(Rev: 2.3.0.1)についてまとめる。以下も参照のこと。 AVR32UC3BのHMATRIX(読んでみただけ) AVR32UC3BのHMATRIX(読んでみただけ2) マスターのメモリ・マッピングについてはよく解らない。 「9.2 Physical Memory Map」で…

AVR32UC3BのHMATRIX(読んでみただけ2)

HMATRIX関係の話は他の章にも分散しているので、そちらも読んでみる。 9.3 Bus Matrix Connections 未使用エリアへのアクセスはその様なアクセスを要求したマスターにエラーを返す。 バス・マトリックスはいくつかのマスターとスレーブを持つ。各マスターは…

AVR32UC3BのHMATRIX(読んでみただけ)

簡単なようでややこしい感じのするHMATRIX(HSB Bus Matrix)。理解していなくても動作しそうであるが、後でバグの原因になると嫌なので、やはり読んでおくことにした。 対象MCUはいつも通りAT32UC3B0256である。ドキュメントは「AT32UC3B Series Preliminary …

回路図チェックリスト

「AVR32 UC3B Schematic Checklist」(ドキュメント番号AVR32715)というドキュメントがあって、AVR32UC3B周辺の回路が要求通り正しく設計できているかチェックできる。今回は回路図を作った後にこのドキュメントを発見してしまったが、回路設計前に読んでおく…

AT32UC3B1〜で減らされたUSARTモジュール

AVR32UC3Bシリーズの製品AT32UC3B0〜は64pinパッケージなのに対し、AT32UC3B1〜は48pinパッケージである。ピンが減らされている分、モジュールの数も減らされている。 それ自体は至極まっとうなことであるが、どのモジュールが削られているのか全く説明がな…

JTAGコネクタでdebugWIRE接続

AVR

AVR32ボードをEAGLEで設計し、OLIMEXで製造してもらおうとしたが、基板面積に余裕があり、ついでにATTiny13Aの勉強用ボードを作る予定。AVR32も初めてだが、AVRも初めてである。 KEE AVR JTAGICE mkII(以下JTAGICE)をAVR32だけでなくATTiny13Aにも使用する。…

AVR32の割込って...遅い?

最近徐々にマニュアルの周辺モジュールを読み始めているのだが、やはりAVR32って割込が遅いようだ。割込や例外が発生して、ハンドラ先頭命令が実行されるのは早いのだが、ハンドラ本体処理に至までが長いのだ。ソフトウェアにより割込グループと割込ラインを…

EAGLEにおけるAT32UC3Bのパッケージ for OLIMEX

私の使っているEAGLE(4.15)の話(最新バージョンは持っていないので知らない)。 CADツールEAGLEの製品付属ライブラリには当然AVR32が含まれていない。こういうときは自分でライブラリ(シンボル、パッケージ、デバイス)を作る必要がある。シンボルが回路図用、…

AVR32 Studioがアップデート(2.3)していた

AVR32 Studio機能でプロジェクトを新規作成すると、ソースファイルを生成してくれるが、どうもこのファイルが古いということに気が付いた。 ソースファイルの元は、AVR32 UC3 Software Frameworkのはずだが、最新版Ver 1.5.0ではなく1.4.0のものが利用されて…

割込処理の高速化(案)

割込処理(exception.xの_int0〜_int3とintc.cの_get_interrupt_handler)を見てスピードの点で不満を持ち、もっと高速化できないものか考えてみた。実際に問題があって高速化するのではないが、「割込ルーチンは出来るだけ短く(早く)」が基本なので。 例とし…

AVR32関連のまとめ

(随時追記) プリプロセッサ avr32-gccのAVR32関連マクロ AVR32 Studio Standalone版アプリケーション構成ファイル AVR32周辺モジュール AVR32UC3BのHMATRIX(まとめ) EAGLE チップ部品サイズの対応表

AVR32 Studioへリンカ・スクリプトを追加

AVR32 Studioから既存プロジェクトに新規作成したリンカ・スクリプトを追加する。OSが存在する場合、まずリンカ・スクリプトでリンカを操作することはないので仕方がないのかもしれないが、組み込みだとリンカ・スクリプト修正が必要となることが多い。 ファ…

avr32-gccのAVR32関連マクロ

以前、AT32UC3B0256における定義済みマクロを紹介した。これらは-marhオプションや-mpartオプションにより定義が変わったり、定義されなくなったりする。 今回はgccのソースからAVR32関係のマクロ名を探してみた。当然だがこれらはコンパイル・オプションに…

AVR32のMPUドライバの例題を使ってみる(その2)

AVR32のMPUドライバの例題を使ってみる(その1)からの続き。 まずはMPUドライバのIntroductionを読んでみる。形式的な内容なので「Example operating mode:」以降から。 この例題は、MPUARIエントリと、MPUARDエントリの数を表示することにより開始する。 メ…

AVR32のSRAM開始アドレス&NULLポインタ問題

今頃気が付いたが、現在ターゲットにしているAT32UC3B0256はSRAMがアドレス0から割り付けられている。つまり変更可能な変数を定義したとき、この変数がSRAM領域先頭に割り付けられると、変数のポインタが0となる。 一方NULLポインタは通常0であり、実際avr32…

AVR32のMPUドライバの例題を使ってみる(その1)

「Memory Protection Unit」のことであって、世間一般の「Micro Proccessing Unit」のことではない(私は初め間違えた)。MPUは、MMU(Memory Management Unit」の簡略版の位置付けで、仮想記憶まではサポートしていない。またMMU同様、CPUに近いモジュールのた…

スタック・サイズのデフォルト値

リンカ・スクリプトまで追いかけて、スタック・サイズを規定するシンボルが_stack_sizeであることまでは判ったが、そのシンボル定義が見つからない。 リンク・オプションでもないらしい。じゃあリンカそのものに埋め込まれているのか? という話の続きである…

AT32UC3B0256のデフォルト・リンカ・スクリプト

AT32UC3B0256のスタンドアローン版アプリケーションで暗黙的に使用されるリンカ・スクリプトを読んでみる。リンカ・スクリプトの格納位置についてはこちらを。 今回読むリンカ・スクリプトはavr32elf_uc3b0256.xだ。 参考URL GNU リンカ LD の使い方 − 3. リ…

デフォルトのリンカ・スクリプトの場所

以前「スタックの指定はどこにあるのだろう?」みたいなことを書いたが、セクションの配置はリンクのお仕事なので、オプションに指定がなければ、リンカ・スクリプトにあるだろうとは察しがついていた。 今まではソースコード中心に見てきたので放っておくこ…

AVR32 StudioのStandalone版アプリケーション構成ファイル

AVR32 Studioのプロジェクト作成で「AVR32 C Project from template」からStandalone版のアプリケーションを指定したとき、作成される各種ファイルや設定等について記事をまとめた。 対象ボードはEVK1101で、搭載チップはAT32UC3B0256。 このページはまとめ…

newlib内のオブジェクトファイルとシンボルの一覧

libnewlib_addons-at32ucr1-speed_opt.a内のオブジェクトファイルとシンボルの一覧です。descriptionは該当APIを使うことがあったら書き入れていく。あまり使うことが無いような気もするけど。 object filesymboldescription cpu.oset_cpu_hz get_cpu_hz ude…