いつもお世話に成っております。
RX65Nのファームウェアを開発しております。
RF565N9ADFB にE1のJTAG接続して書込み&デバッグいます。
今回1ビット幅が1usの信号を出力する必要が生じました。
スマートコンフィグレータの8ビットタイマコンポーネントを使用し
クロックソース PCLK (60000kHz)
コンペアマッチAの値(TCORA) 100 ns
としてTCORAコンペアマッチ割込みを許可として10カウントして
1us毎に0 or 1を出力しようとしたのですが上手く働きませんでした。
調べるとコンペアマッチ割込みのタイミングが100nsではなく、1000nsでした。
設定ではコンペアマッチAの値(TCORA)の値は20nsまでは可能なのですが
実際には1000ns程度が最小の様でした。
スマートコンフィグレータでは設定可能でも実際の出力は不可能という事でしょうか
それとも小職の勘違いorスマートコンフィグレータ上では不可能でもレジスタを直に
設定すれば可能になるのでしょうか。
何分初心者でRX65Nを扱うのは今回が初めてですので小職が勘違いしている可能性も
有りますのでその場合は平にご容赦頂きたくご教授の程宜しくお願い申し上げます。
Hasunuma
Hasunuma 様、鈴木と申します
100nsの割り込みで10カウントすると1000ns(1us)は、正しいと思うのですが
us単位にしたい場合は、ns/us/msをボックスから選択できます。
また、もっと長い割り込み周期にしたい場合は、クロックソースをPCLK/2~PCLK/8192
などに変更してください
以上、よろしくお願いします
チョコです。
鈴木さん、話が食い違ってはいないですか?
あくまで、タイマは100ns周期で割り込みを発生し、割り込み処理でソフトで10カウントして1μsのタイミングを作りたいのではないかと思われます。
問題は、タイマの設定の問題ではなく、100nsで割り込み処理を実行できるかの問題ではないかと思います。
RXは使ったことはありませんが、RX65は120MHz動作で100ns毎の割り込みを処理できるとは思えません。
1000nsで割り込みを発生させて、カウントしないで出力を反転させることは可能でしょうけど。
チョコ様
有難う御座います
タイマクロックは60MHzなので1クロック17ns、システムクロックならば100nsのカウントは可能かなと思ったのですが
実際は無理なようですね。
実際の出力はクロック1usとして
スタートビット 1Bit Hi
データビット 8Bit Hi or Low
ストップビット 1Bit Hi
これを6バイト繰り返します。
あ、すみませんスタートビット間違えました。
正しくは
スタートビット 1Bit (1us) Low
やはりポートへの出力でクロックを食ってるようですね
TMO0でトグル出力するとやはり設定値を小さくしてもパルス幅1us程度が最小でした。
Hasunumaさん、こんにちは。NoMaYと申します。普通のUARTの信号ですよね?RX65NのUARTを使うのでは具合が悪いのですか??
Hasunumaさん、こんにちは。NoMaYです。すみません、120MHzからだと丁度良いボーレートが作れないのかも、と思い浮かびました、、、
1Mbps(0.9Mbps~1.1Mbps)の調歩同期通信の信号を出力したいということですか。
>コンペアマッチAの割込み回数カウントを9~11で変えれば
ソフトでカウントするのではなく、0.9μs~1.1μsをコンペアマッチでやってしまうのはだめなのでしょうか。
また、割り込みがだめなら、DTCで1ビットずつ出力は使えませんか。
NoMaYさんもコメントされているように単純にSCIをUARTで使うのもありかもしれません。スマートコンフィグレータで1MbpsのUARTを設定し、BRRレジスタの設定値を書き換えれば、ボーレートを調整できるのでは。
RXは使ったことはないので、他にいい方法があるかもしれませんが、思いついたのは以上の方法です。
以上
こんにちは。NoMaYです。> ソフトでカウントするのではなく、0.9μs~1.1μsをコンペアマッチでやってしまうのはだめなのでしょうか。ひょっとしたら、RXマイコンのスマートコンフィグレータのConfigコンポーネントで、動的に割り込み間隔を変更するやり方が分からなかった?のかも知れませんね、、、(何かしら微調整をやりたいとのことでしたが、それは動的な微調整ということだったのかも知れません、、、)話を単純化してしまえば、単にRXマイコンの内蔵周辺レジスタの1つを上書きすれば良いだけですけど、もし仮にSTM32マイコンではAPIの引数で変更出来るようなAPI体系になっていて、でもRXマイコンではそうなっていないので途方に暮れていたという状況も有りえるのかな?と、ふと脳裏に浮かびました。
NoMaY様、リカルド様、チョコ様
有意義なアドバイス有難うございます。
指摘の通りプロトコルはUART同等です。
コンペアマッチAをトグル出力してみたのですが1000ns以下に成ると
コンペアマッチのトグル出力は大丈夫でも割込み数をカウントしながらの
ポートへの出力は厳しいようです。
皆様がおっしゃる様にTCORAレジスタの値を直接書き換える方法がベストという
事が分かりました。
有難う御座いました。