問題タブ [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 - 2 つの ASCII 16 進文字 (2 つの ASCII バイト) を 1 バイトに変換します。
2 つの ASCII バイトを 1 つの 16 進数バイトに変換したいと考えています。例えば。
0x30 0x43 => 0x0C , 0x34 0x46 => 0x4F
...
ASCII バイトは、 と の間の数字0
、9
または と の間の文字A
(F
大文字のみ)、つまり0x30
...0x39
と0x41
...の間です。0x46
0x4F
数字0x34
を使って「構築」する方法を知っている0x46 : 0x4F = 0x34 * 0x10 + 0x46
したがって、実際には、1 ASCII バイトを 16 進数値に変換します。
そのために、16 進値を ASCII char に割り当てるように構築して配列することができます。
しかし、おそらくそれは最も「適切な」解決策を持っています。
このプログラムは AVR µC で実行され、 でコンパイルされるavr-gcc
ため、scanf()
/printf()
ソリューションは適していません。
アイデアはありますか?ありがとう
gcc - GCC インライン アセンブリ: 一時値に使用するレジスタをコンパイラに決定させる
18h をロードしてポート 60h に出力する必要があります (asm("") 内)。
これにレジスタr1が使用されているか、他のレジスタが使用されているかは気にしません。使用するレジスタをコンパイラに決定させる簡単な方法はありますか?
外部の r/w 変数を使用することもできますが、不要なオーバーヘッドが発生します。
これは AVR atmega (8 ビット) プロセッサ用です。GCC 4.3.2 の使用
eclipse - Xcode 4のAVR?
xcode 4をAVRマイクロコントローラーのIDEとして使用して成功した人はいますか?Eclipseのプラグインと同じ量の統合を行うことは可能ですか?
gcc - GCC (AVR) アセンブリ: ラベル アドレスを減算
私は達成しようとしています:
レジスタからラベルのアドレスを減算する必要があります。それ、どうやったら出来るの?
timer - Avr-gcc:UARTと競合するタイマー/カウンター割り込み?
次の例(Arduino IDE 0022、Ubuntu 11.04、Arduino AtMEGA 2560で試してみました)を検討してください。ここでは、タイマー/カウンター割り込みを開始Serial
し、同時にArduinoクラスを使用しようとしています。
例のように、シリアルによる印刷は次のようになります。
...その後、すべての処理が停止します(LEDピン13と34の両方にアクションがないことで示されます)。おそらく、これはチップの世界ではBSODと呼ばれるものです:)表面的には、ISRルーチンが初めて開始されるとすぐに停止が発生します。
「レジスタ更新部分」を取り出すと、シリアルプリントアウトは予想どおりに永久に実行されます。また(予想どおり)、ISRは実行されません。ただし、「レジスタ更新部分」が残っていて、Serial.println(...
代わりに2つの「」行がコメント化されている場合(プログラムは「Hellofrom setup」のみを出力します)、割り込みは実行されます(ピン34のパルスによって証明されます)。
これは、ATMega2560でタイマーISRとUARTを同時に実行することはできないことを示しているようです。これは、以前にATMega328で同じ種類のアプローチを使用して成功したことを考えると、ばかげています。
だから、私がやりたいこと(シリアルプリントアウトとピンパルスの両方を持っている)がこのアーキテクチャでは基本的に不可能かどうか迷っています-それともセットアップに何かが欠けているだけですか?
よろしくお願いします、乾杯!
(このSerialクラスは実際にはArduino IDEパッケージのHardwareSerial.cppのクラス定義で動作し、このクラスは受信USART割り込みルーチンを定義します。これが問題になる可能性があると考えましたが、同じアプローチを使用しました。私がそれが機能するのを見たATMega328で..)
c - unsigned char *(uint8_t *)をconstchar*にキャストします
uint8_t *引数を取る関数があります:
私はこの関数を次のように使用します:
しかしこの場合、私のコンパイラ(avr-gcc)は警告を返します:
main.c | 89 |警告:「strlen」の引数1を渡す際のポインタターゲットは、符号が異なります/usr/include/string.h|399|注:「constchar *」が必要ですが、引数のタイプは「uint8_t*」です。
だから、私はデータ変数を型キャストすることによって解決策を見つけました:
警告は消えますが、この解決策は安全かどうか疑問に思います。
もっと良い方法はありますか?
ありがとう
c++ - 「operator delete(void*)」への未定義の参照
私は C++ プログラミングは初めてですが、C と Java で長い間働いてきました。私が取り組んでいるいくつかのシリアル プロトコルでインターフェイスのような階層を実行しようとしていますが、エラーが発生し続けます。
(簡略化された)コードは次のとおりです。
PacketWriter.h:
StringWriter.h:
コンストラクターと nextByte 関数は StringWriter.cpp に実装されていますが、他には何も実装されていません。StringWriter を PacketWriter へのポインタから削除できるようにする必要があります。StringWriter のデストラクタを仮想かどうかに関係なく定義すると、他にもさまざまな同様のエラーが発生します。私が初心者として見落としているのは単純な問題だと確信しています。
また、Windows で avr-g++ を使用して、AVR チップ用にこれを書いています。
ありがとう
c - How to prevent GCC from optimizing out a busy wait loop?
I want to write a C code firmware for Atmel AVR microcontrollers. I will compile it using GCC. Also, I want to enable compiler optimizations (-Os
or -O2
), as I see no reason to not enable them, and they will probably generate a better assembly way faster than writing assembly manually.
But I want a small piece of code not optimized. I want to delay the execution of a function by some time, and thus I wanted to write a do-nothing loop just to waste some time. No need to be precise, just wait some time.
Since memory access in AVR is a lot slower, I want i
and j
to be kept in CPU registers.
Update: I just found util/delay.h and util/delay_basic.h from AVR Libc. Although most times it might be a better idea to use those functions, this question remains valid and interesting.
Related questions:
c - すべてのファイルを1つの.hファイルに含め、そのファイルをAVRのどこにでも含めるのは良い習慣ですか?
このようにできますか
そして、このincludeAll.hファイルをどこにでも含めます。どこでも、すべてのプロジェクトファイルを意味します。
#define INCLUDEALL_H_ 1のような同様のマクロが、他のすべてのファイルで使用されています。
コンパイル時に非常に時間がかかることがわかります。
bootloader - AVRマイクロコントローラーAT32UC3A0512のヒューズ設定の復元
現在、AT32UC3A0512マイクロコントローラーに取り組んでいます。このためにイーサネットブートローダーを開発する必要があります。ブートローダーのプログラミングではヒューズ設定を変更する必要があるので、問題が発生した場合にヒューズ設定を復元する方法を誰かに提案してもらえますか?
IDEとしてAVRStudio5を使用し、デバッガーとしてAVRDragonを使用しています。
AVR Studio 5で現在のヒューズ設定を確認する方法を知っている人はいますか?