
| ■ BASCOM-AVR (DEMO) の使用方法 ■ |
| CONFIG TIMER0 |
一覧へ戻る |
ハードウェア タイマー 0 を、設定します。
● AT90S8535等の、比較器[OCR0]を搭載していないチップ。
(1)TIMERモードの設定。 (AVRクロックを、タイマーのクロックに使用します)
| 書式 |
Config Timer0 = Timer , Prescale = value |
| 注釈 |
| value = |
プリスケール(前段分周)の値。 |
( 1 , 8 , 64 , 256 , 1024 ) |
|
(2)COUNTERモードの設定。 (AVRクロックと前段分周の代わりに、外部クロックが使用されます)
| 書式 |
Config Timer0 = Counter , Edge = edge |
| 注釈 |
| edge = |
Rising
Falling |
− 外部クロックの立ち上がりエッジでカウント。
− 外部クロックの立ち下がりエッジでカウント。 |
|
(例)
・AVRクロック6.144MHzを、前段分周で8分周し768KHzを得ます。
・次に8ビットタイマーがオーバーフロー(256分周)すると、3,000Hzの割り込みが発生し、ポートCピン0を
反転させることで、1,500Hzの方形波が出力されます。
|
| (例) ハードウェア タイマー割り込みにより、ポートCピン0から1,500Hzの方形波を出力。 |
| $regfile = "8535def.DAT" |
' AVRデバイスを"AT90S8535"に設定。 |
| $crystal = 6144000 |
' クロック周波数を6.144MHzに設定。 |
| Config PINC.0 = Output |
' ポートCピン0を出力ポートに設定。 |
| Config Timer0 = Timer , Prescale = 8 |
' TIMER0を設定。 |
| On Timer0 Tint0 |
' オーバーフロー割り込みルーチンのラベルを設定。 |
| Enable Timer0 |
' TIMER0オーバーフロー割り込みを許可。 |
| Enable Interrupts |
' すべての割り込みを許可。 |
| Do |
' 繰り返し処理。 |
| Loop |
' |
| End |
' プログラムの終了。 |
| ' |
' |
| Tint0: |
' TIMER0オーバーフロー割り込み処理ルーチン。 |
| Toggle PORTC.0 |
' ポートCピン0の状態を反転。 |
| Return |
' 割り込み処理ルーチンの終了。 |
|
・On Timer0はOn Ovf0と、Enable Timer0はEnable Ovf0と同じ表記です。
● ATmega8535等の、比較器[OCR0]を搭載しているチップ。
(1)TIMERモードの設定。 (AVRクロックを、タイマーのクロックに使用します)
| 書式 |
Config Timer0 = Timer , Prescale = value , Clear Timer = clr ,
Compare
x = oc0x |
| 注釈 |
value =
|
プリスケール(前段分周)の値。
(一部のチップでは7種類) |
( 1 , 8 , 64 , 256 , 1024 )
( 1 , 8 , 32 , 64 , 128 , 256 , 1024 ) |
|
Clear Timer = clrは、比較器[OCR0x]を使用する場合に記述。
TIMER0[TCNT0]と比較器[OCR0x]が一致した時、
| clr = |
0
1 |
− オーバーフロー動作。
− 比較一致 CTC動作。 |
TIMER0[TCNT0]をクリアしない。
TIMER0[TCNT0]をクリアする。 |
|
Compare x = oc0xは、比較出力[OC0x]ピンを使用する場合に記述。
| x = |
なし
A
B |
− 比較器が1つのチップの場合。
− 比較器Aを設定。
− 比較器Bを設定。 |
|
| oc0x = |
Clear
Set
Toggle
Disconnect |
− 一致発生で、[OC0x]ピンをL(0)にします。
− 一致発生で、[OC0x]ピンをH(1)にします。
− 一致発生で、[OC0x]ピンを反転します。
− [OC0x]ピンを使用しません。 (デフォルト) |
|
|
(2)COUNTERモードの設定。 (AVRクロックと前段分周の代わりに、外部クロックが使用されます)
| 書式 |
Config Timer0 = Counter , Edge = edge , Clear Timer = clr ,
Compare
x = oc0x |
| 注釈 |
edge =
|
Rising
Falling |
− 外部クロックの立ち上がりエッジでカウント。
− 外部クロックの立ち下がりエッジでカウント。 |
|
| 以下、TIMERモードの設定と同じ。 |
(例)
・AVRクロック12.8MHzを、前段分周で64分周し200KHzを得ます。
・比較器を100分周に設定し、2,000Hzの比較出力[OC0x]と、割り込みが発生するので、
ポートDピン6とポートCピン0が反転動作し、1,000Hzの方形波が出力されます。
|
| (例) 比較出力と割り込みにより、PD6とPC0から1,000Hzの方形波を出力。 |
| $regfile = "m88def.dat" |
' AVRデバイスを"ATmega88"に設定。 |
| $crystal = 12800000 |
' クロック周波数を12.8MHzに設定。 |
| Config PIND.6 = Output |
' 比較器出力[OC0A]を出力ポートに設定。 |
| Config PINC.0 = Output |
' ポートCピン0を出力ポートに設定。 |
| Config Timer0 = Timer , Prescale = 64 , Clear Timer = 1 , Compare A = Toggle |
| Ocr0a = 99 |
' 比較器[OCR0A]を100分周に設定。 |
| On Oc0a Tint0 |
' 比較一致割り込みルーチンのラベルを設定。 |
| Enable Oc0a |
' TIMER0比較一致割り込みを許可。 |
| Enable Interrupts |
' すべての割り込みを許可。 |
| Do |
' 繰り返し処理。 |
| Loop |
' |
| End |
' プログラムの終了。 |
| ' |
' |
| Tint0: |
' TIMER0比較一致割り込み処理ルーチン。 |
| Toggle PORTC.0 |
' ポートCピン0の状態を反転。 |
| Return |
' 割り込み処理ルーチンの終了。 |
|
注.比較器に数値を入れる場合。
1.比較器が1つのチップ
・[COMPARE0] , [OCR0] は、同じ扱いです。
2.比較器がA , B 2つのチップ
・[OCR0A] , [COMPARE0A] , [PWM0A] は、同じ扱いです。 (新バージョンから)
・[OCR0B] , [COMPARE0B] , [PWM0B] は、同じ扱いです。 (新バージョンから)
(3)PWMモードの設定。
| 書式 |
Config Timer0 = Pwm , Clear Timer = clr , Compare x Pwm = oc0x ,
Prescale = value |
| 注釈 |
Clear Timer = clr (PWMモードでは、使い方が変わります)
| clr = |
0
1 |
− Phase Correct PWM Mode
− Fast PWM Mode |
(位相基準PWMモード)
(高速PWMモード) |
|
Compare x Pwm = oc0xは、比較出力[OC0x]ピンを使用する場合に記述。
| x = |
なし
A
B |
− 比較器が1つのチップの場合。
− 比較器Aを設定。
− 比較器Bを設定。 |
|
| oc0x = |
Clear Up
Clear Down
Disconnect |
− 上昇計数時一致発生でL(0)、下降時でH(1)にします。
− 上昇計数時一致発生でH(1)、下降時でL(0)にします。
− [OC0x]ピンを使用しません。 (デフォルト) |
|
|
value =
|
プリスケール(前段分周)の値。
(一部のチップでは7種類) |
( 1 , 8 , 64 , 256 , 1024 )
( 1 , 8 , 32 , 64 , 128 , 256 , 1024 ) |
外部クロックを使用する場合は、Edge = edge
edge =
|
Rising
Falling |
− 外部クロックの立ち上がりエッジでカウント。
− 外部クロックの立ち下がりエッジでカウント。 |
|
・ATmega88等の、「WGM02」ビットの設定方法が不明なため、このビットをセットする場合は、
CONFIG TIMER0行の次で、「Set TCCR0B.3」の様にレジスターへ直接設定して下さい。
(例)
・AVRクロック12.8MHzが、タイマーにより256分周され、50KHzを得ます。
・比較器に25KHzの1/10の値を設定し、比較出力[OC0]から25KHzで1:9の負パルスが出力されます。
・また、比較一致割り込みが発生するので、ポートCピン0からは、25KHzで1:9の正パルスが出力
されます。
|
| (例) PB3とPC0から、25KHzで1:9のパルスを出力。 |
| $regfile = "m8535.DAT" |
' AVRデバイスを"ATmega8535"に設定。 |
| $crystal = 12800000 |
' クロック周波数を12.8MHzに設定。 |
| Config PINB.3 = Output |
' 比較器出力[OC0]を出力ポートに設定。 |
| Config PINC.0 = Output |
' ポートCピン0を出力ポートに設定。 |
| Config Timer0 = Pwm , Clear Timer = 0 , Compare Pwm = Clear Down , Prescale
= 1 |
| Ocr0 = 25 |
' 比較器[OCR0]を1/10に設定。 |
| On Oc0 Tint0 |
' 比較一致割り込みルーチンのラベルを設定。 |
| Enable Oc0 |
' TIMER0比較一致割り込みを許可。 |
| Enable Interrupts |
' すべての割り込みを許可。 |
| Do |
' 繰り返し処理。 |
| Loop |
' |
| End |
' プログラムの終了。 |
| ' |
' |
| Tint0: |
' TIMER0比較一致割り込み処理ルーチン。 |
| Toggle PORTC.0 |
' ポートCピン0の状態を反転。 |
| Return |
' 割り込み処理ルーチンの終了。 |
|
|
| CONFIG TIMER1 |
一覧へ戻る |
ハードウェア タイマー 1 を、設定します。
(1)TIMERモードの設定。 (AVRクロックを、タイマーのクロックに使用します)
| 書式 |
Config Timer1 = Timer , Prescale = value , Clear Timer = clr ,
Compare x = oc1x , Capture Edge = ices , Noise Cancel = icnc |
| 注釈 |
| value = |
プリスケール(前段分周)の値。 |
( 1 , 8 , 64 , 256 , 1024 ) |
|
Clear Timer = clrは、比較器[OCR1x]を使用する場合に記述。
TIMER1[TCNT1]と比較器[OCR1x]が一致した時、またはキャプチャー動作時に、
| clr = |
0
1 |
− オーバーフロー動作。
− 比較一致 CTC動作。 |
TIMER1[TCNT1]をクリアしない。
TIMER1[TCNT1]をクリアする。 |
|
Compare x = oc1xは、比較出力[OC1x]ピンを使用する場合に記述。
| x = |
なし
A
B
C |
− 比較器が1つのチップの場合。
− 比較器Aを設定。
− 比較器Bを設定。
− 比較器Cを設定。 |
|
| oc1x = |
Clear
Set
Toggle
Disconnect |
− 一致発生で、[OC1x]ピンをL(0)にします。
− 一致発生で、[OC1x]ピンをH(1)にします。
− 一致発生で、[OC1x]ピンを反転します。
− [OC1x]ピンを使用しません。 (デフォルト) |
|
|
Capture Edge = ices , Noise Cancel = icnc は、キャプチャー機能を
使用する場合に記述。 キャプチャーレジスター[ICR1]は、[Capture1]という名称で読み書きができます。
| ices = |
Rising
Falling |
− ICP1ピンの立ち上がりエッジでキャプチャー。
− ICP1ピンの立ち下がりエッジでキャプチャー。 |
|
| icnc = |
0
1 |
− キャプチャー入力ICP1ピンの、ノイズ除去機能をオフにします。
− キャプチャー入力ICP1ピンの、ノイズ除去機能をオンにします。 |
|
|
(2)COUNTERモードの設定。 (AVRクロックと前段分周の代わりに、外部クロックが使用されます)
| 書式 |
Config Timer1 = Counter , Edge = edge , Clear Timer = clr ,
Compare x = oc1x , Capture Edge = ices , Noise Cancel = icnc |
| 注釈 |
edge =
|
Rising
Falling |
− 外部クロックの立ち上がりエッジでカウント。
− 外部クロックの立ち下がりエッジでカウント。 |
|
| 以下、TIMERモードの設定と同じ。 |
(例)
・AVRクロック12.8MHzを、前段分周で64分周し200KHzを得ます。
・比較器を2000分周に設定し、100Hzの比較出力[OC1A]と、割り込みが発生するので、
ポートDピン5とポートCピン0が反転動作し、50Hzの方形波が出力されます。
|
| (例) 比較出力と割り込みにより、PD5とPC0から50Hzの方形波を出力。 |
| $regfile = "m8535.DAT" |
' AVRデバイスを"ATmega8535"に設定。 |
| $crystal = 12800000 |
' クロック周波数を12.8MHzに設定。 |
| Config PIND.5 = Output |
' 比較器出力[OC1A]を出力ポートに設定。 |
| Config PINC.0 = Output |
' ポートCピン0を出力ポートに設定。 |
| Config Timer1 = Timer , Prescale = 64 , Clear Timer = 1 , Compare A = Toggle |
| Compare1a = 1999 |
' 比較器[OCR1AH,L]を2000分周に設定。 |
| On Compare1a Tint1 |
' 比較一致割り込みルーチンのラベルを設定。 |
| Enable Compare1a |
' TIMER1比較一致割り込みを許可。 |
| Enable Interrupts |
' すべての割り込みを許可。 |
| Do |
' 繰り返し処理。 |
| Loop |
' |
| End |
' プログラムの終了。 |
| ' |
' |
| Tint1: |
' TIMER1比較一致割り込み処理ルーチン。 |
| Toggle PORTC.0 |
' ポートCピン0の状態を反転。 |
| Return |
' 割り込み処理ルーチンの終了。 |
|
(3)PWMモードの設定。
| 書式 |
Config Timer1 = Pwm , Pwm = bit , Clear Timer = clr ,
Compare x Pwm = oc1x , Prescale = value ,
Capture Edge = ices , Noise Cancel = icnc |
| 注釈 |
| bit = |
8
9
10 |
− 8ビットPWM。
− 9ビットPWM。
− 10ビットPWM。 |
|
Clear Timer = clr (PWMモードでは、使い方が変わります)
| clr = |
0
1 |
− Phase Correct PWM Mode
− Fast PWM Mode |
(位相基準PWMモード)
(高速PWMモード) |
|
Compare x Pwm = oc1xは、比較出力[OC1x]ピンを使用する場合に記述。
| x = |
なし
A
B
C |
− 比較器が1つのチップの場合。
− 比較器Aを設定。
− 比較器Bを設定。
− 比較器Cを設定。 |
|
| oc1x = |
Clear Up
Clear Down
Disconnect |
− 上昇計数時一致発生でL(0)、下降時でH(1)にします。
− 上昇計数時一致発生でH(1)、下降時でL(0)にします。
− [OC1x]ピンを使用しません。 (デフォルト) |
|
|
| value = |
プリスケール(前段分周)の値。 |
( 1 , 8 , 64 , 256 , 1024 ) |
外部クロックを使用する場合は、Edge = edge
edge =
|
Rising
Falling |
− 外部クロックの立ち上がりエッジでカウント。
− 外部クロックの立ち下がりエッジでカウント。 |
|
Capture Edge = ices , Noise Cancel = icnc は、キャプチャー機能を
使用する場合に記述。 キャプチャーレジスター[ICR1]は、[Capture1]という名称で読み書きができます。
| ices = |
Rising
Falling |
− ICP1ピンの立ち上がりエッジでキャプチャー。
− ICP1ピンの立ち下がりエッジでキャプチャー。 |
|
| icnc = |
0
1 |
− キャプチャー入力ICP1ピンの、ノイズ除去機能をオフにします。
− キャプチャー入力ICP1ピンの、ノイズ除去機能をオンにします。 |
|
|
・ATmega88等の、「WGM13」ビットの設定方法が不明なため、このビットをセットする場合は、
CONFIG TIMER1行の次で、「Set TCCR1B.4」の様にレジスターへ直接設定して下さい。
|
| CONFIG TIMER2 |
一覧へ戻る |
ハードウェア タイマー 2 を、設定します。
(1)TIMERモードの設定。 (AVRクロックを、タイマーのクロックに使用します)
| 書式 |
Config Timer2 = Timer , Prescale = value , Clear Timer = clr ,
Compare
x = oc2x , Async = as |
| 注釈 |
value =
|
プリスケール(前段分周)の値。
(一部のチップでは5種類) |
( 1 , 8 , 32 , 64 , 128 , 256 , 1024 ) ( 1 , 8 , 64 , 256 , 1024 ) |
|
Clear Timer = clrは、比較器[OCR2x]を使用する場合に記述。
TIMER2[TCNT2]と比較器[OCR2x]が一致した時、
| clr = |
0
1 |
− オーバーフロー動作。
− 比較一致 CTC動作。 |
TIMER2[TCNT2]をクリアしない。
TIMER2[TCNT2]をクリアする。 |
|
Compare x = oc2xは、比較出力[OC2x]ピンを使用する場合に記述。
| x = |
なし
A
B |
− 比較器が1つのチップの場合。
− 比較器Aを設定。
− 比較器Bを設定。 |
|
| oc2x = |
Clear
Set
Toggle
Disconnect |
− 一致発生で、[OC2x]ピンをL(0)にします。
− 一致発生で、[OC2x]ピンをH(1)にします。
− 一致発生で、[OC2x]ピンを反転します。
− [OC2x]ピンを使用しません。 (デフォルト) |
|
|
TOSC1とTOSC2ピンに、外部発振素子(クリスタル等)を接続する場合に記述。
| as = |
Off
On |
− AVRのクロックを使用する。 (デフォルト)
− 外部発振素子のクロックを使用する。 |
|
注.比較器に数値を入れる場合。 1.比較器が1つのチップ
・[COMPARE2] , [OCR2] は、同じ扱いです。
2.比較器がA , B 2つのチップ
・[OCR2A] , [COMPARE2A] , [PWM2A] は、同じ扱いです。 (新バージョンから)
・[OCR2B] , [COMPARE2B] , [PWM2B] は、同じ扱いです。 (新バージョンから)
(2)COUNTERモードの設定。 (AVRクロックと前段分周の代わりに、外部クロックが使用されます)
・TIMER2用の外部クロックT2ピンが搭載されているチップのみ有効。
| 書式 |
Config Timer2 = Counter , Edge = edge , Clear Timer = clr ,
Compare
x = oc2x , Async = as |
| 注釈 |
edge =
|
Rising
Falling |
− 外部クロックの立ち上がりエッジでカウント。
− 外部クロックの立ち下がりエッジでカウント。 |
|
| 以下、TIMERモードの設定と同じ。 |
(3)PWMモードの設定。
| 書式 |
Config Timer2 = Pwm , Clear Timer = clr , Compare x Pwm = oc0x ,
Prescale = value , Async = as |
| 注釈 |
Clear Timer = clr (PWMモードでは、使い方が変わります)
| clr = |
0
1 |
− Phase Correct PWM Mode
− Fast PWM Mode |
(位相基準PWMモード)
(高速PWMモード) |
|
Compare x Pwm = oc0xは、比較出力[OC0x]ピンを使用する場合に記述。
| x = |
なし
A
B |
− 比較器が1つのチップの場合。
− 比較器Aを設定。
− 比較器Bを設定。 |
|
| oc0x = |
Clear Up
Clear Down
Disconnect |
− 上昇計数時一致発生でL(0)、下降時でH(1)にします。
− 上昇計数時一致発生でH(1)、下降時でL(0)にします。
− [OC0x]ピンを使用しません。 (デフォルト) |
|
|
value =
|
プリスケール(前段分周)の値。
(一部のチップでは7種類) |
( 1 , 8 , 64 , 256 , 1024 )
( 1 , 8 , 32 , 64 , 128 , 256 , 1024 ) |
外部クロックを使用する場合は、Edge = edge
edge =
|
Rising
Falling |
− 外部クロックの立ち上がりエッジでカウント。
− 外部クロックの立ち下がりエッジでカウント。 |
|
TOSC1とTOSC2ピンに、外部発振素子(クリスタル等)を接続する場合に記述。
| as = |
Off
On |
− AVRのクロックを使用する。 (デフォルト)
− 外部発振素子のクロックを使用する。 |
|
|
| LOAD |
一覧へ戻る |
ハードウェア タイマーの、Timer/Counter レジスターに、任意の値を設定します。
| 書式 |
Load Timer , Value |
| 注釈 |
| Timer = |
ハードウェア タイマー名。 (TIMER0 , TIMER1 , TIMER2) |
| Value = |
Timer/Counter レジスターにセットする値。 ( 1〜256 or 1〜65536 ) |
|
・設定値は、1でレジスターに&HFF(&HFFFF)が入り、 256(65536)でレジスターに&H00が入ります。
・Timer0 = Value , Timer1 = Value , Timer2 = Value は、Valueの値をそのままレジスターに
入れます。
|
| (例) ハードウェア タイマー割り込みにより、ポートCピン0から1,000Hzの方形波を出力。 |
| $regfile = "m8535.DAT" |
' AVRデバイスを"ATmega8535"に設定。 |
| $crystal = 12800000 |
' クロック周波数を12.8MHzに設定。 |
| Config PINC.0 = Output |
' ポートCピン0を出力ポートに設定。 |
| Config Timer0 = Timer ' Prescale = 256 |
' TIMER0を設定。 |
| Set TCCR0.2 |
' mega8535にあるTIMER0のプリスケラーバグ。 |
| Load Timer0 , 25 |
' TIMER0を1/50 (25x2)に設定。 |
| On Timer0 Tint0 |
' オーバーフロー割り込みルーチンのラベルを設定。 |
| Enable Timer0 |
' TIMER0オーバーフロー割り込みを許可。 |
| Enable Interrupts |
' すべての割り込みを許可。 |
| Do |
' 繰り返し処理。 |
| Loop |
' |
| End |
' プログラムの終了。 |
| ' |
' |
| Tint0: |
' TIMER0オーバーフロー割り込み処理ルーチン。 |
| Load Timer0 , 25 |
' TIMER0を1/50 (25x2)に設定。 |
| Toggle PORTC.0 |
' ポートCピン0の状態を反転。 |
| Return |
' 割り込み処理ルーチンの終了。 |
|
|
| CONFIG WATCHDOG |
一覧へ戻る |
ウォッチドッグ タイマーを、設定します。
| 書式 |
Config Watchdog = time |
| 注釈 |
time =
|
ウォッチドッグ タイマーの設定時間。 (mS)
( 16 , 32 , 64 , 128 , 256 , 512 , 1024 , 2048 ) ( 4096 , 8192 ) |
|
・ウォッチドッグ タイマーにより、リセットまたは割り込みが発生するまでの時間を設定します。
・メインルーチンのような動作の中核となる処理内で、ウォッチドッグ タイマーを定期的に再スタート
させるようにプログラムを組みます。
・ウォッチドッグ タイマーに設定した時間を超えると、リセットまたは割り込みが発生します。
・ウォッチドッグ タイマーとは、ノイズ等によりプログラムが停止または暴走した場合に、強制的に
リセットを行い、動作を正常に戻すための安全装置です。
・下記例題のように、リセットが起きた時点で[MCUSR]レジスタの内容を確認し、適切な処理を行う
ようにプログラムを構成します。
|
(例) リセットが発生した要因を表示します。
Reset Watchdog行により、ウォッチドッグの監視が続きます。 |
| $regfile = "m88pdef.dat" |
' AVRデバイスを"ATmega88P"に設定。 |
| $crystal = 16000000 |
' クロック周波数を16MHzに設定。 |
| Dim T_mcusr As Byte |
' リセットの要因を示す[MCUSR]レジスタの保管用。 |
| T_mcusr = Peek(0) |
' リセットの要因を示す[MCUSR]レジスタを保管する。 |
| ' Config Lcd = ・・・ |
' LCDの初期設定命令を記述する。 |
| ' |
' |
| Dim Tempstr As String * 20 |
' 汎用テンポラリ変数 String型 |
| If T_mcusr.porf = 1 Then Tempstr = "Power-on Reset" |
| If T_mcusr.borf = 1 Then Tempstr = "Brown-out Reset" |
| If T_mcusr.extrf = 1 Then Tempstr = "External Reset" |
| If T_mcusr.wdrf = 1 Then Tempstr = "Watchdog Reset" |
| Locate 1 , 1 |
' リセットの要因を表示する。 |
| Lcd Tempstr |
' |
| Locate 2 , 1 |
' [MCUSR]レジスタの内容を表示する。 |
| Lcd "MCUSR=" ; Hex(t_mcusr) |
' |
| ' |
' |
| Dim A As Byte |
' |
| Config Watchdog = 2048 |
' ウォッチドッグ タイマーの時間を設定。 |
| Start Watchdog |
' ウォッチドッグ タイマーの監視を開始。 |
| ' |
' |
| Do |
' 繰り返し処理。 |
| Locate 2 , 12 |
' 100mSのカウント値を表示する |
| Lcd A ; " " |
' |
| A = A + 1 |
' |
| Waitms 100 |
' 100mSの待ち時間。 |
| 'Reset Watchdog |
' ウォッチドッグ タイマーを再スタート。
' コメントを外すと、ウォッチドッグが有効になります。 |
| Loop |
' |
| End |
' プログラムの終了。 |
|
・リセットの要因を示す[MCUSR]レジスタの保管命令は、必ずプログラムの冒頭に記述して下さい。
・これは、BASCOM-AVR特有の処理方法です。([MCUSR]レジスタがR0に保管されているため)
|
| CONFIG ADC |
一覧へ戻る |
A/Dコンバータを、設定します。
| 書式 |
Config ADC = mode , Prescaler = clock , Reference = vref |
| 注釈 |
| mode = |
Single
Free |
− シングル動作。 (単発変換動作)
− フリーラン動作。 (連続変換動作) |
|
A/D変換に使用する、クロックを選択します。
| clock = |
Auto − コンパイラが、適切な値を自動的に選択します。
( 2 , 4 , 8 , 16 , 32 , 64 , 128 ) − 任意のクロック分周値。 |
|
基準電圧を選択できるチップのみ使用できます。 (オプション・代表例)
| vref = |
Off
Avcc
Internal |
− AREF端子は、内部電位回路から切り離されます。
− AREF端子は、内部でAVCCに接続されます。
− AREF端子は、内部で2.56V等の基準電圧に接続されます。 |
|
・ フリーラン動作は、ヘルプファイルにも記述が無く、BASCOMからの操作方法は不明です。
・ 基準電圧の選択リスト。(一部チップの参考値)
| チップ名 |
基準電圧の設定
Reference = |
ADC_REFMODEL=X
($regfile内の
モデル番号) |
2233 , 4433 , 4434
8535 , Mega103 , Mega603 , Mega128103 |
OFF
AVCC |
0 |
Mega165 , Mega169 , Mega325 , Mega3250
Mega645 , Mega6450 , Mega329 , Mega3290
Mega649 , Mega6490
Mega48 , Mega88 , Mega168 , Mega328 |
OFF
AVCC
INTERNAL or INTERNAL_1.1 |
1 |
| Tiny15 , Tiny26 |
AVCC
OFF
INTERNAL
INTERNALEXTCAP |
2 |
| Tiny13 |
AVCC
INTERNAL |
3 |
| Tiny24 , Tiny44 , Tiny84 |
AVCC
EXTERNAL or OFF
INTERNAL or INTERNAL_1.1 |
4 |
Mega164 , Mega324 , Mega644
Mega640 , Mega1280
Mega1281 , Mega2561
Mega2560 |
AREF or OFF
AVCC
INTERNAL1.1
INTERNAL_2.56 |
5 |
Tiny261 , Tiny461 , Tiny861
Tiny25 , Tiny45 , Tiny85
|
AVCC
EXTERNAL or OFF
INTERNAL_1.1
INTERNAL_2.56_NOCAP
INTERNAL_2.56_EXTCAP |
7 |
CAN128 , PWM2_3 , USB1287
Mega128 , Mega16 , Mega163
Mega32 , Mega323 , Mega64 |
AREF or OFF
AVCC
INTERNAL or INTERNAL_2.56 |
8 |
|
| (例)1秒毎にアナログ入力0をA/D変換し、結果を出力します。 |
| $regfile = "m8535.DAT" |
' AVRデバイスを"ATmega8535"に設定。 |
| $crystal = 12800000 |
' クロック周波数を12.8MHzに設定。 |
| $baud = 9600 |
' ボーレートを9600ボーに設定。 |
| Dim W As Word |
' 使用する変数を宣言。 |
| Config ADC = Single , Prescaler = Auto |
' A/Dコンバータの設定。 |
| Start ADC |
' A/Dコンバータに電源を供給。 |
| Do |
' 繰り返し処理。 |
| W = Getadc(0) |
' アナログ入力0の変換値を変数へ代入。 |
| Print W |
' 変換値を出力。 |
| Wait 1 |
' 1秒の待ち時間。 |
| Loop |
' |
| End |
' プログラムの終了。 |
|
|
| GETADC |
一覧へ戻る |
A/Dコンバータを始動し、変換した値を変数に読み込みます。
| 書式 |
variable = Getadc(channel , extension) |
| 注釈 |
| variable = |
変換した値を入れる変数名。 (ワード型) |
|
| channel = |
アナログ入力のチャネル番号。 ( 0 〜 ) |
|
新しいチップに追加された、左揃えモードや差動入力を設定します。 (オプション)
channelとextensionが論理和された後、ADMUXレジスターに書き込まれます。
| extension = |
追加設定値の定数または変数。 ( bit5 , bit4 , bit3 ) |
|
・GETADC命令は、A/Dコンバータのシングル動作で使用します。
・GETADC命令が実行されると、A/Dコンバータが始動され、A/D変換が終了するまで待ってから、
変換値を変数に代入して、この命令を終わります。
・よって、変換中はプログラムが停止しています。 (割り込みは動作します)
|
| (例) A/D変換精度をバイト型に落とし、割り込みにより随時A/D値を取得します。 |
| $regfile = "m8535.DAT" |
' AVRデバイスを"ATmega8535"に設定。 |
| $crystal = 12800000 |
' クロック周波数を12.8MHzに設定。 |
| $baud = 9600 |
' ボーレートを9600ボーに設定。 |
| Dim A As Byte |
' 使用する変数を宣言。 |
| Config ADC = Single , Prescaler = Auto |
' A/Dコンバータの設定。 |
| On ADC Adint |
' A/D終了割り込みルーチンのラベルを設定。 |
| Enable ADC |
' A/D変換終了割り込みを許可。 |
| Enable Interrupts |
' すべての割り込みを許可。 |
| Start Adc |
' A/Dコンバータに電源を供給。 |
| ' |
' |
| A = Getadc(0 , &H20) |
' アナログ入力0、左揃えモードを設定。 |
| Do |
' 繰り返し処理。 |
| Print A |
' 変換値を出力。 |
| Wait 1 |
' 1秒の待ち時間。 |
| Loop |
' |
| End |
' プログラムの終了。 |
| ' |
' |
| Adint: |
' A/D変換終了割り込みルーチン。 |
| A = ADCH |
' A/Dデータレジスターの上位を変数へ代入。 |
| Set ADCSR.6 |
' A/Dコンバータを再始動。 |
| Return |
' 割り込み処理ルーチンの終了。 |
|
|
| CONFIG ACI |
一覧へ戻る |
アナログ比較器(コンパレーター)を、設定します。
| 書式 |
Config Aci = power , Compare = capture , Trigger = mode |
| 注釈 |
| power = |
On
Off |
− アナログ比較器の電源を入れます。
− アナログ比較器の電源を切ります。 |
(START Ac と同じ)
(Stop Ac と同じ) |
|
アナログ比較器によって起動される、タイマー1のキャプチャー機能を許可します。
| capture = |
On
Off |
− キャプチャー機能を許可。
− キャプチャー機能を禁止。 |
|
アナログ比較器の、割り込み条件を指定します。
| mode = |
Toggle
Falling
Rising |
− 立ち上がり立ち下がりの両エッジで割り込みが発生します。
− 立ち下がりエッジで割り込みが発生します。
− 立ち上がりエッジで割り込みが発生します。 |
|
・アナログ比較器(コンパレーター)は、リセットの初期状態で電源がONになっていますので、
電力を削減するためにはOFFにする必要があります。
|
| START device |
一覧へ戻る |
指定されたハードウェア機器を、始動させます。
| 書式 |
Start device |
| 注釈 |
| device = |
始動させる機器名。 (下記リスト参照) |
|
・機器名のリスト。
| TIMER0 , COUNTER0 |
ハードウェア タイマー0 の、計数を開始します。 |
| TIMER1 , COUNTER1 |
ハードウェア タイマー1 の、計数を開始します。 |
| TIMER2 , COUNTER2 |
ハードウェア タイマー2 の、計数を開始します。 |
| WATCHDOG |
ウォッチドッグ タイマーの、計数を開始します。 |
| ADC |
A/Dコンバータに、電源を供給します。 |
| AC |
アナログ比較器に、電源を供給します。 |
|
| STOP device |
一覧へ戻る |
指定されたハードウェア機器を、停止させます。
| 書式 |
Stop device |
| 注釈 |
| device = |
始動させる機器名。 (下記リスト参照) |
|
・STOP命令のみで記述された場合は、プログラムが停止します。
・機器名のリスト。
| TIMER0 , COUNTER0 |
ハードウェア タイマー0 の、計数を中断します。 |
| TIMER1 , COUNTER1 |
ハードウェア タイマー1 の、計数を中断します。 |
| TIMER2 , COUNTER2 |
ハードウェア タイマー2 の、計数を中断します。 |
| WATCHDOG |
ウォッチドッグ タイマーの、計数を中断します。 |
| ADC |
A/Dコンバータへの、電源供給を切ります。 |
| AC |
アナログ比較器への、電源供給を切ります。 |
|
| ON interrupt |
一覧へ戻る |
指定された割り込みが発生した場合に、実行するサブルーチン名を指示します。
| 書式 |
ON intname label [NOSAVE] |
| 注釈 |
| intname = |
割り込みの種別。 (下記リスト参照) |
| label = |
割り込み発生時に実行するサブルーチン名。 |
NOSAVE =
|
割り込み発生時に、全レジスターの待避・復帰を行いません。
(割り込み処理ルーチンをアセンブラで書く場合のオプション) |
|
・使用可能な割り込み名は、チップにより違うので、「$regfile =」で使用するレジファイル内の
後に記載された、[INTS]行を確認して下さい。
・割り込みの種別。 (代表例)
| INT0 , INT1 , INT2 〜 |
外部割り込み。 (チップにより数が違います) |
PCINT
PCINT0 , PCINT1 〜 |
ピン変化割り込み。 (チップにより数が違います) |
TIMER0 = OVF0
TIMER1 = OVF1
TIMER2 = OVF2 |
ハードウェア タイマー、オーバーフロー割り込み。 |
COMPARE0 = OC0
COMPARE0A = OC0A
COMPARE0B = OC0B
COMPARE1 = OC1
COMPARE1A = OC1A
COMPARE1B = OC1B
COMPARE2 = OC2
COMPARE2A = OC2A
COMPARE2B = OC2B |
ハードウェア タイマー、比較一致割り込み。 |
| CAPTURE1 = ICP1 |
タイマー1、キャプチャー割り込み。 |
| WDT |
ウォッチドッグ タイマー、発生割り込み。 |
| ADC , ADCC |
A/Dコンバータ、変換終了割り込み。 |
| ACI |
アナログ比較器、比較割り込み。 |
| URXC , UDRE , UTXC |
UART、送受信割り込み。 |
| SPI |
SPI(シリアル周辺インターフェース)、転送完了割り込み。 |
| TWI |
2線シリアル インターフェース、作業完了割り込み。 |
| EEPROM = ERDY |
EEPROM、Ready割り込み。 |
・通常、割り込み発生時には、割り込みサブルーチン内で使用されるレジスターが待避され、
割り込みサブルーチンの終了時に復帰されます。 (NOSAVEオプションが省略された場合と同じ)
・ただし、R6,R8,R9を除いた、SREGとR0からR11およびR16からR31です。
・浮動小数点演算が使用するR12からR15は待避されないので、割り込みサブルーチン内で浮動
小数点型の変数を使用する場合は、自身のプログラムでR12からR15の待避・復帰が必要になります。
・SingleやDouble変数を使う浮動小数点演算は非常に多くの時間がかかるので、割り込み処理内での
使用は推奨されません。
・BASCOMでは、割り込みサブルーチン内でSingleやDouble変数を使わないのが前提です。
・NOSAVEオプションを記述した場合は、割り込み処理内で使用するレジスタを待避する命令を、
必ず記述して下さい。
|
| ENABLE |
一覧へ戻る |
指定された割り込みを、許可します。
| 書式 |
Enable intname |
| 注釈 |
| intname = |
割り込みの種別。 (下記リスト参照) |
|
・外部リセットからの起動で、すべての割り込みは禁止されています。
・ENABLE命令で、使用する割り込みを、それぞれ可能にしておきます。
(この命令だけでは、まだ割り込みは許可されていません)
・Enable Interrupts命令で、割り込みを許可します。
・割り込みの種別。 (代表例)
| INT0 , INT1 , INT2 〜 |
外部割り込み。 (チップにより数が違います) |
PCINT
PCINT0 , PCINT1 〜 |
ピン変化割り込み。 (チップにより数が違います) |
TIMER0 = OVF0
TIMER1 = OVF1
TIMER2 = OVF2 |
ハードウェア タイマー、オーバーフロー割り込み。 |
COMPARE0 = OC0
COMPARE0A = OC0A
COMPARE0B = OC0B
COMPARE1 = OC1
COMPARE1A = OC1A
COMPARE1B = OC1B
COMPARE2 = OC2
COMPARE2A = OC2A
COMPARE2B = OC2B |
ハードウェア タイマー、比較一致割り込み。 |
| CAPTURE1 = ICP1 |
タイマー1、キャプチャー割り込み。 |
| WDT |
ウォッチドッグ タイマー、発生割り込み。 |
| ADC , ADCC |
A/Dコンバータ、変換終了割り込み。 |
| ACI |
アナログ比較器、比較割り込み。 |
| URXC , UDRE , UTXC |
UART、送受信割り込み。 |
| SPI |
SPI(シリアル周辺インターフェース)、転送完了割り込み。 |
| TWI |
2線シリアル インターフェース、作業完了割り込み。 |
| EEPROM = ERDY |
EEPROM、Ready割り込み。 |
|
| DISABLE |
一覧へ戻る |
指定された割り込みを、禁止します。
| 書式 |
Disable intname |
| 注釈 |
| intname = |
割り込みの種別。 (ENABLE命令の、割り込みリストを参照) |
|
・DISABLE命令で、個々の割り込みを禁止することができます。
・Disable Interrupts命令で、すべての割り込みを禁止できます。
|
| CONFIG INTx |
一覧へ戻る |
外部割り込みの、発生条件を設定します。
| 書式 |
Config Intx = state |
| 注釈 |
| x = |
外部割り込みの番号。 (0〜7 チップによる) |
|
|
外部割り込みの発生条件。 |
| state = |
Low Level
Change
Falling
Rising |
− INTx ピンがLowレベルで割り込みが発生。
− INTx ピンの両エッジで割り込みが発生。
− INTx ピンの立ち下がりエッジで割り込みが発生。
− INTx ピンの立ち上がりエッジで割り込みが発生。 |
|
・「Change」は、チップにより使用できない場合があります。
|
| CONFIG SPI |
一覧へ戻る |
SPI(Serial Peripheral Interface)を、設定します。
(1) ハードウェアSPIのための書式。 (チップにより、割り当てられたピンを使用します)
| 書式 |
Config Spi = Hard , Master = Yes|no , Interrupt = On|Off , Data Order = Lsb|Msb , Phase = 0|1 , Polarity = Low|High , Clockrate = 4|16|64|128 , Noss = 1|0 , Spiin = Value , Extended = 0|1 |
| 注釈 |
SPIを、マスターまたはスレーブのどちらで動作させるかを選びます。
| Master = |
Yes
no |
− マスター(主装置)として動作します。
− スレーブ(従装置)として動作します。 |
|
シリアル転送が完了すると、割り込みを発生させます。
| Interrupt = |
On
Off |
− 割り込みが発生します。 (ENABLE SPIと同じ操作)
− 割り込みは発生しません。 (DISABLE SPIと同じ操作) |
|
データ・ビットの転送順序を選択します。
| Data Order = |
Lsb
Msb |
− LSB(下位ビット)が最初に転送されます。
− MSB(上位ビット)が最初に転送されます。 |
|
SCKとデータの位相関係を選択します。
| Phase = |
0
1 |
− データが先行します。 [CPHA = 0]
− SCKが先行します。 [CPHA = 1] |
|
SCKの極性を選択します。 (アイドル時のSCKレベル)
| Polarity = |
Low
High |
− アイドル時には[L]レベルです。 [CPOL = 0]
− アイドル時には[H]レベルです。 [CPOL = 1] |
|
マスター(主装置)として設定された場合の、SCKの速度を選択します。
| Clockrate = |
4|16|64|128 |
− fOSC/4 , fOSC/16 , fOSC/64 , fOSC/128。 |
fOSC = システム・クロック周波数。 |
マスターとして設定された場合の、/SSピン(スレーブ選択)の使用を決定します。
| Noss = |
1
0 |
− SPIは、/SSピンを使用しません。
− /SS信号が自動生成されます。 |
・複数のスレーブ装置を選択する場合は、/SSピンの自動生成を停止して、任意に
複数のポートで/SS信号を生成します。
・マスターとして設定され、Noss = 1に設定すると、/SSピンの入出力はユーザーが
決められます。 (決める必要があります)
出力に設定した場合は、SPIと無関係な汎用の出力ポートです。
入力に設定した場合は、このピンを[L]にすると強制的にスレーブに切り替えられ
ます。 |
SPIIN命令で、スレーブからデータを読み込むときに送信するデータを設定できます。
| Spiin = |
Value |
− 送信する値。 (オプション) |
このオプションが記述されない場合は、デフォルトで0が送信されます。 |
SPIIN、SPIIOUT、SPIMOVE命令で、データの最大送受信数を拡張するオプション。
| Extended = |
0
1 |
− 送受信の最大値 = 255バイト (デフォルト)
− 送受信の最大値 = 65535バイト |
|
・Set SPSR.SPI2X この書式で、マスターとして動作時のSPIクロック速度を倍にできます。
(この機能を搭載しているチップに限る)
| SPI動作モード |
CPHA |
CPOL |
SCKの先エッジ |
SCKの後エッジ |
位相関係 |
| モード 0 |
0 |
0 |
立ち上がりでサンプル |
立ち下がりで出力設定 |
データが先行 |
| モード 2 |
0 |
1 |
立ち下がりでサンプル |
立ち上がりで出力設定 |
| モード 1 |
1 |
0 |
立ち上がりで出力設定 |
立ち下がりでサンプル |
SCKが先行 |
| モード 3 |
1 |
1 |
立ち下がりで出力設定 |
立ち上がりでサンプル |
・ATMEGA328PBなどの新しいプロセッサには、2つのSPIポートがあります。
この2番目のSPIポートを使用するには、命令文に[1]を追加する必要があります。
(CONFIG SPI1 , SPI1IN , SPI1OUT , SPI1INIT , SPI1MOVE)
(2) ソフトウェアSPIのための書式。 (各SPI信号のポートは、任意のピンに指定が可能です)
・マスター(主装置)のみ。 SPI動作モード[1]、MSB(上位ビット)が最初に転送、で動作します。
| 書式 |
Config Spi = Soft , Clock = PORTX.b , Dout = PORTX.b , Din = PINX.b , Ss = PORTX.b|none , Spiin = Value , Mode = Value , Speed = Value , Setup = Value , Extended = 0|1 |
| 注釈 |
SPIのクロック(SCK)に割り当てる、ポート名とピン番号。
| Clock = PORTX.b |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
| b = |
ピンの番号。 ( 0 〜 7 ) |
|
SPIのデータ出力(MOSI)に割り当てる、ポート名とピン番号。
| Dout = PORTX.b |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
| b = |
ピンの番号。 ( 0 〜 7 ) |
|
SPIのデータ入力(MISO)に割り当てる、ポート名とピン番号。
| Din = PINX.b |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
| b = |
ピンの番号。 ( 0 〜 7 ) |
|
SPIのスレーブ選択(/SS)に割り当てる、ポート名とピン番号。
| Ss = PORTX.b|none |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
| b = |
ピンの番号。 ( 0 〜 7 ) |
| none |
− /SSピンを使用しない。 |
・複数のスレーブ装置を選択する場合は、/SSピンの自動生成を停止して、任意に
複数のポートで/SS信号を生成します。 |
SPIIN命令で、スレーブからデータを読み込むときに送信するデータを設定できます。
| Spiin = |
Value |
− 送信する値。 (オプション) |
このプションが記述されない場合は、0が送信されます。 |
SPIの動作モードを選択できます。 (オプションです。デフォルトはSPI動作モード[1])
| Mode = |
Value |
− SPIの動作モード。 ( 0 〜 3 ) |
このプションが記述されると、以下の「SPEED」と「SETUP」も指定できます。
クロック(SCK)の前後に、遅延を投入します。
(1を指定すると、合計2μSの遅延がSCKに追加されます)
| Speed = |
Value |
− 遅延時間。 (μS) デフォルトは0。 |
データ入力(MISO)ピンをサンプリングする前に、遅延を投入します。
| Setup = |
Value |
− 遅延時間。 (μS) デフォルトは0。 |
|
SPIIN、SPIIOUT、SPIMOVE命令で、データの最大送受信数を拡張するオプション。
| Extended = |
0
1 |
− 送受信の最大値 = 255バイト (デフォルト)
− 送受信の最大値 = 65535バイト |
|
|
| SPIINIT |
一覧へ戻る |
SPIピンを初期化します。
・CONFIG SPI命令の後に、SPIが使用するポートピンを、それぞれの入出力方向に設定します。
・他のルーチンがSPIピンの状態を変更した場合には、SPIINとSPIOUT命令を使う前に、再びSPIINITを
実行してください。
|
| SPIIN |
一覧へ戻る |
SPIバスから、データを読み込みます。
| 書式 |
Spiin variable , Bytes |
| 注釈 |
| variable = |
データを読み込む数値変数 または 配列。 (バイト型) |
|
| Bytes = |
読み込むバイト数。 (最大256個) |
|
・SPIスレーブ装置からデータを読み込むためには、マスターが最初にいくつかのデータを送る必要が
あります。
|
| SPIOUT |
一覧へ戻る |
SPIバスへ、データを送ります。
| 書式 |
Spiout variable , Bytes |
| 注釈 |
| variable = |
出力するデータを入れた数値変数 または 配列。 (バイト型) |
|
|
|
・1バイトが送られた後に、SPSRレジスターのSPIFビットがチェックされ、次のデータを送る準備が
できていることを確認します。
|
| SPIMOVE |
一覧へ戻る |
SPIバスへ、データを送受信します。
| 書式 |
variable = Spimove(Bytes) |
| 注釈 |
| variable = |
送受信するデータ用の数値変数 または 配列。 (バイト型) |
|
| Bytes = |
送受信するバイト数。 (最大256個) |
|
|
| CLOCKDIVISION |
一覧へ戻る |
システム・クロックの分周値を設定します。 (クロック分周制御レジスタXDIV用) [mega64,mega128等]
| 書式 |
Clockdivision = value |
| 注釈 |
| value = |
システム・クロックの分周値を設定する、数値変数 または 定数。 |
|
・設定値は、2〜129です。
・設定値に0を入れると、分周をしません。
・分周を使用すると、システム・クロックに依存している、いくつかの命令が正常に働かなくなります。
(分周値に2を設定した場合、WAITMSは、2倍の時間がかかります)
|
| CONFIG CLOCKDIV |
一覧へ戻る |
システム・クロックの分周値を設定します。 (クロック前置分周レジスタCLKP用) [mega88,mega164等]
| 書式 |
Config Clockdiv = value |
| 注釈 |
| value = |
システム・クロックの、前置分周器に設定する分周値。 |
|
・前置分周器の設定値は、1 , 2 , 4 , 8 , 16 , 32 , 64 , 128 , 256 です。
・デフォルト値は1です。
・前置分周器の値を変更する場合は、$CRYSTAL命令の動作クロック周波数も変更する必要が
あります。
(8MHzのクリスタルで、前置分周器に8を設定した場合は、$CRYSTAL = 1000000 にして下さい)
|
| CONFIG POWERMODE |
一覧へ戻る |
AVRを、搭載されているスリープ・モードの1つに移行させます。 (新命令)
| 書式 |
Config Powermode = mode |
| 注釈 |
| mode = |
移行させるスリープのモード名。 (参考例、チップによって異なります)
MegaとTiny用 : Idle, Powerdown, Standby, Adcnoise, Powersave
XMega用 : Idle, Powerdown, Powersave, Standby, Exstandby |
|
・移行できるスリープモードは、チップに依存します。
・各モードとその正確な動作はAVRチップによって異なります。
・各チップのデータシートを参照してください。
※ POWER mode命令も使用できますが、新規の開発には新しい CONFIG POWERMODE 命令を
使用してください。
|
| POWER mode |
一覧へ戻る |
AVRを、搭載されているスリープ・モードの1つに移行させます。 (旧命令)
| 書式 |
Power mode |
| 注釈 |
| mode = |
移行させるスリープのモード名。
IDLE , POWERDOWN , STANDBY , ADCNOISE , POWERSAVE |
|
・移行できるスリープモードは、チップに依存します。
・POWERDOWN、IDLE、POWERSAVE命令も使うことができますが、新しいPOWER命令は、
より多くのモードが使用できるようになります。
・POWER()関数と混同しないで下さい。
※ POWER()関数と混同するため、このPOWER mode命令も推奨されません。
※ 代わりに、新しい CONFIG POWERMODE 命令を使用してください。
|
| IDLE |
一覧へ戻る |
AVRを、アイドル モードに移行させます。 (旧命令)
・アイドル モードでは、システムクロックが停止されますが、タイマークロックや、割り込み、
シリアルポート等のインターフェイス機能は動作し続けます。
・アイドル動作は、割り込み(ウォッチドッグ・タイマー・外部のレベルトリガー・ADC)が入るか、
RESETピンによるシステムリセットにより終わります。
・新しいチップには、電力管理のための、いくつかのオプションが用意されていますので、
データシートを参照して下さい。
|
| POWERDOWN |
一覧へ戻る |
AVRを、パワーダウン モードに移行させます。 (旧命令)
・パワーダウン モードでは、システムクロックと共に、タイマー用の外部発振器も停止します。
・AVRを起動するには、外部からのレベル割り込みかウォッチドッグ割り込み、もしくはRESETピン
によるシステムリセットが必要です。
・新しいチップには、電力管理のための、いくつかのオプションが用意されていますので、
データシートを参照して下さい。
|
| POWERSAVE |
一覧へ戻る |
AVRを、パワーセーブ モードに移行させます。 (旧命令)
・パワーセーブ モードは、搭載されていないチップもあります。
・パワーセーブ モードでは、システムクロックが停止されますが、タイマー用の外部発振器は
動作し続けます。
・AVRを起動するには、外部からのレベル割り込みかウォッチドッグ割り込み、そしてタイマー2割り込み
もしくはRESETピンによるシステムリセットが必要です。
・新しいチップには、電力管理のための、いくつかのオプションが用意されていますので、
データシートを参照して下さい。
|
|