ワンチップマイコンは,計算処理を行うALU(演算論理装置),メモリ,プログラムを格納するROM,IOポートなどが一つのチップに納められています.
最近では,フラッシュROM内蔵のものが多く出回っておりプログラムが簡単に何度でも書き換え可能なので,初心者へのしきいが低くなっています.
アナログコンパレータやADコンバータを持ったものもあり,色々な応用が考えられます.
プログラムメモリやデータメモリとは別に,EEPROMを持っているものが多くあります.EEPROMはデータが不揮発性ですから,あらかじめ必要なデータを入れておいたり,実行中に得られたデータを保存しておいたりする利用が考えられます.
消費電力は非常に小さく,LEDを光らせるような簡単なものなら,充電電池だけでも丸1日以上連続動作が可能です.
ワンチップマイコンを使うためには,マイコンのデータシートを入手し,構成図を見て全体の概要を理解する必要があります.特に汎用レジスタ,プログラムメモリ,データメモリ(RAM),IOレジスタ, EEPROMなどについて理解する必要があります.
ATMEL社のAT-Tiny26は,ADコンバータ付き,EEPROM付き,最大16MHz動作などの特徴を備えた優れものです.クロックも外部発振と内蔵発振器を選べます.
以下に,AVRISPmkIIを使ったTiny26の利用法について説明します.
AT-Tiny26は,最大16MHz動作のATTINY26L-16Pと最大8MHz動作のATTINY26L-8Pの2種類があります.
必要なもの
Windowsパソコン,AVRISPmkII,AT-Tiny26
パソコンに必要なソフトをインストールする.
AVRStudioとサービスパックをインストールする.これらはAVRISPmkIIのパッケージにCDとして付いています.ATMELのページからもダウンロードできます.アセンブラのプログラミングだけでよいのならこれで十分です.
C言語でプログラミングしたい場合には,フリーソフトのWINAVRをインストールします.
プログラムの編集とビルド
AVRStudioを起動し,マイコンをTiny26に選びプロジェクトを開きます.アセンブラまたはソースファイルのプログラムを編集し,ビルドします.ビルドが成功すると○.hexというファイルができます.
プログラムの書き込み手順
AVRISP-mkIIをPCに接続します.
AVRISP-mkIIのISP端子とマイコンのSCK,MISO,MOSIなどを接続し,マイコンの回路に電源を入れる.
ProgramAVRのメニューから,マイコンとの接続を確認し,Flash>Programで○.hexをマイコンに書き込みます.
FUSEの設定
FUSEの設定で,マイコンの発振周波数の設定や内部発振と外部発振の切り替えを設定します.
AVRISP-mkIIのISP端子とマイコンとの接続をはずし,実行したい回路にマイコンをセットし,電源を入れれば,マイコンが動くはずです.
簡単なアセンブラプログラムの例
PA0,PA1,PA2,PA3に接続したLEDを順次点灯させる.
.INCLUDE "tn26def.inc"
RJMP RESET
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RETI
RESET: LDI R16,RAMEND
OUT SP,R16
LDI R16,0XFF
OUT DDRA,R16 ;PA=OUTPUT
MAIN: LDI R21,0X00
OUT PORTA,R21
RCALL TIME
LDI R21,0X01
OUT PORTA,R21
RCALL TIME
LDI R21,0X02
OUT PORTA,R21
RCALL TIME
LDI R21,0X04
OUT PORTA,R21
RCALL TIME
LDI R21,0X08
OUT PORTA,R21
RCALL TIME
RJMP MAIN
TIME: LDI R24,5
LOOP1: LDI R23,100 ;1ms x 100=100ms
LOOP2: LDI R22,100 ;1000ns x 10 cycle x 100=1ms
LOOP3: NOP
NOP
NOP
NOP
NOP
NOP
NOP
DEC R22
BRNE LOOP3
DEC R23
BRNE LOOP2
DEC R24
BRNE LOOP1
RET
簡単なCプログラムの例
PA0に接続したLEDを点滅させる.
#include <avr/io.h>
void wait(int x);
int main( void )
{
DDRA=0xff; /* PortAをすべて出力に設定する */
for (;;) { /* 無限ループ */
PORTA=0x00; /* PA0 off */
wait(80); /* wait関数(waitルーチン)実行 */
PORTA=0x01; /* PA0 on */
wait(80);
}
}
/* ********** サブルーチン ******************* */
void wait(int x){ /* 時間稼ぎ */
int i,j;
for(i=1;i<x;i++){
for(j=1;j<20000;j++){
j=j; /* dummy */
}
}
}
その他
EEPROMデータの読み込み
EEPROM>ReadでマイコンのEEPROMデータを読み込みファイルに保存することができます.
ATtiny26の最近の状況(2008-10-15追記)
秋月ではATtiny26の扱いをやめました.何故?一方で秋月ではAVRISPmkIIを4000円で売り出しています.今から始める人は,AVRISPmkIIを使ったプログラミングがおすすめだと思います.
ATMELではATtiny26の上位チップとしてATtiny261,ATtiny461,ATtiny861を出しています.
AVRISPmkIIを使ってATtiny861は書き込みができました.C言語のプログラムでしたら
ATtiny26ののものが,ほとんどそのまま使えるはずです.
ATMELのAT-Tiny26,ATmega,R8Cなどのワンチップマイコン,C言語,JAVAなどのプログラミング言語の入門のためのページです.サンプルプログラムを中心に紹介します.他にもLinixや数学ソフトなどの紹介も行います.
このブログを検索
内容
Visual C++ Express Editionを用いたプログラミングメモ
Windows版 Mathematicaの使い方
MATLABとOctaveを使う
Fedora,Vine,Debian,KnoppixでLinux一本勝負?
CygwinやMinGWでCプログラミングを行う
C言語のプログラミング入門
R8Cで液晶SC1602BSの表示を行う
マイコンと2進数
R8CTinyマイコンの最初の一歩(Cプログラミング)
R8C/TinyシリーズのリセットとIDコードチェック機能
R8CTinyでCOMポートの通信実験
CT-208でR8CTinyの実行(アセンブラ)
R8C/Tiny29(サンハヤトのMB-8C29)の評価
サウンドファイルwavを開く
よく使うATMELのマイコンのアセンブラの比較
ATMELのATTiny26入門
Tiny26で液晶SC1602BSの表示を行う
AD変換の結果を液晶に表示する
マイコンによる電子オルゴール
Tiny2313でパルスの分周とカウンタ
Tiny2313でシリアル通信とROMリーダ
Tiny2313でGPSデータを液晶に表示
加速度センサを使う
マイコンでI2C-EEPROMの読み書きを行う
TINY13,TINY25,2313などの8ピンマイコンを使う
PSOCマイコンスタートアップ
AF,FMラジオ
Windows版 Mathematicaの使い方
MATLABとOctaveを使う
Fedora,Vine,Debian,KnoppixでLinux一本勝負?
CygwinやMinGWでCプログラミングを行う
C言語のプログラミング入門
R8Cで液晶SC1602BSの表示を行う
マイコンと2進数
R8CTinyマイコンの最初の一歩(Cプログラミング)
R8C/TinyシリーズのリセットとIDコードチェック機能
R8CTinyでCOMポートの通信実験
CT-208でR8CTinyの実行(アセンブラ)
R8C/Tiny29(サンハヤトのMB-8C29)の評価
サウンドファイルwavを開く
よく使うATMELのマイコンのアセンブラの比較
ATMELのATTiny26入門
Tiny26で液晶SC1602BSの表示を行う
AD変換の結果を液晶に表示する
マイコンによる電子オルゴール
Tiny2313でパルスの分周とカウンタ
Tiny2313でシリアル通信とROMリーダ
Tiny2313でGPSデータを液晶に表示
加速度センサを使う
マイコンでI2C-EEPROMの読み書きを行う
TINY13,TINY25,2313などの8ピンマイコンを使う
PSOCマイコンスタートアップ
AF,FMラジオ