google-site-verification: google3bd66dd162ef54c7.html

PICAXEを使ってみるーその4 PWMでタイマー割り込み作ってみた

 PICAXEにはタイマー割り込みが無いことを嘆いていたら、その記事にTK-80BSさんからコメント。PWMでI/Oピンから割り込みかければいいのでは?というアドバイスを頂きました。

 何だかいけそうな気がするので早速テストしてみました。

1.原理
 PWMの出力ピンから適当なピンにPWMの信号を再入力し、そのピンを監視して割り込みかければいいんじゃない。ということです。

▼最初にテストした回路
PICAXEでタイマー割り込み。こんな線は不要
 C.2(Pin5)から出力されるPWMの信号をC.3(Pin4)へ入力しています。これで動きました。

 でも割り込みの検出にはC.3を見に行かないでも、いきなりC.2ピン(Pin5)を見ればOKでした。つまりC.2からC.3への配線は無くても大丈夫。それよりも、ピンを一つ余分に消費しないで済むのは助かります。

2.動作確認
 確認のために以下のようなプログラムを書いてタイミングを観察
pwmout pwmdiv64, 2, 249, 128    ;PWM on C.2 2ms/16ms 
setint %00000100, %00000100 ;accept IRQ from C.2(posi)

main:
low c.1 ;Output Low on C.1
goto main

interrupt:
high c.1 ;Output High on C.1
tp1:
if pinC.2 = 1 then tp1 ;Wait till C.2 = Low
setint %00000100, %00000100 ;Set again for next IRQ
return

 先頭の、pwmout pwmdiv64, 2, 249, 128
 これでPWMから周期16ms、幅2msのパルスを発生させています。これがパルス周期を最大に設定した付近で切りの良い値です。パルス幅はもっと短くても大丈夫でしたが、mainでどんな処理をやっているかで必要なパルス幅は変わるはずで、これが最適かどうかは判らないです。
 二行目のsetintで割り込みの検出条件を指定。もちろんC.2を監視させます。

 プログラムとしては、メイン側ではC.1をOFFに、割り込み処理ルーチンではC.1をONにしています。したがって、C.1をオシロで観察すれば処理のタイミングが判るという仕掛けです。

▼動作波形
PICAXEタイマー割り込み波形
 上がPWM、下がC.1の波形。オシロのトリガはPWMでかけています。

 PWMがHiになってから約2.5ms後にC.1がHiになっています。つまり割り込みの起動には約2.5msかかるということです。ずいぶんかかるもんですが、PICAXEの仕様では仕方ないでしょう。
 割り込みルーチンの中ではほぼ何もさせていませんが、それでもメインに処理が戻るまで2msくらいはかかっているようです。
 C.1の波形にジッタがあるのは、BASICのコマンドの間で割り込みを起動させるというPICAXEの仕様上避けられない現象でしょう。

3.まとめ
 ともかくPWMによるタイマー割り込みは成功です。ピンを一つ犠牲にしないといけませんが、タイマー割込みが使えると何かと便利だと思います。

 割り込み間隔はPWMの仕様の制限から最大で16ms。もっと長い間隔が必要な場合は、プログラムの中にカウンタを持つなりして細工すれば良いでしょう。
 最小の割り込み間隔はPICAXEのBASICの処理速度を考えると5msあたりが限界と思います。

 実は現在開発中のUSB電流チェッカーではこのタイマー割り込みの方法を使って10ms周期の動作が出来ています。そこいらあたりの話は、製作編の記事ででも紹介予定です。

 ということで、TK-80BSさんの提案はうまくいきました。ナイスアイディアありがとうございます。
関連記事

tag : 08M2

コメントの投稿

管理者にだけ表示を許可する

お見事です!

なるほど、ピンは一本だけで済みますし、割り込みを間引けば長周期にもできる訳ですね。
チョットおたおたしましたが、お役に立てて良かったです。

re:お見事です!

TK-80BSさん、どうもです。おかげさまで出来ました。

タイマー割り込みが無いと出来ないことや、出来たとしてもすごくややこしくなる場合が多いのでこれは助かります。
たぶん他のPICAXEユーザーにも参考になるのではないでしょうか。

画期的です!

なんと、PWM出力ピンをリード出来るんですね。これは目からうろこです。タイマー割り込み手法が大いに役にたちます。使わせていただきます。

re:画期的です!

air_variable さん、おはようございます。

そうなんですよねー、これ結構画期的ではないかと自画自賛w
PWMもちゃんと出力のラッチを介してピンに出ているってことなんでしょうね。
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード