問題タブ [avr-gcc]
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++ - 静的ライブラリをリンクするときの未定義の参照
avr-arを使用して作成されたライブラリがいくつかあります。それぞれにいくつかのオブジェクトが含まれています。
library1のオブジェクトには、library2のオブジェクトのシンボルが必要です。問題は、すべてをコンパイルしようとすると問題が発生することですundefined reference
。
これは失敗しているところです。$(INCLUDE)$(CFLAGS)$(LIBS)では何も派手なことはありません。
私はUbuntu12.04を実行していて
ライブラリからオブジェクトを抽出し、すべてをライブラリに入れると、すべてがうまくいきます。
それらを別々に保ちたいのですが、これを達成する方法はありますか?
avr-gcc - avr-gccで自分自身を使用して変数を変更できませんか?
マイクロコントローラーの C コードで問題が発生しています。言語またはコンパイラの問題のようですが、プログラムは問題なくコンパイルされます。ただし、マイクロコントローラで実行すると、問題が明らかになります。
(これは Atmel AVR AtTiny26 用です。)
アナログからデジタルへのコンバーターから値を読み取り、10 を掛けています。
これは正しく機能しませんでした。計算でADCから読み取ろうとすることが問題だと思ったので、試しました:
これも機能せず、マイクロが不安定になりました。(アナログ値が低い限り機能しますが、ある値に達すると、リセットするまで ADC から値を取得することはありません。)
これはうまくいくようです:
別の変数を導入すると問題は解決しますが、ややこしいようです。どうしたの?
EE に関する関連質問: https://electronics.stackexchange.com/q/38404/2028
編集:
これは、コンパイルの最適化に関係している可能性があります。コンパイル時にコマンド ラインで -Os と -O2 または -O3 を指定すると、異なる結果が得られます。最適化によって、そのような変数割り当ての仕組みが変わる可能性はありますか?
c++ - avr-gccでの自動割り当て解除
8ビットAVRマイクロコントローラーのプログラミング私はこのコードに示されている振る舞いに出くわしました:
SYSTEM_DISPLAY_FREE_RAM()は、http://jeelabs.org/2011/05/22/atmega-memory-use/で説明されているように、使用可能なRAMを計算し ます。実行がSomeClass::start()に達すると、次の出力が得られました。
オブジェクトclassA
は、の内部で作成および破棄されますがwhile
、メモリはの開始時に割り当てられているようでありdebugMethod()
、メソッドが終了するまで残ります。私は、メモリがしばらくの間だけ割り当てられることを期待していたので、Free Ram: 2458
。
何が起こっているのかについての説明はありますか?
キーワードwhile
を使用せずに、の内部で割り当てを強制的に実行する方法はありますか?new
使用したコンパイラ:avr-gcc(WinAVR 20100110)4.3.3
avr - atmega 32署名行の読み方は?
atmega32 の署名行を読み取ろうとしましboot_signature_byte_get(0);
たが、このエラーが発生しました: 'SIGRD' undeclared (first use in this function)
SPMCR に SIGRD ビットを持つ AVR でしか署名を読み取ることができないためです (私は推測します!)。
これは正しいですか?それでは、どうすれば署名行を別の方法で読むことができますか?
c - 一部のLEDを保持できない:オン、他のLEDが点滅している場合
私はマイクロコントローラーとしてAVRを使用し、プロセッサーとしてATMEGA8を使用しています(マイクロコントローラー内)。マイクロコントローラーを搭載したボードには4つのLEDがあります。プログラムを焼き、LEDを点灯させることができます。しかし、私は特定のことを達成することができません。
これらは4つのLEDです。最初のラウンドでは、各LEDが3秒後に点灯します。最後のLED(L4)は、最初のラウンドの後も点灯し続けます。3番目のラウンドが開始すると、各LEDは3秒のギャップで点灯し、L3はL4も点灯し続けます。点灯し、それは続きます....L1まで。
しかし、私はこれを達成することができません。1つのLEDをオンに設定すると、他のLEDがオフになるためです。10ミリ秒という小さな時間差を追加してみました。これを行うにはどうすればよいですか?これが私が今まで持っているものです:
embedded - フリッツィングでArduinoスケッチを実行する
私はハードウェアでプログラミングを学ぼうとしていますが、そのためにArduinoを注文しました。それが届けられるのを待っている間、私はぶらぶらし始めて、Fritzingに出くわしました。マイクロコントローラにLEDを取り付けることができます。私の問題はこれです:
Fritzingには、ArduinoおよびPICAXEマイクロコントローラー用のコードを記述するために使用できるIDEが付属しています。ArduinoのLEDを点滅させるコードを記述したので、それをコンパイルして、作成した回路図に添付することができません。それ、どうやったら出来るの?実験プログラムウィンドウのページはあまり役に立ちません。
c - コードを確認して、外部 ADC 値を読み取ります
AVR マイコンを新たに使い始めました。ATmega32-A マイコンを使用しています。外部 ADC (AD7798) を 1 つ接続しました。SPI通信で外部ADCの値を読みたいのですが、いろいろ試してみたのですが、ADCの値を取得できません。私のプロジェクトは、プログラム可能な波形発生器を備えたマイクロコントローラーを使用して波形を生成する必要があることです。私はこれをうまくやっており、この信号をセンサーに与えています。ADCからセンサー出力を読み取りたい。以下に簡単な回路図を添付しました。私はこのようなコードを書きました
すべての関数を別のファイルに書きました
データシートを何百回も読みましたが、それでも ADC 値を読み取ることができます。私は自分がしている間違いを混乱させています。すべてのピンをチェックし、オシロスコープを使用して ADC 入力ピンをチェックしたところ、0.6V の入力信号が得られました。この問題を解決するのを手伝ってください。明日がこのプロジェクトの締め切りです。ADC値を読むのを手伝ってください。
前もって感謝します
c - マイクロコントローラを使用して信号の位相値を変更する
プログラム可能な波形発生器 AD9833 と ATmega32-A マイクロ コントローラー (MCLK = 8MHz クロック周波数) を使用して正弦波を生成しようとしています。USART 通信を使用しているため、ハイパー ターミナルで周波数または位相を変更すると、波形の周波数と位相を変更する必要があります。以下に示すように、このための小さなコードを書きました。
しかし、上記のコードから正弦波を生成しています。周波数を入力すると、波形の周波数も正確に変化しますが、位相を変更しようとすると、ここに問題があります。フェーズに 90 度を入力すると、10 度変化しますが、90 度は変化しません。私はビットがありませんか?位相のみの問題。
前もって感謝します。
たとえば2.5度などの位相の浮動小数点値を入力したい場合は、何を変更する必要がありますか。関数の「unsigned int フェーズ」を「float フェーズ」に変更します。そのようにしようとすると、「<<」はフロートと互換性がありません.35.8度としてフェーズに入りたい場合はどうすればよいですか。私に提案してください。
前もって感謝します。
c++ - 配列 + 共用体 + ビット フィールドを含む構造体 C++
私はちょうどビット フィールドをいじっていたところ、回避方法がよくわからないものに出くわしました。
(プラットフォームに関する注意: int のサイズ = 2 バイト、long = 4 バイト、long long = 8 バイト - 異なる可能性があることを知っているので、言及する価値があると考えました。また、「byte」型は「unsigned char」として定義されています)
2 つの 36 ビット変数の配列を作成し、それらを 9 バイトの配列で結合できるようにしたいと考えています。これは私が思いついたものです:
私は、匿名構造体の一部として 2 つのビットフィールドが存在することになっていることをコンパイラが認識し、それらを 9 バイトのスペースにまとめるという理論に取り組んでいました。ただし、それらはバイト境界で整列されることが判明したため、共用体は 9 バイトではなく 10 バイトを占有します。これは完全に理にかなっています。
問題は、このような 2 つのビット フィールドの配列を作成する方法があるかどうかです。「packed」属性を考慮しましたが、コンパイラはそれを無視します。
これは期待どおりに機能しますが (sizeof() は 9 を返します):
配列としてアクセスできるようにすることが望ましいでしょう。
編集: これが機能しない理由について説明してくれた cdhowie に感謝します。
幸いなことに、私が望むものを達成する方法を考えました:
c++ - マクロは 2 つの引数を渡しましたが、1 つしか取りません
私のコードは、次のエラー メッセージで正常にビルドされませんでした:
そしてそれはこの行で発生します:
ここに hton_us への参照があります
使用するように指示された同様の質問を読みましたtypedef
が、役に立ちませんでした。