ということで、当初 (SPIモジュールではなく)USARTを使ってSDメモリカードとSPI通信しようと画策していたのだが、ちょいと予想外の展開になってきたため、今日のところは回路を少しいぢったことを、ごく軽く紹介しておきたいと思う。
早速内容の方なのだが・・・
ジャンパーがまた増えちゃいました
基板の空きスペースが少ないので、本当はもうCPUボード上のハードはこれでFixにしておきたかったんだけど・・・ USARTとSPIのピン割り当てが違っているので、両者を切り替えて試したければ ジャンパーピンを立てるしか道はないということですな。
細かい話で恐縮だが、SPIインターフェースに1バイトのデータを投げる(結果は受け取らない)処理を例にしてみた。
元々のFatFSのサンプルプロジェクト(megaシリーズAVR)に入っていた処理は、こんな感じ。
#define xmit_spi(dat) \
SPDR=(dat); loop_until_bit_is_set(SPSR,SPIF)
簡単でしょ?!
SPIのデータレジスタに値を書いて、送信完了まで待つだけだ。
ちなみに便宜上改行を入れてあるが、実際には1行で書いてある。
これが、XMegaの USARTを使う場合はこうなる。
#define xmit_spi(dat) \
while((USARTE1.STATUS & USART_DREIF_bm) == 0); USARTE1.DATA=(dat); \
while((USARTE1.STATUS & USART_RXCIF_bm) == 0); USARTE1.DATA
送信データレジスタに空きができるまで待ち、データを書く。
そして送信(ダミーデータ受信)完了まで待って、ダミーデータを読まないといけない。
どうやら、ステータスレジスタやデータレジスタの読み込みが内部動作と関連付けられているようで、手順を省略してしまうと、理屈では問題ないはずなのに正しく動作しないという結果が待っている。
※初心にもどってちゃんと手順どおり書けば良いんだろうけど、「最初はデータがないからフラグは常に立ちっぱなし」などと端折るとハマることになる。 私も恥ずかしながら、何時間か無駄にしたからね~
ちょっと長くなったので、先を急ごう。
そして、XMegaのSPIを使う場合はこう。
#define xmit_spi(dat) \
SPIE.DATA=(dat); \
while((SPIE.STATUS & SPI_IF_bm) == 0); SPIE.DATA
余分なフラグチェックは少しでも減らした方が幸せになれるはずだよね
実際の基板はこんな感じに。
下側の基板(上辺中央やや右)にある黄色いジャンパーピンが、今回の追加部分ね。
そもそも何故にUSARTかというと、DMAが送受信とも使えるからという理由だったと記憶している。 でも今はまだDMA使っていないし、このまま使う必要が出てこない可能性もあると
まぁ、あとしばらくコードをいぢりながら悩んでみますかね・・・
★ 関連記事一覧 ★
-
秋月300円液晶応用準備の巻 (Part-7.5) ←本記事
※SDメモリカードアクセス用に使っていたUSARTの挙動が変・・・ なので、SPIと切り替え可能に変更(苦笑)
2011/05/26(木) 23:55
- 秋月300円液晶応用準備の巻 (Part-7)
※FatFSの移植も終盤に、テストルーチンが動き出して何とか画像が表示できた (^^)_v
2011/05/22(日) 23:55
- 秋月300円液晶応用準備の巻 (Part-6)
※ようやく配線が完了したSDカードソケット、次はFatFSの移植作業だ・・・
2011/05/14(土) 23:55
- 秋月300円液晶応用準備の巻 (Part-5)
※前回動かなかったテスト環境を修復、プログラム領域に持っている固定パターンを表示してみた。
2011/05/03(火) 22:00
- 秋月300円液晶応用準備の巻 (Part-4)
※取り急ぎ、表示データ格納用にRAMをあてがってみたが・・・ 何か、変!
2011/05/01(日) 23:25
- 秋月300円液晶応用準備の巻 (Part-3)
※とりあえず、AVRマイコン XMega64A3を接続して固定パターンを出してみた・・・
2011/04/17(日) 23:55
- 秋月300円液晶応用準備の巻 (Part-2)
※2回目は、±12Vの液晶駆動電圧発生回路やバックライトON/OFF回路の手当などを行ってみた・・・
2011/03/27(日) 23:55
- 秋月300円液晶応用準備の巻
※とりあえず準備を始めてみたのだが・・・ まだまだ作業は進捗せず。
2011/03/21(月) 23:55
- AVR-Xmega活用準備の巻 ~ (Part-2:Lチカ編)
※Xmega活用準備作業継続。 何とか電源を配線して“Lチカ”させてみた・・・
2011/02/12(土) 23:55
- AVR-Xmega活用準備の巻
※Xmega活用準備作業開始。 今日は変換基板にチップを載せてGNDラインを配線したところまで・・・
2011/02/06(日) 23:55
4 件のコメント:
新しいコメントは書き込めません。