awawa's report: 電子工作、その他趣味についての記録日記ブログです。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
この間からしばらく実験していたシリアル系モジュールのうち、SPIについての実験成果をまとめました。
実験:AVR SPIインターフェース(ドットマトリックスLEDの制御)
http://awawa.hariko.com/avr_spi_hc595.html
マイコンで多数の入力・出力を必要とする回路を作っているとき、ポートの本数が足りなくなってしまう、ということがよくあります。 汎用ポート数の多いデバイスに変更する、というのが簡単で確実な解決策ですが、状況によっては、シリアル→パラレル変換を利用してポート数を増やすこともできます。
記事中では、無理やりMISOを入力して実験していますが、色々とタイミングを考察+観察すると、HC595だけでは難しいようです。(とりあえず動作してはいますが)
ちゃんとしたタイミング設計なら、あと一つHC74などを後段に追加して半クロック遅延させてあげないといけないように思いますが、今回は体力切れw。
ともかくも、データシートを読んでいるだけではなかなか理解できない部分、特にクロックとMOSI/MISOの挙動について勉強になりました。
次回の実験では、USARTを使ってAVRのデバッグ環境を補強する、というのを計画中です。
I2Cも構想中ですが、まだおもしろいネタが出てきません。
では。
非公式参考資料:
拙訳:ATmega48/88/168データシート (SPIは18章)
http://awawa.hariko.com/chira-ura/index.html
実験:AVR SPIインターフェース(ドットマトリックスLEDの制御)
http://awawa.hariko.com/avr_spi_hc595.html
マイコンで多数の入力・出力を必要とする回路を作っているとき、ポートの本数が足りなくなってしまう、ということがよくあります。 汎用ポート数の多いデバイスに変更する、というのが簡単で確実な解決策ですが、状況によっては、シリアル→パラレル変換を利用してポート数を増やすこともできます。
今回の実験では、AVRマイコン(ATmega88)のSPIインターフェースと汎用ロジックIC(74HC595)を使用して出力ポートの本数を増加させ、ドットマトリックスLEDを点灯する実験を行っています。
記事中では、無理やりMISOを入力して実験していますが、色々とタイミングを考察+観察すると、HC595だけでは難しいようです。(とりあえず動作してはいますが)
ちゃんとしたタイミング設計なら、あと一つHC74などを後段に追加して半クロック遅延させてあげないといけないように思いますが、今回は体力切れw。
ともかくも、データシートを読んでいるだけではなかなか理解できない部分、特にクロックとMOSI/MISOの挙動について勉強になりました。
次回の実験では、USARTを使ってAVRのデバッグ環境を補強する、というのを計画中です。
I2Cも構想中ですが、まだおもしろいネタが出てきません。
では。
非公式参考資料:
拙訳:ATmega48/88/168データシート (SPIは18章)
http://awawa.hariko.com/chira-ura/index.html
PR
ATmega48/88/168 データシート翻訳
19. USART0 粗訳完了
http://awawa.hariko.com/chira-ura/index.html
後回しにしていた19. USART0を完了しました。
今までで一番長い章で、結構時間がかかりましたが、内容は比較的ストレートなAVRのUSART解説なので、技術的には、それほど難解な場所はありません。むしろ、USARTの構造や動作を勉強するのに役立つのではないかと思います。(自分にとって、勉強になりました)
なかなか秀逸な解説は、「クロック・リカバリ」、「データ・リカバリ」の部分で、非同期通信の基本動作を理解することができます。
今回、翻訳を進めながら、同時にSPI、USARTの実験をしていたのですが、やはり動くものがそばにあると理解が深まります。別の機会にかけたら、と思います。
さて、次回は中盤の山TWIにとりかかります。
これも色々と勉強になることが多いことを期待しています。
英語の話、というかメモ:
19. USART0 粗訳完了
http://awawa.hariko.com/chira-ura/index.html
後回しにしていた19. USART0を完了しました。
今までで一番長い章で、結構時間がかかりましたが、内容は比較的ストレートなAVRのUSART解説なので、技術的には、それほど難解な場所はありません。むしろ、USARTの構造や動作を勉強するのに役立つのではないかと思います。(自分にとって、勉強になりました)
なかなか秀逸な解説は、「クロック・リカバリ」、「データ・リカバリ」の部分で、非同期通信の基本動作を理解することができます。
- ボーレート・クロックに多少の誤差があっても、正しく受信できる仕組み
- どこまでの誤差が許容されるか、の予測と設計
- 倍速モードのメリットとデメリット
今回、翻訳を進めながら、同時にSPI、USARTの実験をしていたのですが、やはり動くものがそばにあると理解が深まります。別の機会にかけたら、と思います。
さて、次回は中盤の山TWIにとりかかります。
これも色々と勉強になることが多いことを期待しています。
英語の話、というかメモ:
- "clock/data recovery"
"recovery"を「リカバリ」とするか、「復元」とするか迷いました。「クロック・リカバリ」は比較的ハード用語として定着しているように思いますが、「データ・リカバリ」と書くと、どちらかというとハードディスクやOSの復旧のことのようなイメージがありました。
今回は、結局、「リカバリ」で統一。
今回は、結局、「リカバリ」で統一。
- "metastable"
直訳すると「準安定状態」。化学では頻出用語で、反応進行中の途中状態を表しますが、USARTの場合、"metastable"状態と"stable"状態とが交互に現れる、というニュアンスを出しているのでしょうか。めんどくさいので「不安定な状態」とだけ。
なぜか、CadsoftのEagle 5.9がよくseg faultで落ちるので、アップグレードしようとしたところ、Eagle 5.10がFedora12にインストールできない問題が発生。
openssl-0.9.8ライブラリがない、というエラーが出てインストールが開始しない。
調べてみると、FedoraはOpenSSL 1.0に移行してしまったので、Eagle(for Linux)が使っているlibssl.so.0.9.8が見つからないのでインストール時にエラーが出てしまうようです。
かといって、古いバージョンのバイナリを無理やりインストールしたら、システム全体の依存関係が壊れるだろうし、SSLみたいな大事なライブラリをEagleのためにダウングレードするのもいや。
なので、しかたなくソースからコンパイル。
[openssl.org]
によると、リリースは9月22日現在調べで下記の二つがlatest stableのようです。
http://forums.fedoraforum.org/showthread.php?p=1398059
(抜粋)
wget http://www.openssl.org/source/openssl-0.9.8o.tar.gz -O - | tar -xzv
cd openssl*
./config shared -fPIC --openssldir=/usr/local
make
sudo make install
Then add /usr/local/lib to the ld.conf list with ....
sudo bash echo "/usr/local/lib" > /etc/ld.so.conf.d/old-ossl.conf
exit
(ここまで)
その後、再起動するか、ldconfigを実行して完了
# /sbin/ldconfig
-fPIC オプションてのは、libssl.so.*を作成する場合に必要とのこと。 Position Independent Codeだそうです。 Eagle 5.10は無事インストールできました。
openssl-0.9.8ライブラリがない、というエラーが出てインストールが開始しない。
調べてみると、FedoraはOpenSSL 1.0に移行してしまったので、Eagle(for Linux)が使っているlibssl.so.0.9.8が見つからないのでインストール時にエラーが出てしまうようです。
かといって、古いバージョンのバイナリを無理やりインストールしたら、システム全体の依存関係が壊れるだろうし、SSLみたいな大事なライブラリをEagleのためにダウングレードするのもいや。
なので、しかたなくソースからコンパイル。
[openssl.org]
によると、リリースは9月22日現在調べで下記の二つがlatest stableのようです。
- 01-Jun-2010: OpenSSL 0.9.8o is now available, including important bug and security fixes
- 01-Jun-2010: OpenSSL 1.0.0a is now available, including important bug and security fixes
- 01-Jun-2010: Security Advisory: two security fixes
http://forums.fedoraforum.org/showthread.php?p=1398059
(抜粋)
wget http://www.openssl.org/source/openssl-0.9.8o.tar.gz -O - | tar -xzv
cd openssl*
./config shared -fPIC --openssldir=/usr/local
make
sudo make install
Then add /usr/local/lib to the ld.conf list with ....
sudo bash echo "/usr/local/lib" > /etc/ld.so.conf.d/old-ossl.conf
exit
(ここまで)
その後、再起動するか、ldconfigを実行して完了
# /sbin/ldconfig
-fPIC オプションてのは、libssl.so.*を作成する場合に必要とのこと。 Position Independent Codeだそうです。 Eagle 5.10は無事インストールできました。
久しぶりにリアル秋葉原で買い物してきました。
といっても、時間が無くて秋月と鈴商で要るもの(要らないもの)を買ってトンボ帰りという寂しい内容。
今回の主目的は、SPIの実験回路を組む部品調達。以下、一覧。
HC595(@120)とHC165(@80):鈴商
8ビットのシフト・レジスタ、今回の主役になってもらう予定。HC595がシリアル→パラレル、HC165がパラレル→シリアルで、それぞれMOSI, MISO端子につながることになります。真面目に回路を検討してないけど、多分この二人で大丈夫。
8x8の赤+緑ドット・マトリックスLED (@200):秋月
単色なら他にも安いところがありそうだけど、二色でこの値段は最安値?
ピン間隔が2.54mmにあってないけど、まあ仕方ない。
衝動買い/スプリング内蔵のピン・ヘッダ(@200):鈴商
ISP端子とか電源コネクタ部分の小型化に使えるかな、と思って買ってみた。
衝動買い/太陽電池の端切れっぽいもの(@100):秋月
レジのところにあった正体不明ジャンク扱いモノ。
用途なんてないんだけど、おもしろそうなので。
ほかに、ヘッダピンやヒューズ類の補充やらをして終了。
所要時間40分。2000円くらい消費。次は、月・木をさけて、もっとゆっくりまわりたいですね。
以上報告。
といっても、時間が無くて秋月と鈴商で要るもの(要らないもの)を買ってトンボ帰りという寂しい内容。
今回の主目的は、SPIの実験回路を組む部品調達。以下、一覧。
HC595(@120)とHC165(@80):鈴商
8ビットのシフト・レジスタ、今回の主役になってもらう予定。HC595がシリアル→パラレル、HC165がパラレル→シリアルで、それぞれMOSI, MISO端子につながることになります。真面目に回路を検討してないけど、多分この二人で大丈夫。
8x8の赤+緑ドット・マトリックスLED (@200):秋月
単色なら他にも安いところがありそうだけど、二色でこの値段は最安値?
ピン間隔が2.54mmにあってないけど、まあ仕方ない。
衝動買い/スプリング内蔵のピン・ヘッダ(@200):鈴商
ISP端子とか電源コネクタ部分の小型化に使えるかな、と思って買ってみた。
衝動買い/太陽電池の端切れっぽいもの(@100):秋月
レジのところにあった正体不明ジャンク扱いモノ。
用途なんてないんだけど、おもしろそうなので。
ほかに、ヘッダピンやヒューズ類の補充やらをして終了。
所要時間40分。2000円くらい消費。次は、月・木をさけて、もっとゆっくりまわりたいですね。
以上報告。
ATmega48/88/168 データシート翻訳
20. USART SPIモード 粗訳完了
http://awawa.hariko.com/chira-ura/index.html
19.USART0をスキップして、先に20章を翻訳。
あまり深い理由は無いけれど、なんとなく同じSPIを先にやった方が効率良さそうな気がしたので、19章をスキップしました。次は、19章の予定。
USART SPIモードとSPIの違いについては、20.7節によくまとまっています。
なぜ、こんなモードがあるのか、ちょっと不思議ですが、SPIを2系統使いたいときなどには良いのかも知れませんね。
英語の話:
SPIの"leading/trailing edge"のところで、シフト・レジスタの"sampling/setup"というのがあったのですが、この章にヒントがあって、次の訳語に変更しました。
では、今度こそ19章へつづく。
20. USART SPIモード 粗訳完了
http://awawa.hariko.com/chira-ura/index.html
19.USART0をスキップして、先に20章を翻訳。
あまり深い理由は無いけれど、なんとなく同じSPIを先にやった方が効率良さそうな気がしたので、19章をスキップしました。次は、19章の予定。
USART SPIモードとSPIの違いについては、20.7節によくまとまっています。
- USART SPI > SPIな点
- 送信器が二重バッファ構造(USART SPI)
- USART SPIの方が受信器のバッファが深い
- USART SPI < SPIな点
- 書き込み衝突ビット(WCOL)はSPIのみ
- USART SPIはマスター動作のみ対応
- 倍速モードはSPIのみ
- 割込みタイミングが非互換
- 当然ながら、端子が違う
なぜ、こんなモードがあるのか、ちょっと不思議ですが、SPIを2系統使いたいときなどには良いのかも知れませんね。
英語の話:
SPIの"leading/trailing edge"のところで、シフト・レジスタの"sampling/setup"というのがあったのですが、この章にヒントがあって、次の訳語に変更しました。
- sampling = 「ラッチ動作」
- setup = 「シフト動作」
では、今度こそ19章へつづく。
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
フリーエリア
最新記事
(05/04)
(04/16)
(03/31)
(01/29)
(10/23)
最新トラックバック
ブログ内検索
最古記事
(02/23)
(02/24)
(03/08)
(03/18)
(06/24)
P R