体重と今日食べたもの

k1segawa.exblog.jp

ダイエット

ブログトップ

Japanino ArduinoISPで ATtiny13 で 外部割込み (16) (9/19)

外部割込みは、AVRで代表的なのはINT0になる。Pin 6でPB1(INT0)がそれに当たる。
BASCOM-AVRは前の記事のBASCOM-AVR 使用方法のサイト様の説明の通り、AT90Sシリーズがベースらしいので、そのマイコンの仕様を把握すれば何が出来るかわかる。従ってBASCOM-AVRの[メニュー][View][Pin Layout][Chip Search]ボタンで何も入れないで[Search]ボタンを押し、AT90Sで右欄の21番目[Ints]項が3のAT90S1200が最も割込みが少ない基本のそして最小番号型番のAT90Sと考える。このユーザマニュアルをAVR日本語情報サイト様で閲覧する。
割込みは[先頭ページ][■特殊マイクロ コントローラ機能][・外部及び内部の割り込み]の青い字をクリックすると、9ページ目[リセットと割り込みの扱い]に飛ぶ。その[表2.リセットと割り込みのベクタ]には4つの割込みが描かれている。
これにリセット(PowerON/WDT)、INT0、Timer0(オーバーフロー)、ANA_COMPが定義されているのでこれが基本とわかる。
外部割込みはINT0で、GIMSK I/Oレジスタが関係しているらしい。今後直接設定の際の参考になる。

ソース:
'****************************************
' Copyright (c) 2016 k1segawa
' License : free
' Program : External Interrupt Control
'****************************************

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 32
$swstack = 8
$framesize = 16

Config Portb.0 = Output
Config Portb.1 = Input
Set Portb.1 'Pullup
Config Int0 = Rising

On Int0 Isr
Enable Int0
Enable Interrupts

Do
Loop

End

Isr:
Portb.0 = 1
Waitms 10
Portb.0 = 0
Return
' History
' [2016/09/19]
' figure:External Interrupt Input:SW=PB1(INT0),Pullup, Output:LED=PB0
' BASCOM-AVR Japan Site - Internal Hardware Control Command -
' CONFIG INTx(external Interrupt)

配線:
a0034780_13455645.jpg
タクトスイッチのプルアップ抵抗はプログラムで指定済みなので不要。PB1にスイッチ(図ではタクトスイッチだが、実際は押し込んでも入ったままにならないタイプ)、PB0にLEDを抵抗1kΩでGNDと接続。

オシロスコープ:
a0034780_14213656.jpg
PB0 のLEDの間に赤のプローブ(+)、抵抗とGNDの間に黒のプローブ(-)を取り付けてタクトスイッチを押した瞬間に波形が流れるので、P-Trigボタンを押し、波形の高さの目安を付ける。だいたい0.1mVくらいになる。

LED:
押した瞬間と離した瞬間に一瞬LEDが点灯し消える。オシロスコープで押した後10ms程度でPinがOFFになっている。図は[メニュー][設定変更][デバイス、周波数・・・] [トリガー・レベル]を0.1mVに設定してP-Trigボタンを押し、その後手でスイッチを押しそのままの状態の様子。原点から2.22msで0.1162mVになり、12.7ms後に最低電圧が-0.1139mVになっている。この操作がキャプチャーといい、キャプチャーを行うと、トリガー・レベルに0.1162と勝手に入る。
a0034780_14221099.jpg

[PR]
by k1segawa | 2016-09-19 13:25 | arduino, AVR | Comments(0)