問題タブ [avr]

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.

0 投票する
2 に答える
4838 参照

c - ピン変更割り込み-内部割り込みを伴う外部割り込み

このプログラムでは、タイマー割り込みを使用してLEDを循環しています。誰かがスイッチを押すと、最初の割り込みを停止し、押されたスイッチに応じてLEDを点灯させる2番目の割り込みをトリガーする必要があります。ここで、どの割り込みが呼び出されているか少し混乱しています。ピン変更割り込みについていくつかの本を参照し、PCMSK2を設定するための数行を書きました。取得している出力は、「スイッチが押されると、最初はすべてのLEDが循環しています... LEDの循環が停止して最初からやり直します(つまり、プログラムが入力を読み取っており、2番目の割り込みをトリガーしていません)。停止しません。または一時停止して、後続のLEDが点灯しません。」誰か助けてもらえますか?

たくさんのご支援ありがとうございます。

0 投票する
10 に答える
21100 参照

usb - USBプログラミング

マイクロコントローラ (AVR) をプログラムして、USB 経由でいくつかの LED を制御したいと考えています。USB デバイスを構築してプログラムする方法に関心がありません。USB プロトコルをサポートする AVR マイクロコントローラーがいくつかあります。また、別のマイクロコントローラーで USB プロトコルを自分で実装することもできますが、コンピューターに独自のドライバーを書き込むには何を使用すればよいのでしょうか。

システム プログラミングの私のレベル: 完全初心者 (したがって、質問)

では、USB テクノロジと、独自のドライバを作成する方法などについて十分な知識を得るためにアドバイスする文献は何ですか?

PS: 私は知っています:

  • C (おそらくここで必要になるでしょう)

  • Java (おそらくここでは必要ありません)

  • Python(ここで使用できることを願っています)

  • アセンブラ (XD では必要ないことを願っています)。

  • ...

PPS: ドライバーの開発は、OS ごとに異なります。私は Linux と Windows を使用しているので、これらのシステムの一方または両方に関連する資料は大歓迎です。

0 投票する
2 に答える
2777 参照

android - Android の Bluetooth 制御信号 (DTR、DSR、RTS、CTS)

Bluetooth SPP を介して Android 経由で Arduino をリモートで再プログラムしたいと考えています。最初のステップは、ATMEGA マイクロコントローラーをリセットすることです。これは、DTR ラインを切り替えることによって Arduino で実行されます。Android 環境から Bluetooth SPP 制御線を制御する API はありますか?

0 投票する
4 に答える
3677 参照

c - ATmega32 を使用した LCD 上の配列からの ASCII 文字の表示

この関数を使用して単一の文字を操作する Atmega32 に接続された LCD があります。

文字を引数としてこれを呼び出すことができます。これはsend_char('a');機能します。

次に、 send_string 関数をラップしてみました。

これは、ASCII 値が大きくずれていることを示す意味不明なメッセージを LCD に表示するだけです。また、空の文字列 ( send_string("")) を渡そうとすると、少なくとも 3 つの意味不明な文字が LCD に表示されます。

0 投票する
1 に答える
70 参照

c++ - USB_DEVICE_FEATURE is disabled というエラー メッセージの問題を解決するにはどうすればよいですか?

私は現在、ATMEL の AVR32 EVK1104 ボードに取り組んでおり、そのボードに C++ コードを書き込もうとしていますが、うまくいきません。ボードは機能していましたが、コードを追加しようとしたところ、そこにあったものが消去されました。そのため、最初からやり直して、ボード上でサンプル コードを実行しようとしていますが、常にコード USB_DEVICE_FEATURE が無効になっているようです。Windows レジストリに移動し、データ値を 3 に変更してすべてのポートが有効になっていることを確認しましたが、それでも同じエラー メッセージが表示されます。誰もこれについて何か考えがありますか?

0 投票する
1 に答える
158 参照

c++ - バイナリが見つからないため、起動に失敗しました

AVR32 studio 2.6 を使用して C++ プロジェクトをコンパイルしようとしていますが、実行しようとするたびに、バイナリが見つからないため、起動に失敗したと表示されます。このエラー コードの修正方法はありますか?

0 投票する
3 に答える
1629 参照

c - #define を使用した C のポインター

関数:

関数呼び出し:

次のような構造体として定義された bit_field:

&port がどこに定義されているかわかりません。

関数がどのように読み取られ、どのように機能するかを誰かが説明してもらえますか? 私はポインターが苦手で、特にこの例は、先頭と末尾の "*" とポートの "&" が非常に紛らわしいです。

ありがとうございました

0 投票する
2 に答える
1519 参照

arrays - 38bit バイト配列を ASCII Decimal に変換する方法

TI TM3705A チップを使用して FDX RFID タグを読み取り、それを UART 経由で別のプロセッサに送信するためのルーチンと AVR ATMEGA88 を作成しています。このチップは 15625 ボーを使用し、他のプロセッサは 19200 ボーでデータを受信します。

受信データ (38 ビットの ID 番号 - 例: 00 11 E3 D6 7C) を読み取り、CRC チェックを行ってから、タグの一意の ID を表すわかりやすい 12 桁の 10 進数 (000300144252) として出力します。

これまでのところ、配列にこの 38 ビットの数値があります。

私が興味を持っている実際の数は、要素 2:6 にあります。いいえの2つのMSBの。6 は、次のデータ ブロックの開始であるため、無視する必要があります。

配列内のバイトを10進数の「000300144252」として出力する効率的な方法を探しています。

long long 型にパックしてから sprintf %d を使用しようとしましたが、たとえば temp = data << 32 で詰まるようです。sprintf がそのサイズの数値をまだ処理できるかどうかはわかりません。私は、この種のもののためにC#や他の怠惰な言語に本当に甘やかされてしまったことを認めます:)

「そのまま」10進数に変換する方法はありますか?つまり、最上位桁(6)から読み取り、UARTで10進数のASCII桁を出力し、大きな中間バッファなしで5,4,3,2を出力します。のような?これらのチップでは、メモリが少し制限されています。

0 投票する
2 に答える
1992 参照

string - 文字列を保存し、ATmega168VでASM言語で操作する(最初の宿題)

文字列をメモリに保存し、その文字列にアクセスして小文字を大文字に、またはその逆に変更しようとしています。私が理解していないのは、文字列のアドレスとそのアドレスのASCII値を参照する方法です。データとアドレスの操作に問題があるだけで、ロジックを理解できると思います。2つを区別するにはどうすればよいですか?注:これは宿題のコーディング課題です。

0 投票する
4 に答える
2206 参照

c++ - c / c ++は、関数を呼び出す際の定数変数を最適化します

C / C ++コンパイラーは、-Os、-O1、および-O2を使用する場合にのみ、定数パラメーター(コンパイル時に既知)を使用して単層関数を最適化します。すべてのレイヤーを最適化するわけではありません。-O3だけがそれを行うことができます。gccはWinAVR4.3.3であり、属性「optimize」をサポートしていません。

以下以外の可能な解決策は何ですか?

  1. -O3ホールドプログラムまたはファイル(誤用するとサイズが大きくなります)
  2. 関数の属性optimize-O3(4.3.3はサポートしていません)
  3. マクロ(エラーが発生しやすい)

アップデート:

f1は最適化されていますが、警告'_delay_us'は静的ですが、静的関数の問題のために静的ではないインライン関数'f1'で使用されています。その他は最適化されていません。


解決:

インラインが鍵です。私の外部関数はインラインには大きすぎます。属性always_inlineは、関数を強制的にインライン化します。これにより、コンパイラーは、最適化を理解しようとするよりも少ないコンパイルコストで関数を最適化できます。-O3は、最適化を実行するのに十分スマートですが、-Osは実行できません。-OSにはいくつかのコンパイラオプションが必要な場合があります。(内部関数も静的インラインであるため、キーワードstaticが必要です。)