プログラムをあちこちいじくり、匙を投げて2時間くらい電源を入れっぱなしでほったらかして起きました。
夕食後オシロの電源を入れると、何と全く正常に機能しています。
これは一体どうしたことか?
プログラムを書き込む時に正常に書き込みは出来たのですが、使っていないポートから変なパルスが出ています。数回書き込みをやり直して見ましたが結果は同じ。
それならばと、チップイレーズをして書き込んだところどうやら変なパルスは出なくなりました
。
でも時計は表示せず。こんな状況で色々やったのですが結果はすべてNG。
勝手に動き始めた?tiny2313がおかしい可能性もありそうです。
今度新品を入手してやって見ます。
取りあえずmega88用を2313に書き換えて動いたと言うことにします。
動かない時の現象は、タイマオーヴァーフロウが11回起きてその後65msは割り込みなし、その後
再び割り込みが起きる事の繰りかえしです。
正常に動作しているmega88は割り込みは常に継続しています。
なぜ65msの間割り込みが出なくなるのか?疑問が残ります。
まるでWDTリセットでも起こってるかのような症状です。
ところで、基板写真にパスコンが見当たりませんが、裏面ですか?
パスコンは基板の裏側に0.1uFのチップコンを数個入れてあります。WDTはdisableしてあるのですが。
どうもすっきりしない顛末です。
もう1個2313が有るのですが同じ現象ですが、こちらは壊れている可能性が有ります。もう一度新品で調べてみることにします。
思いますが。
RAMの使用量は、ボラタイル宣言に関係して
いるのでは?
(ボラタイル宣言、メモリの開放?くらいの
曖昧理解しか知識が有りませんので。
この様に考えましたが、OK or NG。
水平1本掃引 0.1msx10(div)=1ms
垂直16本 8x8(div)=64
1x64=64ms
オシロの掃引時間(0.1ms)x10DIVは時計の表示に無関係です。と言うのは時計の表示文字の大きさ、間隔はCPUのCLKで決まってしまいます。オシロは単にそのCPUのメモリ内のイメージを投影しているだけです。
CRTの管面に適当な大きさで全体が表示出来るように時間軸を設定します。
timer0のOVFは64us毎に起きますが、何故かこの割り込みが中断してしまうのでそれを測ったら65msだったと云うことです。
プログラムを解析するとこの時計のからくりが良く分かりますので、ぜひトライしてみて下さい。
作ればすぐ動くでしょうが、それで終わりではもったいないです。
これは、おかしいぞ。
先のセパレータしか表示しないという症状と矛盾する。
分秒セパレータが表示されるためには、トリガー信号を発生させた割り込み以降14回の割り込みがなければならないはず。
11回とは、トリガー信号の勘違いだろうか
その通りです。64usのOVFが出なければ分秒セパレータが出るわけないですね。11回では時分セパレータだけしか出ません。
手持ちの2313が2個あるのですが、1個は現象が出なくなってしまいました。不具合の出る方でもう一度確認しました。
トリガーが10発出てその後、60ms中断してまた10発出るこれの繰り返しの様です。
現象の出なくなったものと不具合が同じかどうかは分かりませんが。
現象の出なくなったものでは時分、分、秒セパレータが11発出ていてその後65ms中断そしてまた11発出る繰り返しでした。
mainルーチンには100msのdelayがあるからkの時間以上経過しないとセグメント展開はしない。
BORの設定はどうなっているだろう?
レセットpinはPULL-UPしていますか?
AVRのリセットpin内部ブルアップされていますが抵抗はかなり大きいようでセンシティブです。
私の経験では、RESETピンのみをピンセットでツンツンとつついたらRESETが掛かりました。
BORは禁止にしてあります。
>レセットpinはPULL-UPしていますか?
10KでVccにプルアップしてあります。
プルアップはどのくらいが適当ですか?
10Kは適切な値だと思います。
2.2Kでプルアップしたら負荷として重すぎてAVRISPで書けなかったことがありました。
3/2の写真をみると、抵抗が7本見えていて
LED右の抵抗がLED用制限抵抗だとすると、1本少ないなと思ったんですけどね。
SW用に2本,2bitDACに4本