問題タブ [microcontroller]
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.
c - ARMの32ビットポートの15番ピンから値を取得するには?
私は IC の DS1620 を使用して、単一のラインで受信する 1 ビットのシリアル データを読み取ります。ARM マイクロコントローラ (LPC2378) のポートの 1 つを使用して、このデータを読み取る必要があります。ARM ポートは 32 ビットです。この値を 1 ビット変数に入れるにはどうすればよいですか?
編集:つまり、ポートピンへの直接参照が必要です。
c - ARM マイクロコントローラ ポートからデータを読み取る手順
ARM LPC2378 マイクロコントローラからのシリアル データの読み取りに問題があります。UART を使用する必要がありますか、それとも任意の GPIO ポートを使用できますか?? 誰でもそれのためのCコードを持っていますか??
network-programming - 802.11送信機を作成し、WiFiルーターからデータを読み取る
この質問には2つの部分があります。記事へのURLを教えたり、本を提案したりするだけでも構いません。フォーラムにすばやく回答するには、答えが少し深いかもしれません。
1)一対のワイヤーを流れるワット数を感知し、802.11を介してそれに関するデータを送信する必要があります。マイクロコントローラーが関係していると思いますが、どこから始めればいいのかわかりません。セキュリティは必要ありません。送信機に一定の間隔(たとえば、1秒あたり1フレーム)でデータをブロードキャストさせたいだけです。
2)ステップ1でブロードキャストされたデータを802.11ルーターから取得する必要があります。手順1で、任意の数の送信機に対してこれを実行できるようにしたいです。手順1の各送信機には、802.11ルーターから検索できる特別な種類のIDがありますか?ルーターで「ハンドル」を取得して、ルーターが受信しているデータを確認する方法すらわかりません。したがって、最初にルーターを取得するにはどうすればよいですか。次に、手順1で送信機から送信されたこれらの複数のデータストリームを確認するにはどうすればよいですか。
ありがとう、ジェイ
pointers - 循環バッファポインタの不規則性
これは、この質問のフォローアップです。以前に受信したUART値を表示します。
マイクロコントローラに循環バッファを実装した後、ポインタに問題があるようです。
RS-232で送信:ADE1234
受信(バッファ= 8):E24AE2 / E2AE24(2つの間を反転)受信(バッファ= 16):D234E1(Aはシンクロバイトであるためスキップされます)
受信(RX_BufSize = 32):DE1223 / DEE123 / DE1234 / DE12E1(ランダムに反転)
期待される受信:DE1234
初期化
LCDに表示されるデバッグ値
受信割り込み
ソースからの関数
Detect_Cmd_RXDは、1/256秒ごとに呼び出されます。その間、UART受信バッファで少なくとも7つの値が送信されます。
書き込みプロセスが非常に高速で、読み取りポインターに追いつく可能性はありますか?Detect_Cmd_RXDをより頻繁に呼び出す以外に、この問題を解決するにはどうすればよいですか?
linux - µC プログラミングに進みたいのですが、どこから始めればよいかまったくわかりません。
MCUプログラミングに「移行」することについてかなり長い間考えてきましたが、問題は、マイクロコントローラーなどを使用したことがないことです。私が言われたように、AVR と PIC は愛好家の間で最も一般的なマイクロコントローラーであり、明らかにほとんどの人が私のような初心者に AVR を勧めています。愛好家コミュニティ。AVR や PIC などは、私にとってはあまり重要ではありませんが、Linux で優れたコンパイラを使用して C コードを記述でき、最終的には MCU に LCD スクリーンを追加できるようになることを望んでいます (基本的なASCII文字を出力するためだけに、おそらくあちこちに数ピクセルをモノクロで描画し、大きなものは何もありません)。複雑なもの、非常に高速なもの、大量のメモリは必要ありません。私は、目標を達成するために少しの創造性が必要な、限定された (しかし限定されすぎていない) ものが大好きです。私はインターネットを見回しましたが、見つけたページのほとんどは何十年も前のものであり、購入できる良い「パック」を示唆していませんでした (そして、それは上記のことをサポートします)。だからこそ、少しでもお力になれればと思い、お願いしております。:)
ありがとう、ホッファ。
c - この C 関数は不適切な形式で記述されていますか?
この関数の目的は、0 ~ 99 の unsigned char 値を取り、それが 0 ~ 9 の場合は同等の ascii を返すか、関数の完了後に呼び出し元のコードから参照できる小さなグローバル文字配列を操作することです。
この質問をするのは、同じベンダーの 2 つのコンパイラがこのコードを異なる方法で解釈するためです。
このコードは、RS485 経由で送信されたアドレス バイトを解析して、send-lcd-string 関数に簡単に渡すことができる文字列にする方法として書かれています。
このコードは、PIC18 アーキテクチャ (8 ビット uC) 用に書かれています。
問題は、特定のコンパイラの無料/評価版が、パフォーマンス ヒットを被りながら動作する完璧なアセンブリ コードを生成することですが、有料でおそらく優れていると思われるコンパイラは、すべてのバイト配列のアドレスを参照できるという犠牲を払って、より効率的にコードを生成することです。私のLCDディスプレイのグラフィックスを駆動するために使用されます。
典型的ではないアーキテクチャに独自のコンパイラを使用することで、多くの泥を水に入れていることは知っていますが、誰かがいくつかの提案をしてくれることを願っています.
ありがとう。
embedded - 45DB161 データフラッシュと 89LP4052 コントローラーのインターフェース
データ フラッシュを 89lp 4052 コントローラと接続しようとしています。Crysal は 11.0592 MHz を使用しました。このコントローラには spi バスが組み込まれています。CPHA と CPOL のすべての組み合わせを試しました。モード 0 とモード 3 を試しました。ステータス レジスタを読み取ることができません。レジスタを読み取る場合もありますが、フラッシュからコードを ff するだけの場合もあります。
私のコードは次のとおりです。
;;============================================== ==============================
WRITE_FLASH: MOV 20H,#0D7H ;コマンド LCALL SEND_CLOCK_ONE LCALL READ_FLASH CLR SCON.1 MOV A,21H MOV SBUF,A JNB SCON.1,$ CLR SCON.1 ;;============= ================================================== ======== SETB CS CLR SCLK LCALL DELAY2 CLR CS ;再度選択 MOV 20H,#84H LCALL SEND_CLOCK MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#33H LCALL SEND_CLOCK LCALL DELAY2 SETB CS LCALL DELAY2 CLR SCLK CLR CS ;再度選択 MOV 20H,#0D4H LCALL SEND_CLOCK
MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#00H LCALL SEND_CLOCK
MOV 20H,#00H LCALL
SEND_CLOCK ,#00H LCALL SEND_CLOCK_ONE
;;============================================== ====================== SEND_CLOCK_ONE: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C, 05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SEND
MOV C,00H MOV DOUT,C LCALL PULSE_SEND_LAST RET ;;=================================== ===================================== READ_FLASH: LCALL PULSE_SEND MOV C,DIN MOV 0FH,C LCALL PULSE_SEND MOV C、DIN MOV 0EH、C LCALL PULSE_SEND MOV C、DIN MOV 0DH、C LCALL PULSE_SEND MOV C、DIN MOV 0CH、C LCALL PULSE_SEND MOV C、DIN MOV 0BH、C LCALL PULSE_SEND MOV C、DIN MOV 0AH、C LCALL PULSE_SEND MOV C,DIN MOV 09H,C LCALL PULSE_SEND MOV C,DIN MOV 08H,C LCALL PULSE_SEND RET ;;================================= ==================================== SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDDIN MOV 08H,C LCALL PULSE_SEND RET ;;======================================= ============================= SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT、C LCALL PULSE_SENDDIN MOV 08H,C LCALL PULSE_SEND RET ;;======================================= ============================= SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT、C LCALL PULSE_SENDC LCALL PULSE_SEND RET ;;========================================== ========================== SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDC LCALL PULSE_SEND RET ;;========================================== ========================== SEND_CLOCK: MOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDMOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDMOV C,07H ;MSB MOV DOUT,C LCALL PULSE_SEND MOV C,06H MOV DOUT,C LCALL PULSE_SEND MOV C,05H MOV DOUT,C LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDC LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SENDC LCALL PULSE_SEND MOV C,04H MOV DOUT,C LCALL PULSE_SEND MOV C,03H MOV DOUT,C LCALL PULSE_SEND MOV C,02H MOV DOUT,C LCALL PULSE_SEND MOV C,01H MOV DOUT,C LCALL PULSE_SEND
MOV C,00H MOV DOUT,C LCALL PULSE_SEND RET
;;============================================== ========================== DELAY2: mov 56H,#0FFH DJNZ 56H,$ mov 56H,#0FFH DJNZ 56H,$ RET ;; ================================================= ================= PULSE_SEND: SETB SCLK LCALL DELAY2 CLR SCLK LCALL DELAY2 RET ;;=================== ============================== PULSE_SEND_LAST: SETB SCLK LCALL DELAY2 RET ;;========== ========================================== PULSE_READ_FIRST: CLR SCLK LCALL DELAY2 SETB SCLK LCALL DELAY2 RET ;;========================================== ===============
終わり
c - C での Twitter フィードの解析
Twitter ユーザーの最新の緯度と経度を取得する方法を見つけようとしています (新しい Geo API データ、つまりタグから、Twitter ユーザーのタイムライン xml フィード<geo:point>
でそれらがどのように見えるかを確認できます)。また、そのデータの経過時間 (秒単位) をタグから取得する必要もあります。<created_at>
mbed マイクロコントローラーで使用するためにこれを C で記述しようとしているため、大きなライブラリを使用できません (理想的にはライブラリを使用しないのが理想ですが、それは悪い考えかもしれません)。mbed サイトではいくつかの軽いライブラリを提案しています- YAJLと FastXML は役に立ちそうです - しかし、私の C 知識は非常に基本的なものであり、どのように進めればよいかわかりません。
Twitter ユーザーのタイムラインを文字列として、および/またはディスク (JSON または XML) としてメモリに取得するためのコードがあると仮定すると、どのように進めればよいでしょうか?
現時点では、PHP を介して Web サーバーでこのスクレイピングを行っていますが、完了したらコードをリリースしたいので、C で行うことをお勧めします (そして、貧弱なサーバーに突っ込まれたくない! ) PHP は次のようになります。
これはかなりうまく機能しますが、これを C に変換する方法がわかりません! 何か案は?
これは、私が扱うことを期待している XML のスニペットです。
(ちなみに、mbed は素晴らしいです。C や電子機器に関する高度な知識がないにもかかわらず、素晴らしい時間を過ごしています。Farnellに 32 ポンドで在庫があり、間違いなくお金の価値があります!)
microcontroller - Verilog を学ぶためのリソース
私はVerilogが初めてです。学習リソース、本、ビデオ、ブログ、または個人的に良い経験があり、より速く学習するのに役立ったものを誰かが提案できますか?
参考になれば、私はいくつかの高水準言語でのプログラミングの経験がありますが、C でのプログラミングの経験はありません。
ありがとう
c - マイクロコントローラープログラミングのために学ぶべき言語は何ですか?
私はマイクロコントローラープログラミングを始めており、対照的な見方を聞いています。マイクロシステムプログラミングのために業界で最も使用されている言語は何ですか?これはあなたが自分の仕事で使っているものですか?そうでない場合は、なぜですか?
PS:答えがアセンブリ言語ではないことを願っています。