問題タブ [mikroc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pic - pic 16F877のPWM解像度
ここでは、PIC コンパイラに pic 16f877 MCU と mikroc を使用して PWM 信号を理解しています。データシートによると、この MCU は PWM で 10 ビットの分解能を持っています。この決議が何を意味するのか理解できません。それを使用してモーターに電力を供給すると、1024 の異なる速度を得ることができるということですか。これは、LEDの光を徐々に増やしてから再び減らすためにmikrocで書いたプログラムです。
しかし、これは期待される結果をもたらしません。LED が徐々に点滅し、突然オフになり、再び徐々に点滅します。しかし、行
while(i != 1023)
を `while(i != 255) に変更すると、期待される結果が得られます。
10ビットの解像度が何を意味するのか知りたいのですが、それを間違って理解したのか、それとも何か間違ったことをしているのでしょうか。
助けてください....
avr - タイマー & オーバーフロー割り込み MikroC コード
それから
しかし、それは私にとってはうまくいかないので、タイマー0とその割り込みサービスルーチンを開始する正しい方法ですか??
c - MikroC、折れ線グラフの描画
GLCD 画面の特定のウィンドウ内に折れ線グラフを描画する関数を作成しようとしています。
ウィンドウの x 軸がピクセル 24 から 205 まで (左から右) にあり、y 軸がピクセル 55 から 5 まで (低から高) にあるとします。
新しいデータが利用可能になるたびに、グラフに新しい値 (またはドット) を追加する必要があるだけです。したがって、データ収集ルーチン内でグラフの更新を呼び出すことができます。それは問題ありません。
最新の値は常に、グラフの最も右の位置 (205) に追加する必要があります。そのため、その線をクリアして、新しい値/ドットを描画する必要があります。また、問題ありません。
しかし、私が確信していないのは、ウィンドウの境界に達するまで、以前のすべての値/ドットをリフレッシュ時に左に1つシフトする方法です(新しい値/ドットがx位置205に追加されるたびに) 、これは 22 です。
どんな助けでも大歓迎です!
添加:
c - MikroC、dsPIC UART 受信割り込みの問題
UART 経由で他のデバイスと通信しています。デバイスにコマンドを送信して、特定の情報を要求しています。使用可能な回答が得られるまで、コマンドを繰り返します。
私が抱えている問題は、静的で既知の文字列の長さを扱っているときに、私が使用する ISR が正常に機能することです。しかし、この場合、受信している文字列の長さはいつでも異なる可能性があります。たとえば、デバイスにエラーがあるかどうかによって異なります。したがって、最初の 5 つのリクエストで、予期した長さよりも短いまたは長いエラー文字列が返されたとします。試行 6 では、予想される長さの文字列が生成されますが、(ソフトウェア) バッファーが何らかの形で破損しているようです。フレーミングの問題のように、バイトが正しい場所にありません。
これは、現在の ISR です。
そして、メインコードでそれを処理する方法:
この状況をより適切に処理するには、コードをどのように設定する必要がありますか?
hardware - MikcoC ハードウェア割り込み
mikroC を使用して PIC 16F876A をプログラムしようとしています。ボタンを特定のポイントまで押したときに実行するプログラムが必要です。終了する前に、ボタンが再度押されるまで停止して待機します。ハードウェア割り込みを使用することがこれを行う方法であると読みましたが、私のものを機能させることはできません。ヘルプ/アドバイスをいただければ幸いです。ありがとうございます。
c - pic16f877a を使用した太陽トラッカー ステッピング モーター シミュレーション
時間に基づいて 2 軸の太陽追跡のコードを作成しました。LCD と pic 16f877a を接続しています。問題が発生しました。ここで見つけた問題は、int am1
出力が 1.0 になるように記述した場合 (出力に 1.8 を表示したい) ということです。ここで、1.8 はモーターのステップ角です。double am1
演算子がこのオペランドには適用できないというエラーが表示されるので、それを書くと。ちゃんと回転しないので書いてlong am1
みると、1.8度回転してから逆方向に3.6*回転します(ステップ角を考えると1.8*)
また、別の問題があります。最初に 2 つwhile
のループを配置while(count2>13)
しwhile(count2<13)
、特定の条件が満たされない場合。while ループの後、無限ループに移動する必要がありますが、無限ループの最初の 2 つのループの後、最初for
から開始しているように見えwhile
ます。私は何かに気づきました: 2 番目のwhile
ループを削除すると、つまりwhile(count2<13)
、プログラムは正常に動作するように見え、その逆も同様です。1 番目while
のループを削除して 2 番目のループを保持すると、正常に機能します。さて、以前の問題が発生した原因がわかりません。
floating-point - PICマイクロコントローラ用のMikroCプログラムでfloatを文字配列に変換する
インターネットで入手したプログラムを変更しようとしていましたが、ここで見つけました:
PIC マイクロコントローラーを使用した超音波距離センサーの ASCII 出力とのインターフェイス
距離を LCD ディスプレイに出力する前に、距離を計算する必要があります。文字列を float に変換することに成功しました。そのコードは次のとおりです。
stdio を追加した場合、sprintf() は機能しますか? または、ロジックを最初から作成する必要がありますか?または、他のライブラリ関数を使用できますか?
c - UART pic18~pic18
文字「C」を送信できず、受信機の写真に表示されません。LCDはいくつかの特殊文字を印刷しますが、「C」はありません... ;(
送信機:
レシーバー:
2 つの写真 18F26K22 を unsing し、シリアル ポートを初めて使用します...機器がないため、テスト方法がわかりません。私のコードは適切ですか? 私はプロテウスを使用しておらず、金属に取り組んでいます。ありがとう。