TINY2313の COUNTERモード不具合?
投稿者: そら
|
2022/06/19(日) 20:08 No. 14802 引用 |
|
ご教授お願いします。 バージョンは2.0.8.5 TINY2313を使ってタイマー0カウンターで一定のパルスカウント測定ごとに出力したいのですが、 例えばCompare0A = 6にするとなぜか6+2(!?)の8パルスごとに出力します。 なので現在Compare0A = 4にしています。
入力は+10〜-10を矩形波(テストでファンクションジェネレータより出力)を波形整形してコンパレーターNJM2903を通して0-5V出力をT0(PD4)に入力、 6パルスごとにPortd.5からパルス出力。
$regfile = "attiny2313.dat" $crystal = 16000000 $hwstack = 48 $swstack = 10 $framesize = 28
Config Portb = Output Config Portd.0 = Output Config Portd.1 = Output Config Portd.2 = Output Config Portd.3 = Output Config Portd.4 = Input Config Portd.5 = Output Config Portd.6 = Input
Config Timer0 = Counter , Edge = Rising , Clear Timer = 1 Config Timer1 = Timer , Prescale = 1024 , Clear Timer = 1
Reset TCCR0B.WGM02
Reset TCCR0A.COM1A1 Reset TCCR0A.COM1A0 Reset TCCR0A.COM1B1 Reset TCCR0A.COM1B0
Reset TCCR1A.WGM11 Reset TCCR1B.WGM13
Reset TCCR1A.COM1A1 Reset TCCR1A.COM1A0 Reset TCCR1A.COM1B1 Reset TCCR1A.COM1B0
Tifr = &B10000000
Reset Ucsrb.3 Reset Ucsrb.4
Config Aci = Off Set Acsr.acd Reset Acsr.acie Didr = &B00000000
On Compare0A Count_int On Compare1a Tint1
Enable Interrupts
Disable Int0 Disable Int1
Enable Compare0A Stop Timer0 Compare0A = 6
Enable Compare1a Stop Timer1 Compare1a = 50
Waitms 500 Start Timer0
Do
Loop End
Count_int: set Portd.5 Start Timer1 Return
Tint1: reset Portd.5 Stop Timer1 Return End
以上
|
|
Re:TINY2313の COUNTERモード不具合? |
引用 |
投稿者: O-Family ..2022/06/19(日) 22:36 No.14803 |
|
Timerの比較器を設定する場合は、0からカウントするので、 Compare0A = 6 - 1 です。
比較割り込みが発生しても割り込み内でカウントを続けるので、そのあたりで誤差が出ているのでは? 詳しく見てみないと、微妙なタイミングはまだ不明です。
|
|
|
|
|
|
Re:TINY2313の COUNTERモード不具合? |
引用 |
投稿者: そら ..2022/06/20(月) 13:02 No.14807 |
|
解答ありがとうございます。 Compare0A = 5(6-1)は承知しております。 おかしなアンサーなので色々プログラムを変えたりしての結果です。 上記プログラムを、 Compare0A = 5 Compare1a = 15 添付画像は、 青色-コンパレーターからPD4への信号 ピンク色-PD5マイコン出力 緑色-ファンクションジェネレータから140HZ出力 以上です。
|
|
|
|
Re:TINY2313の COUNTERモード不具合? |
引用 |
投稿者: そら ..2022/06/20(月) 15:23 No.14809 |
|
追記: 原因判明しました、ヒューマンエラーの伝達ミスでした。 6パルスごとにマイコン1パルス出力は、 センサー信号を波形整形して0-5Vに変換して6パルス目に信号出力してほしいとのことだったのですが、 実際は回転する歯がNO1〜NO5の5歯あって、一個の固定センサーから信号が来るので、 「NO.1ごとで出力してほしい」とのことでした。 確かにNO.1から数えると6番目ですがNO.1に戻っていますが・・・ 5パルスごとなので、Compare0A = 5-1でした。 お手数をおかけしました。 ありがとうございました。
|
|
|