スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ラーメンタイマー ついに完成!

どうもです。
あれから結構悩んだんですが、どうも不自然なとことろがありまして、ためしにFor文のループ回数を3くらいにして試してみたのですが、無限ループするのです。しかも、2ループ毎くらいにGPIO.3とGPIO.4のLED点灯を飛ばして、GPIO1に戻ってくるのです。

明らかおかしいと思い、考えた結果、どれかしらのGPIOがLowになってから、次のGPIOがHighになる時がほぼ同時で、そこでプログラムがエラってハングして再起動してるのではないかという結論に達したわけですが、早速試してみました。

変更したところは、

①LEDフラッシャーの間隔を、0.25秒から1秒に変えた。
②GPIOがLowになってからHighになる直前に、約1usの遅延を挿入。
③1回のFEDフラッシャーが4秒になったことにより、For文のループを45回に設定。

です。

とりあえず3回くらいの軽いループで試運転してみました。
・・・いけたじゃん!!!
前までの動作が嘘のように、ちゃんと動いてるではありませんか。と言うことで、実際に45回のループでやってみることにしました。
・・・ちゃんと45回ループしてブザーなったけど、時間が若干早い・・・

だがしかしっ!これはすばやく解決。

LEDのフラッシャーには、Delay関数を使っています。これはただの遅延要素であって、TMR0みたいにクロックから正確な時間を割り出していませんので、多少の誤差が生じるのです。
けれど、わざわざこれくらいのプログラムにTMR0を使うのは面倒ですし、自分自身も理解しきってない所があるので、TMR0は使いません。と言うことで、実際に時計の秒針を見て、微調整することにしました。結果、1秒は、大体1140msに安定しました。大した用途じゃないんだから、大体でいいんです大体で(サーセン


とまあ、無事に完成しました。いや~よかったよかった。試行錯誤した結果がありました。次回改良するとしたら、TMR0の導入かな(笑)
近いうちに、写真とかとってうpしたいです。

~追記~
いつも食べている日清麺づくりは、待ち時間が4分なので、3分と4分にブザーを鳴らすように設定しました。

それでは皆さん、ここまで見ていただいてありがとうございました。これからもよろしくお願いします。


↓最終的なプログラム↓

program timer_v2


sub procedure flash

GPIO.0 = 1
Delay_ms(1140)

GPIO.0 = 0
Delay_us(1)
GPIO.1 = 1
Delay_ms(1140)

GPIO.1 = 0
Delay_us(1)
GPIO.2 = 1
Delay_ms(1140)

GPIO.2 = 0
Delay_us(1)
GPIO.4 = 1
Delay_ms(1140)

GPIO.4 = 0
Delay_us(1)

end sub

sub procedure Buzz(dim ln as word,dim cn as byte)

dim m as byte
dim n as word

m = 0

while m < cn

for n = 0 to ln

GPIO.5 = 1
Delay_us(500)
GPIO.5 = 0
Delay_us(500)

next n

Delay_ms(60)
m = m + 1
wend

end sub


dim count as byte


setting:
CMCON = %00000111
ANSEL = %00000000
TRISIO = %00000000
GPIO = %00000000

main:

for count = 0 to 45 step 1
flash
next count

Buzz(60,134)

for count = 45 to 58 step 1
flash
next count

Buzz(60,134)

end.
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメント

Secret

No title

完成おめでとう^^
一つ分からないところがあるんだけど、ブザーのあとにGoto mainがあるのはなぜかな?

No title

ありがとう!
あ~Goto mainは、特に意味ないです^^;
消すのを忘れてた的なw
FC2カウンター
プロフィール
名前:どじょりん
年齢:18歳
埼玉県所沢市在住
2014/4から新社会人
常に金欠

どじょりん

最新記事
カテゴリ
月別アーカイブ
最新コメント
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。