お世話になります。AVRマイコン初心者です。
ATtiny2313 を使い、メロディICの入力端子に4bit分のデータをシリアルで送りたいです。
メロディIC → SM11125ABV (セイコーNPC製)
データシート → ftp://ftp.npc.co.jp/pub/pdf_j/1125abv_nc0720a.pdf
やりたいことは、SM1125ABVの入力端子SI, SCに選曲のためのデータを送り、選曲することです。
データシートにあるように、1bit分のパルス幅は2μsです。
ようは、この幅のパルスを出力できればいいのですが・・・・
何から始めればよいのか・・・・
検索したら、UARTというのが見つかりましたが、例がやたらと文字列の送受信で…
文字列の部分を0 ,1 に置き換えたら、H、Lのパルスが出力されてくれるのか???
それとも、タイマで割り込みのタイミングでH、LをI/Oポートから出力させればいいのか???
WinAVRを使います。
どうかアドバイスよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
UARTはPCなどとのデータ通信用のものであり、
5~9bitのデータを伝送するものですから、4bitのデータ伝送には使えません。
データシートを見ましたが、「パルス幅は2μs」というのは最小値であり、
それより長い分には問題なさそうですので、ソフトウェア的なポート制御で問題なさそうです。
タイマ割り込みでも、ポーリングでもどちらでも組みやすい方法で組めばいいかと思います。
ポーリングで組むなら、
#include <util/delay.h>
しておいた上で、
SCが繋がっているピンをLに
SIが繋がっているピンに1ビット目の値をセット
_delay_us(3);
SCが繋がっているピンをHに
_delay_us(3);
SCが繋がっているピンをLに
SIが繋がっているピンに2ビット目の値をセット
_delay_us(3);
SCが繋がっているピンをHに
_delay_us(3);
…以下略。これを全部で4回繰り返す
という処理でいいでしょう。
このコードでは、_delay_us(3); で3μs待たせています。
ですが、2μsというのはスペック上の最小値ですし、
内蔵RC発振器で動作させる場合、発振周波数に誤差があるので、ギリギリのタイミングで動作させるよりはある程度余裕を持たせるべきですから、これぐらいで十分でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- PDF 「PDF文書を簡単にWordで編集する方法」と 罫線が 図形で出力されるのは? 6 2022/06/14 06:51
- Excel(エクセル) 更新前と更新後の差分をVBAを使って抜き出したい 5 2023/06/01 14:35
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PLCとPCの通信
-
フラッシュメモリへの書き込み
-
TCNTとTIFRの意味
-
カーブフィットを行うプログラ...
-
PICマイコンでプログラム!パソ...
-
大学工学部のCプログラムの授業...
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
VBSで応答不要のメッセージボッ...
-
TCP/IP通信時のサーバーからの受信
-
DoEvents関数って何?
-
C# の OpenFileDialog
-
プロセスIDの取得方法について
-
C言語で、メモリを解放しないで...
-
C# シリアル通信でデータ受信...
-
sil_rew_memのメモリアクセスに...
-
左シングルクリックとダブルク...
-
WSH(VBScript)でアプリケーショ...
-
GetDlgItemInt( ) c++
-
C言語primeについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PLCとPCの通信
-
レジスタマップって何ですか?
-
SH7144でパルス幅を測定したい。
-
組み込みマイコンでのソフトウ...
-
アセンブラプログラム
-
マイクロ秒で精度が出るタイマー
-
機械語のレジスタペアについて
-
シリアル通信でのデータ取りこぼし
-
H8マイコンのプロテクト方法
-
フラッシュメモリへの書き込み
-
マイコンからSDカード内のテキ...
-
TCNTとTIFRの意味
-
グラフィックLCD SG12...
-
2つのアナログ信号が一致して...
-
古い計量機器からのrs232cを使...
-
USBハブの自作について
-
RTCで取得した値をLCDに表示したい
-
printf文で変数のアドレスを表...
-
arduinoを使って重さ計測
-
マイコンSPI入門
おすすめ情報