C8051F410について
下記は、すべてC8051F410+SDCC(コンパイラ)を前提にしている。非常に早いマイコン(24.5MIPS、裏技では50MIPSでも動くらしい??)であり、簡単なシステムには十分過ぎる処理能力を持っている。が、いかんせん内部ROMが少なく、中規模なソフトウェアを書くとすぐに一杯になってしまう。大きなシステムなどには向かないかもしれないが、趣味や小~中程度のシステムには十分な性能だと思う。日本で流行らない理由は、関連文書が少ないことと秋月で取り扱ってないからだと思う。文書は
1冊だけ出ている。
デフォルトでは、Keilと呼ばれる純正コンパイラがインストールされているが、無償版では5kbyte?の容量制限があるため、フリーであるSDCCコンパイラを使用する(レジスタ名などは基本的にKeilと同じ、ただKeilにはある変数型などが一部SDCCには無い。そのため、純正サンプルファイルをそのままコンパイルしようとすると、エラーとなる。逆にいえば、そこさえ上手く直せば、大体動く)。
ダウンロードしたSDCCをインストールしたら、純正統合開発環境Silicon Laboratories IDEにおいて下記を実施する。[Project]->[Tool Chain Integration]で、SDCCを選択した後、CompilerのCommand line flagsの欄に
【-c --debug --stack-auto --nooverlay --model-small --use-stdout -V -I“C:\program files\sdcc\include" -D__SDCC__ -D__F340_VER__ --iram-size 0x0100 --xram-size 0x0400 --code-size 0xfc00】
LinkerのCommand line flagsの欄に
【--debug --use-stdout -V --stack-auto --model-small --xram-loc 0x0800】
UART通信
UARTを用いたバイナリ送信のみ:
サンプル
UARTを用いた割り込み送受信:
サンプル
TIMER
A/Dコンバータ
1chだけのADC:
サンプル
複数chのADC:
サンプル
A/Dは、0-2.7[V](core電圧)までしか入力することができない。
Vregには5[V]まで入力してもOKだが、コア動作電圧は3.3[V]以下であるため入力レンジが小さい。ただし、デジタルI/Oに関しては5Vトレラントになっているため、5VまでOK
SPI
SPIモジュールを使用:
サンプル
SPIモジュール(12bit読み込み):
サンプル
SPI割り込みを使用(12bitデータを読み込むこともできる):
サンプル
SMBus(I2C)
SMBusことI2Cモジュールを使用:
サンプル
※ただし、送信のみ(受信は無し)
RESET
WDT
PWM(PCA)
INT0
外部ピンを使用した割り込み:
サンプル
ただし、指定できるピンは最大で2本まで。
RTC
内部の32kHz発振子を使う方法:
サンプル
KeilのExampleをSDCCで動くようにしただけで動作がよく分からない。
購入及びその他情報について
個人で入手可能なルートとしては、DigiKeyやチップワンストップがある。まだ?日本ではあまりポピュラーではない。オフィシャルサイトにも結構な技術資料が掲載されているので、参考にすると良い。が、問合せページがなぜか死んでおり、問合せできない(仕方ないので、代理店の方に質問したりしている。丁寧に対応して頂いた)。
KeilからSDCCの移植:
リンク
C8051におけるSDCCによる記述:
リンク
ペリフェラル関連:
リンク
備忘録
- Timer0とTimer2を併用する場合は、Timer2から初期化すること。そうしないとなぜかTimer0の挙動(UART)がおかしなことになる。
- C8051で使用するデバッガ情報、リンク
最終更新:2015年07月31日 11:45