
No.3ベストアンサー
- 回答日時:
>AVRマイコン活用ブックというのを見ているのですけど、うまくいきません。
というかいきなりTCNT1とか TIFRとかTCCR1Aとか出てきて何のことかと思ってしまいます。説明が悪い本ならほかの本も検討してみるべきでしょう。
>ATmega168の周波数は20MHzで
これは間違いないですか?
外部クロックで20MHz供給される回路が付いているんですね?
「わかるマイコン電子工作AVRマイコン活用ブック」の特製マイコンボード(LED Game for AVR)だと20Mhzでは有りません。マイコンボード名を明かして貰えると問題がないか判断できますが。
>調べてたらTCNT1は16ビットタイマで数え終わるとオーバーフローしてFFFF から0000に戻るということやTCCR1Bはプリスケーラ値を決める。プリスケーラ値は分周で8と64と256と1024の間隔で分周が出来る、 TCCR1B=2なら8ずつ分周するのですかね。0っだたら分周せず、1だったらクロックのまま、3だったら64ずつといった感じですか、というか TCNT1は勝手に数え始めているんですか?
クロックを供給したら(TCCR1B=2)数え始めます。
分周の1/1024とタイマの1/65536で最大クロック8Mhzなら=8000000/1024/65536で最大約8秒まで。クロック20Mhzなら最大約3秒まで数えられますね。
とうとう出来ました。16bitTimerも動かせて、1秒計ることができました。プログラムは
#include <avr/io.h>
#include <stdio.h>
int main(void)
{
TCCR1A = 0;
TCCR1B = 3;
DDRC = 0xff;
DDRB = 0x00;
while(1)
{
while(TCNT1 < 16000);
TCNT1 = 0;
PORTC ^= 0x01;
}
}
です。1秒ごとに点滅するプログラムです。
今回協力いただいて本当にありがとうございました。
No.4
- 回答日時:
動きましたか。
良かったですね。ただ、この方法だと2つ、3つと複数のRCサーボ制御は困難です。
PWMとか割り込みを覚えてくださいね。
とりあえず一個動かすことが目標だったんで今は成功の余韻に浸っております(笑)
また制御が出来ませんという日が来るかもしれませんがそのときはどうかよろしくお願いします。
No.2
- 回答日時:
書籍を紹介したはずですが、購入されましたか?
>TCNT1やTCCR1Aを使うのだろうというのはわかったんですが、どこにどう組み込めばいいのかがわかりませんのでそこらへんを教えてほしいです。
例が載っていたはずですが、それを読まれての質問でしょうか?
>16 bit timerで1秒を計る
たぶん直接1秒毎の割り込みは無理だと思います。それ以下のタイミング(たとえば10ms)で割り込みを発生させて1秒分カウントさせるしかないでしょう。
所で、5/12の「スイッチでサーボ制御」#6のソース提示はしてもらえるんでしょうか?
AVRマイコン活用ブックというのを見ているのですけど、うまくいきません。というかいきなりTCNT1とかTIFRとかTCCR1Aとか出てきて何のことかと思ってしまいます。調べてたらTCNT1は16ビットタイマで数え終わるとオーバーフローしてFFFFから0000に戻るということやTCCR1Bはプリスケーラ値を決める。プリスケーラ値は分周で8と64と256と1024の間隔で分周が出来る、TCCR1B=2なら8ずつ分周するのですかね。0っだたら分周せず、1だったらクロックのまま、3だったら64ずつといった感じですか、というかTCNT1は勝手に数え始めているんですか?
No.1
- 回答日時:
組み込まれていればタイマーではなくリアルタイムクロック(RTC)を使うのが普通ですが、ATMega168ではRTCはオプションのようなのでそれはさておき。
1秒分のクロックを計測した時点で割り込みが発生するようにして割り込みハンドラで明滅を実施する、というのが基本方針になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# win10で、正確な待ち時間の作り方 6 2023/02/14 18:28
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(プログラミング・Web制作) VS codeを使って、ラズパイ Picoを動かせる簡単な方法 1 2023/04/27 13:49
- ノートパソコン 現在、fu....さんWindows11proを使用しているのですがエクセルの起動が少し遅く色々試し 7 2023/04/01 10:30
- 工学 エミッタ設置増幅回路で下記の要件を満たす増幅器を設計せよ。 要件は必要要件であり、例えば、少なくとも 1 2022/12/16 10:15
- CPU・メモリ・マザーボード メモリの増設について 6 2022/12/28 06:41
- Excel(エクセル) エクセル終了が遅くなった 7 2022/04/19 12:11
- 英語 下のサイトページと同じ質問なのですが、1人目と2人目の英語圏の回答者さんが違う答えを出しているような 4 2023/05/31 06:09
- モニター・ディスプレイ パソコンの画面の一番下に、一定の間隔で点線が出たり消えたりする 1 2022/07/09 10:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PICでスピードメーターを作...
-
RTCの通信方法(I2C、S...
-
PICでパルス数をカウントする方法
-
Sleep関数について
-
H8/3052 ディップスイッチについて
-
インラインアセンブラの関数に...
-
PowerPC用逆アセンブラを知りま...
-
実行ファイルからソースはみれる?
-
ビットデータの取得方法について
-
2アドレス方式について
-
DoJaで多倍長演算する方法
-
ATtiny2313のヒューズビットOSCCAL
-
CやC++の言語について
-
株式会社レジスタって所からNTT...
-
x86系でリアル←→プロテクトモー...
-
MASMの機種依存についてお尋ね...
-
メモリアドレスについて
-
PS3に搭載されている"Cell"は、...
-
C++ のDLLがdelphiで読めない
-
分解能10msのタイマー(dosで)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PICでパルス数をカウントし、カ...
-
組み込みマイコンの誤動作について
-
C言語によるウェイト
-
Z80CPUを用いてステッピングモ...
-
C言語のプログラミングについて
-
H8/3048F インプットキャプチャ...
-
PICでパルス数をカウントする方法
-
PICのUSBホストコントロ...
-
入力回数のカウントをする方法
-
PICマイコンを使った分解能1μs...
-
PICの入出力切り替えの時間がプ...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
レジストってなんですか?
-
C言語で128bitの2進数のビット...
-
実行ファイルからソースはみれる?
-
ビットシフトってどんな時使うの?
-
文字参照は10進数と16進数では...
おすすめ情報