問題タブ [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.
assembly - アセンブリのタイマーに関する問題 [ATmega8]
2 つのポテンショメータから取得した 2 つの異なるサウンドを出力するプログラムを作成しました。
それに関する問題は、基本的にポテンショメータの値である遅延でブザーをオン/オフすることによって音が生成されることです。
しかし、周波数が高いほど、サウンドが再生される時間は短くなり、サウンドが再生される時間はその周波数に関連付けられていないことが必要です。
そこでタイマーを使うことにしました。
以下の構成を予定しています。
ご覧のとおり、これにより、指定された時間の頻度が得られるはずです。これまでの実装は次のようになります (PORTB はブザーです) (これは 1 つのサウンドのみです):
タイマーオーバーフロー関数は次のとおりです。
タイマーの初期化:
また、T2OVF、T0OVF の割り込みベクトルを設定し、一般的に割り込みを有効にしました。
しかし、うまくいきません。出力はランダムに見えます。どうしたの ?
embedded - Atmega 32、モーターを駆動するプログラム、ユーザーから入力整数を取得する方法
ユーザーが「モーター」と「25」を入力すると、モーターは時計回りに25度、反時計回りに25度回転します。
さて、問題は、これらの行を main() から削除するときです
& make items_read in move_clockwise(items_read);
as:
次に、ユーザーが「モーター」と入力すると、モーターは実行されてmove_clockwise(25);
いますが、実行move_anticlockwise(25);
されていません。私が望むのは、「モーター」、時計回りの数字と反時計回りの数字の両方を取ることです....
誰かがこれで私を助けることができれば、本当に感謝しています! 前もって感謝します!
c - 3 つの条件の順列の最速のアルゴリズムは何ですか?
最小限の手順で 3 つの条件を評価する最も簡単な方法について、誰か助けてくれませんか? 3 つの条件があり、2 つのいずれかが true になると、式全体がtrue
else になりますfalse
。
私は2つの方法を試しました:
別の方法は、変数i
を導入して
上記の2つよりも効果的な方法が他にあるといいのですが。
メモリに制約のある環境 (8 KB のフラッシュ メモリを搭載した Atmeta8) で作業しており、C で動作するソリューションが必要です。
c - C の long で個々のバイトに効率的にアクセスする (8 ビット プラットフォーム上)
バイナリ シリアル データ ストリームを受信するアプリケーションがあり、このデータ ストリームをさまざまな長さの個別の変数 (uint16_t
とuint32_t
) に分割する必要があります。
今、私は超単純なことをしています:
(データはリトル エンディアンで送信されます。これOFFSET_iTOW
は、データ パケットのさまざまなセクションの約 30 のオフセット (通常はヘッダー ファイルで定義されます) の 1 つです)
ただし、これにより、かなり膨大なアセンブリ出力が得られます (対象のセクションがわずかに切り捨てられます)。
これは、16 Mhz で動作する 8 ビット マイクロプロセッサ上で動作する割り込みサービス ルーチンの GPS データ パーサーの一部であり、これらの変換を多数行う必要があるため、上記の結果は少し過剰です。
これは ISR にあるため、割り込み中にさまざまなデータが変更されないことを確信できます。基本的に、個々のバイトを long でアドレス指定できるようにしたいと考えています。これは 8 ビット アーキテクチャであるため、コンパイラは数個の操作 (アセンブリの観点から long のバイトは直接アドレス指定可能であるため、C の 1 行あたり 3 ~ 4 個) まで最適化できるように思われます)。
変数は宣言されvolatile
ているため、何もしないループに最適化されません。実際のアプリケーションでは、それらはextern
ISR から書き込まれる構造体ですが、アイドル ループから読み取られます (読み取りが中断されるのを防ぐための適切な ISR ガード付き)。ただし、正確な動作を示すコンパクトなスニペットを作成する方法がわかりません。
at-command - Siemens 携帯電話用の GPRS AT コマンド
私には仕事があります - リモート温度監視です。ハードウェアは、atmega328 マイクロコントローラー、シンプルなアナログ温度センサー、古い携帯電話 Siemens cx75 (このデバイスには GPRS モジュールがあります) です。そこで、この電話から GPRS 経由で数バイトのデータを送信する AT コマンドを探しています。GPRS コマンドに関するドキュメントはたくさんありますが、私が見つけたのは携帯電話ではなくモデムに関するものだけです。
多分誰かが私を助けることができますか?それとも、別のソリューションを使用する方が簡単ですか?
更新:
いくつかの進歩があります:
まず、PDP コンテキストを設定します:
それで
大丈夫です。パケット ドメイン サービスと PDP コンテキストにアタッチされました。
では、次に何をすればよいでしょうか。次のようなモデムコマンドをいくつか試しました
しかし、私は持っています
assembly - アセンブリ言語で画面に文字を印刷する
私は現在、AVR アセンブリ言語の学習に取り組んでいます。AVR Studio の最新バージョンを使用しており、ATmega124 で作業しています。
画面/端末に文字を出力する方法はありますか? 私は一通の手紙だけを印刷しようとしてきましたが、成功しませんでした。AVR/C の例はたくさん見ましたが、アセンブリ言語の例はありません。
microcontroller - I/Oポートをハイ、ローにすることで正確な高周波を発生させることはできますか?
位相差100nsの1MHzの波を3つ発生させたい!OCモードでそれらを生成するのは正確ですか? つまり、OC を少しずつ増やして 3 回、大きなステップで 4 回増やし、これを続けて、各 ISR で I/O ポートを切り替えます (合計 3 つの I/O ポートが切り替えられています)。 )しかし、私の質問は、このプロセスが正確かどうかです?! または、このプロセスで失われているクロックがありますか?!