C8051

C8051F410について

下記は、すべてC8051F410+SDCC(コンパイラ)を前提にしている。非常に早いマイコン(24.5MIPS、裏技では50MIPSでも動くらしい??)であり、簡単なシステムには十分過ぎる処理能力を持っている。が、いかんせん内部ROMが少なく、中規模なソフトウェアを書くとすぐに一杯になってしまう。大きなシステムなどには向かないかもしれないが、趣味や小~中程度のシステムには十分な性能だと思う。日本で流行らない理由は、関連文書が少ないことと秋月で取り扱ってないからだと思う。文書は1冊だけ出ている。

デフォルトでは、Keilと呼ばれる純正コンパイラがインストールされているが、無償版では5kbyte?の容量制限があるため、フリーであるSDCCコンパイラを使用する(レジスタ名などは基本的にKeilと同じ、ただKeilにはある変数型などが一部SDCCには無い。そのため、純正サンプルファイルをそのままコンパイルしようとすると、エラーとなる。逆にいえば、そこさえ上手く直せば、大体動く)。
  • SDCCのダウンロード
ここか、ここ、あるいはGoogleで検索
  • 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

TIMER0を使用:サンプル
TIMER2を使用:サンプル
TIMER0/2を使用:サンプル

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

RESET理由などをUARTで出力する:サンプル

WDT

ウォッチドッグタイマを使用する:サンプル

PWM(PCA)

8bitのPWM出力(97kHz):サンプル

INT0

外部ピンを使用した割り込み:サンプル
ただし、指定できるピンは最大で2本まで。

RTC

内部の32kHz発振子を使う方法:サンプル
KeilのExampleをSDCCで動くようにしただけで動作がよく分からない。


購入及びその他情報について

個人で入手可能なルートとしては、DigiKeyやチップワンストップがある。まだ?日本ではあまりポピュラーではない。オフィシャルサイトにも結構な技術資料が掲載されているので、参考にすると良い。が、問合せページがなぜか死んでおり、問合せできない(仕方ないので、代理店の方に質問したりしている。丁寧に対応して頂いた)。

純正開発ボード:C8051F410DK
単体IC:C8051F410-GQ

KeilからSDCCの移植:リンク
C8051におけるSDCCによる記述:リンク
ペリフェラル関連:リンク


備忘録

  • Timer0とTimer2を併用する場合は、Timer2から初期化すること。そうしないとなぜかTimer0の挙動(UART)がおかしなことになる。
  • C8051で使用するデバッガ情報、リンク



最終更新:2015年07月31日 11:45