タグ付けされた質問 「microcontroller」

中央処理装置(CPU)、メモリ、および(一般的に)緊密に結合されたスタンドアロンの各種I / Oペリフェラル(UART、ADC、DAC、汎用I / O、I2Cなど)を含むデバイスパッケージ。

2
8ビットのコントローラーと比較して、Cortex M0はどのように機能しますか?
このドキュメントでは、Cortex M0では60 DMIPS / mW、M3では31 DMIPS / mWを引用しています。(後者は、1.25 DMIPS / MHzおよび0.19 mW / MHzを引用し、6.6 DMIPS / mWを与えるこのドキュメントの数値と一致しません。) M0パフォーマンス/電力が8/16ビットコントローラーとどのように比較されるかを誰かが知っていますか? AVR、PIC、MSP430のような?そして、M3の数字との取り決めは何ですか?

10
Java APIを備えたマイクロコントローラー
私のハードウェアチームは、Atmel AVR 8ビットマイクロコントローラーを将来のプロジェクトで使用することを計画しています。 私の知る限り、Cでプログラムする必要があります。AVR用のネイティブCライブラリよりも制限がありますが、AVR用のJVMを見つけました。 Javaをサポートする8ビットマイクロコントローラーを提案していただけますか? PS。私はCを知りませんし、マイクロプロセッサプログラミングの経験がありません。

7
パララックスプロペラは良い製品ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 パララックスプロペラは、他のマルチコアソリューションとどのように比較できますか?デザインコンテストで優勝したオープンストンププロジェクトに関する記事を見たところです。他の人がチップについてどう思っているのかを見たかった。同様の、しかしより良い製品はありますか? スピン速度はどうですか?

4
Cortex M3 .bss領域の初期化用のベアメタルスタートアップコード
ここから着想を得て、腕皮質M3のベアメタルスタートアップコードを開発しました。ただし、次の問題が発生します。main.cでunsigned char型など、初期化されていないグローバル変数を宣言するとします。 #include ... unsigned char var; ... int main() { ... } これにより、STM32 f103の.bss領域は、_BSS_START = 0x20000000で始まり、_BSS_END = 0x20000001で終わります。さて、スタートアップコード unsigned int * bss_start_p = &_BSS_START; unsigned int * bss_end_p = &_BSS_END; while(bss_start_p != bss_end_p) { *bss_start_p = 0; bss_start_p++; } .bss領域全体をゼロに初期化しようとします。ただし、そのwhileループ内では、ポインターは4バイトで増加します。したがって、1ステップ後にbss_start_p = 0x20000004なので、無限ループなどにつながるbss_end_pとは常に異なります。 これに対する標準的な解決策はありますか?どういうわけか、.bss領域の次元を4の倍数に「強制」すると思いますか?または、unsigned charへのポインターを使用して.bss領域をウォークスルーする必要がありますか?おそらく次のようなものです: unsigned char * bss_start_p = …

2
ISRなしで割り込みを有効にする
割り込みが有効になっている場合に何が起こるか知りたいのですが(例:NXPのLPC1778のCANモジュールのアービトレーションロスト割り込み)、割り込みにISRが定義されていません。 そのような割り込みが発生すると、それぞれの割り込みフラグが設定されることがわかりますが、ISRを定義していないため、そのような割り込みの制御転送用に格納されている割り込みベクトルオフセットアドレスはなく、制御はパスバックします。メインルーチンに割り込みフラグをリセットして、メインルーチンでポーリングフラグをリセットできます(これは私が考えていることです)。ジャンプするISRがないことをCPUが把握しているときに、レイテンシはありますか? 発生する可能性のある解決策が本当に役に立ちます。 ありがとう。 更新: uCでCAN割り込みを有効にしましたが、ISRを定義していません。内部ループバックテストを実行すると、コードが無限ループに入りました。LPC1778で実行されている無限ループの逆アセンブリコードを次に示します。 B . ENDP したがって、割り込みを使用している場合は、ISRを使用してください。

3
このAVRマイクロコントローラーを備えたサーキットの最小限の部品セットは何ですか?
私のArduino Unoには、ボード上にATMEGA328P-PUマイクロコントローラーと他の多くのものが搭載されています。Arduinoソフトウェアを使わずにチップをプログラムし、その他のコンポーネントは最小限にしたいと思います。最終的にはArduinoを使わずにモノを作成したいと思います。ボード上の他のパーツについて学び、必要に応じてそれらを追加し直したいと思っています。私はCとgccに慣れているので、おそらくソフトウェアの部分を理解することができます。しかし、もしあれば、以下の2つの製品以外に、マイクロコントローラーを搭載したブレッドボードに何が必要ですか? Atmelプログラマー マイクロコントローラー

3
32ビット48〜96 Mhzマイクロプロセッサの利点(Arduino Dueなど)
この投稿を改善してみませんか?この質問に対する詳細な回答を提供します。これには、引用と、回答が正しい理由の説明が含まれます。詳細が不十分な回答は編集または削除される場合があります。 そうですArduinoのため(32ビット、84 MHzの、ARMのCortex-M3-ベースSAM3X8E)が本日リリースされました。 さらに、明らかにこのカテゴリには無数のプロセッサ(32ビット/ 48〜96 Mhz / ARM)と対応するプロトタイピングボードがあります。 NXP LPC1768 / mBed STM32 /ディスカバリー PIC32 / ChipKit PIC32 /パララックスプロペラ LM4F120 / TI Launchpad 等 私は、これらの「中間」のマイクロプロセッサの魅力を理解しようとしています。これは、ローエンドのAVR / MSP430 /の間にあるように見えます。(長所:安価、低電力、省スペース)およびハイエンドのARM7 / etc(長所:1秒あたりの命令数がはるかに多い)。 32ビット/ 48〜96 Mhz / ARMベースのマイクロプロセッサはどのような状況または方法で適切な選択肢ですか?具体的には、ローエンドの8ビットマイクロコントローラーまたは非常にハイエンドのARM7プロセッサーのどちらよりも、設計時にどのアプリケーションまたはどのパラメーターが優れた選択になるか疑問に思っています。

6
マイクロの数本のピンで多くのLEDを制御するにはどうすればよいですか?
6ピンI / Oを備えたAtmel ATtiny13を使用しています。15個のLEDを制御したいのですが、すべてを接続する方法がわかりません。なんらかの多重化がなければ、一度に6つのLEDしか制御できないようです。マイクロコントローラーのサイズのため、6つのLEDに制限されていますか?

6
PICマイクロコントローラーで-2 V〜+2 Vのアナログ信号をサンプリングするにはどうすればよいですか?
300ビット未満の周波数のアナログ信号から読み取り値を取得するために、10ビットADCを備えたPICマイクロを使用しています。ただし、そのアナログ信号の範囲は-2 Vから+2 Vです。信号を調整して使用可能な範囲にするにはどうすればよいですか(ADCへの入力が正である必要があると想定しています)。負の電源。

3
ランダムで予測不可能なアナログコンパレータの動作
振幅と周波数が変化する正弦波の周波数を測定する必要がある比較的「単純な」プロジェクトに取り組んでいます。物事を簡単にするために、今のところ、固定周波数(27Hz)の正弦波入力(コンパレーターの負の入力)しか持っていません。コンパレータの正入力はVcc / 2に設定されています。コンパレータの出力は、atmega2560マイクロコントローラの入力キャプチャレジスタに送られ、周波数を測定します。 問題は、入力信号の特定の振幅で、次のような出力で非常に激しいトグル(または場合によってはデッドバンド)が発生することです。 予想される出力は次のようになります。 これまでに試したこと: 内部atmega2560の内部コンパレータを使用します。外部コンパレータを使用します。ソフトウェアとシュミットトリガー回路を使用したヒステリシスの紹介。固定リファレンスセットアップやデータスライサーセットアップなど、さまざまな入力セットアップを試しました。別のatmega2560を試してみます。さまざまなクロック速度を試します。 一部のソリューションは他のソリューションよりも安定性が高かったが、いずれも許容範囲内ではありませんでした。これまでのところ、最も安定した構成で解決しています。 この設定では、特定のものが安定性を改善/変更しますが、まだ完璧に近いものはありません。 R5の値を変更してヒステリシスを増やします。C2を完全に削除する(理由はわかりません)。ブレッドボードのワイヤーに触れます(数本を並べてください)。電源を外部からUSBに、またはその逆に切り替えます。 この時点で、ノイズ、つまり正弦波を生成しているDACか、非常に基本的な何かを誤って実行しています。この回路は問題なく他の人のために働いたので、私の設定や環境に何か問題があるはずです。 何か提案があれば、お時間をいただければ幸いです。 これが私の最小限のソースです: #include <avr/io.h> void init(void); void init(void) { /* Setup comparator */ ACSR = (1 << ACIE) | (1 << ACIS1); /* Initialize PORTD for PIND5 */ DDRD = 0x00; PORTD = 0x00; /* Enable global interrupts */ …

5
PIC32対dsPIC対ARM対AVR、とにかくC言語でプログラミングする場合、アーキテクチャは重要ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 現在32ビットPIC32マイクロコントローラーを使用しています。それは私たちのニーズに対してはうまく機能していますが、私たちをよりよく適合させることができる他のマイクロコントローラーも模索しています+ MCUを選択している他のプロジェクトがあります。その目的のために、32ビットと同じであるがARMベースのPIC DAマイクロコントローラーであるARMベースを選択しました(PIC32よりも人気があり、業界的にも優れています)。 PIC32ではMPLABを使用しますが、ARM cortex-M0ではAtmel Studioを使用します。両方のプラットフォームでC言語を使用します。私の懸念事項は、2つの32ビットマイクロコントローラー(同じ会社から)を使用するが、アーキテクチャが異なることです。これには、2つの異なるデバイスを学習する必要があり、「学習曲線」+配信時間が増加します。しかし、その一方で、どちらの場合もC言語を使用するので、ARMの学習曲線はそれほど聞こえないはずであり、そのプロセッサを探索する価値もあります。 私の主な質問は、C-Languageでプログラミングしているときに、アーキテクチャーがマイクロコントローラーの内部の抽象化を提供するため、アーキテクチャーがどれほど大きな違いをもたらすかです。また、C言語プログラミングを考えると、MPLAPとAtmel Studioの主な違いは何ですか。

4
HALを使用したSTM32 ADC変換
stm32から「新しい」HALライブラリを使用する方法を学習しようとしています。 単純なADC変換を行おうとすると、1回だけ機能しますが、変換が停止します。変換終了フラグが設定されていないと思います。STM32f429I Discoveryボードを使用していますが、これにはボードにSTM32f429ZIが搭載されています。 私はsprintfが悪い習慣であることを知っており、割り込みでADCを作成する方が良いことを知っています。指摘しないでください。これは質問には関係ありません。ここではHALをテストしています。 では、問題はなぜEOCフラグが設定されていないのか、それを機能させるために何ができるのかということです。HALに関する優れた資料が非常に少ないため、グーグル検索はあまり役に立ちません。 これがコードです: __IO uint16_t ADCValue=0; void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc); int main(void) { char str[15]; /* Various initializations */ HAL_ADC_Start(&hadc1); while (1) { if (HAL_ADC_PollForConversion(&hadc1, 1000000) == HAL_OK) { ADCValue = HAL_ADC_GetValue(&hadc1); sprintf(str, "%d", ADCValue); BSP_LCD_DisplayStringAt(130,30, (uint8_t*)str, LEFT_MODE); } } void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { ADCValue = HAL_ADC_GetValue(&hadc1); } …

4
STM32:タイマー割り込みはすぐに機能します
これは、STM32F429での私のプロジェクトのタイマーのコードです。 //timer initialization void timerInit() { uwPrescalerValue2 = (uint32_t) ((SystemCoreClock / 2) / 100000) - 1; RS485Timer.Instance = TIM5; RS485Timer.Init.Period = 67400000; // high value to notice interrupt even without debugging RS485Timer.Init.Prescaler = 400000; RS485Timer.Init.ClockDivision = 0; RS485Timer.Init.CounterMode = TIM_COUNTERMODE_UP; HAL_TIM_Base_Init(&RS485Timer); } void timerReset() { HAL_TIM_Base_Stop_IT(&RS485Timer); HAL_TIM_Base_DeInit(&RS485Timer); HAL_TIM_Base_Init(&RS485Timer); HAL_TIM_Base_Start_IT(&RS485Timer); printf("%d …

5
不揮発性メモリへの頻繁な書き込み
私は、温度が変化すると物理的な位置を自動的に調整するデバイスを設計しています。デバイスがシャットダウンするか、電源が切断された場合、デバイスは最後の温度と位置を記憶する必要があります。私はこれらの値をEEPROMに保存することができますが、問題は位置と温度が非常に急速に変化する可能性があることです。tempとposを変更するたびにEEPROMに書き込むと、(1)ファームウェアが少し遅くなり、(2)1〜2年後にEEPROMが終了する可能性があります。だから私が見るように私のオプションは次のとおりです... 1)コンデンサ/バッテリーを使用して、電力が失われた後、デバイスに電力を供給し続けるため、その時点でのみ値をEEPROMに書き込むことができます。ボードはちょっとパワーが空いていて、これには大きなキャップが必要になるので、私はこれが好きではありません。そして、私にはたくさんの空き容量がありません。そして、私はバッテリーとバッテリーホルダー/または大きなキャップの追加コストを望んでいません。 2)EEPROMの代わりにF-RAMを使用して、消耗することなく何兆回も書き込むことができるようにします。FRAMはEEPROMよりもかなり高価であり、これはプロダクション製品(1つだけではない)用であるため、このオプションは好きではありません。 3)位置と温度は5分程度ごとに記入してください。このようにして、常にかなり最近の位置/温度を記録していますが、毎秒書き込みを行っているわけではないので、プログラムの速度が低下せず、EEPROMの速度が低下しません。これは私の最良の選択肢のようです。 他の誰かが私が考えていない提案をしていますか?

3
MCUのバックアップとしてスーパーキャパシタを使用する
なんらかのバックアップ電源を必要とするこのプロジェクトがあります。5V 4Fのスーパーキャップを使う予定です。 私の質問があります: キャップをダイオードと100オームの抵抗で5VのVCCに充電する予定です(良いアイデアですか?)。キャップをMCUに接続する方法を教えてください。キャップが充電されるまで時間がかかるため、直接接続は機能しません。 通常、回路は20mAを消費し、パワーオフモードでは約200uAを使用しますが、この4Fキャップはどのくらい持続しますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.