| TOP | ホーム | ページ一覧 |

No.14802 への▼返信フォームです。
 
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モード不具合?  引用
  投稿者: O-Family    ..2022/06/20(月) 08:08  No.14804
  .jpg / 93.9KB

Compare0A = 6 - 1
でいいと思いますけどね。
Re:TINY2313の COUNTERモード不具合?  引用
  投稿者: そら    ..2022/06/20(月) 12:57  No.14805
  .jpg / 48.8KB

AVI添付できないですね。
画像添付します。
Re:TINY2313の COUNTERモード不具合?  引用
  投稿者: そら    ..2022/06/20(月) 12:58  No.14806
  .jpg / 64.4KB

ヒューズビットです。
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(月) 13:16  No.14808
  すみません。
オシロをよくみると改善されてました。
原因はわからないですが、たぶん凡ミスだと思います。
お手数をおかけしました。
ありがとうございました。
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でした。
お手数をおかけしました。
ありがとうございました。



名前
Mail   URL
文字色
タイトル   簡単タグ入力
添付   >>お絵かき
フォームに保存  プレビュー      削除キー