Hatena::Groupecrafts

Chuckの電子工作

趣味の電子工作を中心に書いています。音関係工作はg:emusic:id:Chuckどうぞ。


検索エンジンより飛んでこられたかたで、お探しのキーワードが見つからないかたは、↑の検索をご利用ください。

2009-02-27

I2C動いた動いた

I2Cがちょっと進展 - Chuckの電子工作 - Ecraftsグループから続き。

地面から縁側(PCINT0)に上げて回して裏で積まれたデータをパースして終わったら返ろうと思ったけれど、考えが浅くてそういう動作をするようにコードが書かれていませんでした(縁側からふたたび地面に降りられない場合があった)。対策が難しいので諦めて地面で回してI2Cで送られたデータをパースするように変更してうまく動くようになりました。

他にもI2Cで受け取ったデータの演算に時間がかかっているうちにはまりこんでしまうこともありました。I2Cスレーブのドライバがクロックストレッチの機能を持っていないためです。

ということで、完成ブツを置いてみました。WinAVR-20080512 でビルドしたものです。

no title

WinAVR-20081205 ではビルドできませんでした。リンク時に、

c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_14':
(.text+0x0): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_default' defined in .vectors section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0x0): relocation truncated to fit: R_AVR_13_PCREL against symbol `__init' defined in .init0 section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0x2): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_1' defined in .text section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0x4): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_2' defined in .text section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0x6): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_3' defined in .text section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0x8): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_4' defined in .text section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0xa): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_5' defined in .text section in osc.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0xc): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_6' defined in .text section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0xe): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_7' defined in .text section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0x10): relocation truncated to fit: R_AVR_13_PCREL against symbol `__vector_8' defined in .text section in c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o
c:/winavr-20081205/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn85.o: In function `__vector_default':
(.vectors+0x12): additional relocation overflows omitted from the output
make: *** [osc2.elf] Error 1

とメッセージがずらりと出てエラーになってしまいました。

リンク時になにか指定を与えてあげる必要があるのかもしれません。とりあえずは波形テーブルの記述位置をずらそうかなと思います(セクションでやるべき?)。

ChuckChuck2009/03/17 22:13特に深く追求していませんでしたが、WinAVR-20090313 にあげたら問題なくビルドできるようになりました。AVR StudioでWinAVRを切り替えられるので便利しています。

トラックバック - http://ecrafts.g.hatena.ne.jp/Chuck/20090227