問題タブ [atmelstudio]
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++ - Atmel Studio を汎用 C コンパイラとして使用
C を掘り下げて学習しようとしています。私の最終目標は、AVR プログラミングとハードウェアにもっと向かうことなので、AtmelStudio をダウンロードしました。
C の入門書を読んでいて、AtmelStudio でコンソール プログラムを書く方法を知りたいですか? すべてのプロジェクト タイプは AVR/ARM に焦点を当てているようで (理にかなっています)、デバイスを選択する必要があります。
簡単なプログラムをコンパイルして cmd ウィンドウで実行するために AtmelStudio を使用できますか?
windows - AVR ATMega 2560 USB ドライバー エラー
ATMega 2560 のドライバーのインストール中に問題が発生しました。ATMEL の Web サイトからドライバーをダウンロードしました。インストール中は問題ありませんでしたが、小さなウィンドウがポップアップすると、ドライバーが x64 オペレーティング システムと互換性がないというエラーが表示されます。多くの同僚が x64 を使用しています。必要に応じて、エラー メッセージの一部を抜粋します。
PS私はx64 Windows 8.1を使用しており、最新のアップデートがインストールされており、Atmel Studio 6.2.1153を使用していることを忘れていました
c - ステート マシンでの同時ティック機能の誤動作
私が書いているコードの目的は、PINA の 0 番目のビットが 1 のとき、PORTB に表示される数字がインクリメントされることです。同様に、PINA の 1 番目のビットが 1 の場合、数値が減少します。ボタンを押し続けると、1 秒に 1 回の割合で増減します。ボタンが 3 秒以上押された場合、レートは 400 ミリ秒ごとに 1 に増加します。両方のボタンを押すと、PORTB に表示される数字が 0 にリセットされます。タイマーの周期は 100 ms に設定されます。
ステート マシンを「同時に」実行する 2 つのステート マシンに分割しました。1 つの SM は、増加/減少する期間を調整し、もう 1 つの SM は、待機/加算/減算/リセット状態間の遷移を行います。
私が抱えている問題は、期間を変更するステート マシンがまったく何もしていないことです。インクリメント/デクリメントする前に待機する必要があるティック数 (10 に初期化) を追跡するためのグローバル変数があり、インクリメント/デクリメント状態にとどまるティック数が 30 ティック (3秒)。しかし、このマシンはまったく何もしていません。同時 SM が開始されるとすぐに永久に 4 ティックに変更されるように変更しましたが、それでも何もしません。インクリメント/デクリメントは、400 ミリ秒ごとではなく、1 秒ごとに行われています。
コードの何が問題になっていますか? 問題のコード:
microcontroller - AVR Atmega32 マイクロコントローラでスイッチケースが機能しない?
こんにちは、switch-case ステートメントも if,else ステートメントも機能しません。以前は PINA を使用していた「スイッチ ブロック」の PORTA レジスターに特定のデータが入ったときに、PORTB と PORTD の両方にデータを提供したいと考えています。 PORTAの代わりにまだ動作しませんが、デバッグを開始し、PORTA = 0b00001110を指定してデータを与えると、PORTB = 0b00000010の値が簡単に得られます....助けてください..
c - C: Atmel Studios で 1D 配列を使用して 2D 配列を初期化できない
そこで、次のようにして 2D 配列を作成しようとしています。
そして、そうしようとすると大量のエラーが発生します:
私は何を間違っていますか?
c++ - 別のクラスのメンバー配列に設定された値に初期化されたクラスの静的ポインター
メンバー変数として uint8_t の配列を持つクラスがあります。メンバー配列に書き込むと、他のクラスの静的メンバーが配列内の値で上書きされます。これらのオブジェクトを次のように使用しています。
私の例では、次のように定義されたクラスがあります。
その clear 関数は次のように実装されています。
シングルトンとして実装された別のクラスがあります。これは次のように実装されます。
SSD1305.h:
SSD1305.cpp:
SSD1305Params で「クリア」を呼び出すたびに、バッファに書き込まれた値が SSD1305 の静的メンバー「インスタンス」を上書きします。そのため、'clear' を呼び出した後に SSD1305 のインスタンスを取得しようとすると、値が 0x00000000 または 0xFFFFFFFF のポインターが取得されます。そのため、SSD1305 オブジェクトで後続の関数を呼び出すと、SEGFAULT が発生します。これは、シングルトンとして実装したすべてのオブジェクト (レポート メカニズムを含む) に当てはまります。
なぜこれが起こっているのでしょうか?SSD1305Params をインスタンス化すると、バッファーには独自のスペースが定義されると思いますが、他のオブジェクトの静的メンバーと同じスペースを占有しているようです。ありがとう!
編集: ssdp の作成をコメントアウトして、SSD1305 インスタンスが配置されている場所を取得すると、アドレス 0x20000030 にあることがわかります。メモリ マップを見ると、data.impure_data というセクション内にあります。
一体何が起こっているのですか?私はそれがヒープにあると思いましたか?うーん
編集2:
レポート メカニズムを使用して (clear を呼び出さずに) オブジェクトのアドレスを取得すると、次の値になります。
したがって、バッファが 512 バイトを超えて割り当てられていることがわかります。それは実際には520です。これは、mallocが行うパディングのせいだと思います
c++ - AVR でカスタマイズされた PORT と PIN を定義または作成する方法は?
PORT
カスタムまたはPIN
AVR で定義または作成する方法は?
たとえば、(MSB)、、、、、、(LSB)でPORTX
構成される新しい 8 ビット ポートを定義してみましょう。そのため、次のコードを実行するたびに:PA0
PA1
PB0
PB1
PC0
PC1
PD0
PD1
&の1
両方に割り当てられ、残りは.PC1
PD1
0
同様に、次のコード (仮定PC1
& PD1
5V にプルアップ)
に割り当て5
ますmyValue
。
c++ - 値 120 を static const unsigned char に代入したり、値 200 を const static unsigned int に代入したりできません
私は Arduino 以外の組み込み C++ にはかなり慣れていませんが、これまでに遭遇したすべての問題を修正できましたが、この問題は除きます。Atmega 1284P で Atmel Studio を使用し、C++ でコーディングしています。次の変数を使用して TTL シリアル入力と比較しています (シリアル入力は 0 ~ 255 で、単一の符号なし char バイトで転送されます)。
STEER_DEADZONE_MIN またはリストされている符号なし char のいずれかを使用しようとすると、それらは 12 として表示されます。Atmel Studio シミュレータ ウォッチ ツールと組み込みデバイスの LCD に出力することの両方を使用して、プログラムが 12 として認識していることを確認しました。const を削除するという unsigned char の修正を実際に思いつきましたが、値を変更したくないので、そこに const があります。次のように宣言します。
これにより、値は正しく 120 または 136 になりますが、値が誤って変更される可能性があります。また、メインループ内で次のように割り当てを行うと、次のようになります。
これにより値も修正されますが、他の関数がそれにアクセスできないため、他の問題が発生します。
const unsigned int に関しては、一見関連する問題もあります。メインループの外で宣言すると:
値は 37900 になりますが、メイン ループ内で次のように宣言しようとしました。
これで値が修正されますが、上記のように、関数が値にアクセスできなくなったため、役に立ちません。この場合、メイン ループの外側で const を削除しても、値は修正されません。私はこの時点で本当に途方に暮れています。この時点で他に考えられる唯一のことは、これらすべての const 変数を使用して設定クラスを作成し、それが値を修正するかどうかを確認することです。次はそれを試して、結果を更新します。