問題タブ [atmega]
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.
avr - JTAGICE mkII クローンを使用した ubuntu の avrdude - ATmega1280 の接続の問題 (RSP_ILLEGAL_JTAG_ID)
うまくいけば、ここで質問するのに十分長い間苦労してきました...
このような JTAGICE mkII の安価なバージョンと ATmega1280 を接続することはできません。最初に JTAG デバッグ用のヒューズを設定しようとしています。ここ(およびここ) で説明されているように、既に udev 構成を行っています。
編集: AVRStudio を使用して、Windows の JTAGICE を介してハードウェアをコンピューターに接続できるので、配線は問題ないと確信しています。
私が得ているのは次のとおりです。
これは JTAGICE の問題を解決するのに役立つと読みました。残念ながら、それがどのように役立つかはわかりませんが、おそらくあなたはそうするでしょう:
システムでデバイスが認識されている
また、USB ハブの背後にもありません。すべての接続をトリプルチェックしました。手がかりはありますか?
embedded - Atmega32 が死んでいるかどうかを確認する
これを投稿するのが適切な場所ではないことはわかっていますが、特定のチップが死んでいるかどうかはどうすればわかりますか? 私の友人はこの Atmega32 を持っていて、おそらく 9V バッテリーに 1 分間接続したようです..彼はそれについて確信が持てませんが、チップが損傷していると思います.それで、それが事実であるかどうかを確認する方法はありますか?
assembly - これはアセンブリで何をしますか
私の先生は私たちに組み立ての基本的な理解をしてもらいたいと思っています。なぜなら、後でそれが役立つかもしれないからです。私はそれで大丈夫ですが、私の大学は、4つの小さな例を除いて、この主題に関するドキュメントを提供していません。私はこれで何が起こっているのかを理解しようとしています:
私はAVRスタジオ5で働いており、「プロセッサー」タブを見ています。'varclist'の値と、レジスターが表示している16進値との間に関係が見つからないようです。これをどのように見るのですか?
「最上位」ビットが最初に宣言され、最下位ビットが最後に宣言されたと想像するので、Zレジスタには0x0100が含まれていると思います。ただし、0x0070が表示されています。しかし、シフトが何をするのかはわかりません。
c - _delay_us() でインライン if (?:) が機能しない
1-Wire 実装で使用しようとすると_delay_us(condition ? value_if_true : value_if_false)
、遅延が機能せず、デバイスからの応答が得られませんが、次のように置き換えると正常に動作します。
lcdにインラインif値を表示すると、正しい値が表示されます。
では、この 2 つの表記法にはどのような違いがあるのでしょうか。_delay_us() で動作する場合、どうすればインライン化できますか?
c - AVR atmega8 を使用した C での予期しない float の動作
unsigned int と float 値を乗算しても適切な値を取得できない理由を理解しようとしています。
65535*0.1 のようなことをすると期待どおりに動作しますが、float にメモリからの uint を掛けると、おかしな値が作成されます。ADC を読み取り、uin16_t を返す関数があります。この値を使用して、正常に動作している 4 桁の LED ディスプレイに出力しています。
同じ値に 1.0 を掛けると、まったく異なる結果が返されます (私のディスプレイには大きすぎるため、それが何であるかはよくわかりません)。
私のコードは以下にありますが、競合の領域は main() の一番下にあります。どんな助けでも素晴らしいでしょう。ありがとう
main.c:
メイクファイル:
編集: OK、私はコードをいくらか単純化しました
c - ブレークポイントを設定するとシュレーディンガーのバグが消える
コードに奇妙なバグがあり、デバッグしようとすると消えてしまいます。
私のタイマー割り込み(常にシステムティッカーを実行している)には、次のようなものがあります:
私のメインループには
メインループのこの条件は、タイマーの条件が(私が思うに)満たされているときに呼び出されることはありません。条件は外部です(ポートピン、ADCの結果など)。まず、位置1にブレークポイントを設定しましたが、トリガーされることはありません。
それを確認するために、ブレークポイントnrを設定します。2行目some_global_flag = 1;
で、この場合、コードは機能します。条件が真の場合、両方のブレークポイントがトリガーされます。
アップデート1:
あるタイミング条件が原因であるかどうかを調査するためif
に、デバッグなしで実行している場合はタイマーに入力されないため、タイマーに次を追加しました。
フラグは、コード内の他の場所では使用されません。それはRAMにあり、RAMは最初にゼロにクリアされます。
現在、すべてのブレークポイントが無効になっている場合(または、メインのブレークポイント1のみが有効になっている場合)、コードは正しく機能せず、関数は実行されません。ただし、NOPでブレークポイント3のみを有効にすると、コードは機能します。ブレークポイントがトリガーされ、続行した後、関数が実行されます。(それは目に見える出力と聞こえる出力を持っているので、それが実行されるかどうかは明らかです)
アップデート2:
タイマー割り込みは、最初の「SEI」によって割り込み可能でした。その行を削除しましたが、動作は目立った方法で変更されていません。
アップデート3:
外部メモリを使用していません。フラッシュの制限に非常に近いので、コンパイラで最大でサイズを最適化します。
コンパイラ(CodeVision)が責任を負うことができますか、それとも私は何か非常に間違ったことをしましたか?
c - AtMega328 から AtMega644p への移行
最近まで Atmega 328/L 40pin を使用していたロボットを持っていて、より多くのリソースが必要になったので、Atmega 644p に移行しました。
レジスタとビット名は 2 つの間で異なり、正直なところ、新しいものを正しく動作させることができません。データシートに記載されている変更に従っていることは確かですが、私の知識不足が邪魔をしていると感じています。
動作した 328 関数は次のとおりです。
そして、ここに私が働こうとしているコードがあります:
私はこれまでこれらを扱ったことがなかったので、最善を尽くしています。
ここで私が間違っていることは明らかですか?
よろしくリー
c++ - C++で画像を表示する
小さな液晶画面に画像(最終的には音声付きのビデオも)を表示するプログラムを作成したいのですが、SDカード付きのatmega328チップを使用して画像を保存したくありません。私を正しい方向に向ける助けがあれば大歓迎です。
c - MicroController (Atmel) 上の CRC-32
現在、ATMEGA1280 で着信データストリーム (シリアル通信) 用に CRC-32 を実装しようとしていますが、C の組み込み側でこれを行う方法が少しわかりません....誰かが私を適切な方向に向けることができればおよび/またはとにかく助けていただければ幸いです...