問題タブ [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.

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

c++ - Atmel Studio を汎用 C コンパイラとして使用

C を掘り下げて学習しようとしています。私の最終目標は、AVR プログラミングとハードウェアにもっと向かうことなので、AtmelStudio をダウンロードしました。

C の入門書を読んでいて、AtmelStudio でコンソール プログラムを書く方法を知りたいですか? すべてのプロジェクト タイプは AVR/ARM に焦点を当てているようで (理にかなっています)、デバイスを選択する必要があります。

簡単なプログラムをコンパイルして cmd ウィンドウで実行するために AtmelStudio を使用できますか?

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

windows - AVR ATMega 2560 USB ドライバー エラー

ATMega 2560 のドライバーのインストール中に問題が発生しました。ATMEL の Web サイトからドライバーをダウンロードしました。インストール中は問題ありませんでしたが、小さなウィンドウがポップアップすると、ドライバーが x64 オペレーティング システムと互換性がないというエラーが表示されます。多くの同僚が x64 を使用しています。必要に応じて、エラー メッセージの一部を抜粋します。

PS私はx64 Windows 8.1を使用しており、最新のアップデートがインストールされており、Atmel Studio 6.2.1153を使用していることを忘れていました

0 投票する
0 に答える
48 参照

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 秒ごとに行われています。

コードの何が問題になっていますか? 問題のコード:

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

microcontroller - AVR Atmega32 マイクロコントローラでスイッチケースが機能しない?

こんにちは、switch-case ステートメントも if,else ステートメントも機能しません。以前は PINA を使用していた「スイッチ ブロック」の PORTA レジスターに特定のデータが入ったときに、PORTB と PORTD の両方にデータを提供したいと考えています。 PORTAの代わりにまだ動作しませんが、デバッグを開始し、PORTA = 0b00001110を指定してデータを与えると、PORTB = 0b00000010の値が簡単に得られます....助けてください..

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

c - C: Atmel Studios で 1D 配列を使用して 2D 配列を初期化できない

そこで、次のようにして 2D 配列を作成しようとしています。

そして、そうしようとすると大量のエラーが発生します:

私は何を間違っていますか?

0 投票する
0 に答える
139 参照

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が行うパディングのせいだと思います

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

c++ - AVR でカスタマイズされた PORT と PIN を定義または作成する方法は?

PORTカスタムまたはPINAVR で定義または作成する方法は?

たとえば、(MSB)、、、、、、(LSB)でPORTX構成される新しい 8 ビット ポートを定義してみましょう。そのため、次のコードを実行するたびに:PA0PA1PB0PB1PC0PC1PD0PD1

&の1両方に割り当てられ、残りは.PC1PD10

同様に、次のコード (仮定PC1& PD15V にプルアップ)

に割り当て5ますmyValue

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

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 変数を使用して設定クラスを作成し、それが値を修正するかどうかを確認することです。次はそれを試して、結果を更新します。