. AVR - kzono Wiki*
AVR - kzono Wiki*
AVR - kzono Wiki*

Без кейворда

アマチュア的には ATMega48/88/168/328 シリーズの一択だろう。narrow DIP または QFP で省スペース。

ほんとに単機能でよい場合、省スペース且つ安価な 8pin DIP ATTiny13A(\50) もあり。(2014年3月)

評価ボード

ライタ

COM接続

安価に作れるが最近では COM ポートが使えるPCはほぼ無い。

USB接続
  • aitendo USB接続AVRライタ[AVR-USBasp-B]
  • 共立エレショップ AVRWRT
  • Pololu USB AVRプログラマ
  • WsNak WSN214 HIDaspx(AVRライタ)用基板
  • すzさんFT245R/FT232R で avrdude
  • ) FTDI BitBang AVR-Writer
  • FT232-AVR Writer

ヒューズビット

工場出荷時の設定では、クロックは内蔵RC発振器が有効で、8MHzが原クロック。それを8分周して 1MHz がシステムクロックとして有効になっている。

Arduino

アセンブラとマシン語

IN - I/Oレジスタを汎用レジスタに取得 (Load an I/O Location to Register) I/O空間のI/Oレジスタ(ポート、タイマなど)値をレジスタ ファイルの汎用レジスタ(Rd)に取得します。 Rd ← I/O(A) 書式 オペランド プログラム カウンタ IN Rd,A d=0~31, A=0~63 PC ← PC + 1 機械語 (16ビット) 1 0 1 1 0 A5 A4 d4 d3 d2 d1 d0 A3 A2 A1 A0 ステータス レジスタ (SREG) 変更無し 命令語(ワード)数 1 (2バイト) 実行周期数 1 例: IN R25,$16 ; ポートBを読み込み (注:本注釈は$16がポートBのデバイスの場合です。) CPI R25,4 ; ポートB=4か検査 BREQ EXIT ; ポートB=4(Z=1)で分岐 EXIT: NOP ; 処理なし(ポートB=4での分岐先)

LEDを点灯させるには、OUT 命令でPDCR(ポートディレクションコントロールレジスタ)と PDR(ポートデータレジスタ)を書き込めばよい。

OUT - 汎用レジスタからI/Oレジスタに設定 (Store Register to I/O Location) レジスタ ファイルの汎用レジスタ(Rr)の内容でI/O空間のI/Oレジスタ(ポート、タイマなど)値を設定します。 I/O(A) ← Rr 書式 オペランド プログラム カウンタ OUT A,Rr r=0~31, A=0~63 PC ← PC + 1 機械語 (16ビット) ステータス レジスタ (SREG) 命令語(ワード)数 1 (2バイト) 実行周期数 1 例: CLR R16 ; R16に$00を設定 SER R17 ; R17に$FFを設定 OUT $18,R16 ; ポートBに$00を出力 (注:本注釈は$18がポートBのデバイスの場合です。) NOP ; 待機(無操作) OUT $18,R17 ; ポートBに$FFを出力

あとは時間稼ぎの busy_wait を入れればよい。比較命令とジャンプ命令のはず。

GNU assembler(GAS)
📎📎📎📎📎📎📎📎📎📎