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

ATMegaは、AtmelマイクロコントローラーのAVRシリーズのファミリーです。これは、Arduinoプロトタイピングプラットフォームのメインマイクロコントローラーです。質問には特定の部品番号を指定してください。


2
AVRでTimer0を使用しない理由は何ですか?
基本的な質問だけです... arduino / avr / ATMega328の場合、Timer1を使用した例がたくさんあります(そのためのライブラリ全体もあります)が、Timer0(またはTimer2)を使用する例はほとんどありません。 これらのタイマーのいずれかを使用してISRメソッドを制御すると、関連するピンでのPWMの使用が無効になることはわかっていますが、Timer0から離れているように見える特定の理由はありますか?内部で使用してはいけない他の何かに使用されていますか? 私の現在のアプリケーションはTimer1を使用して問題なく動作します。他の無視されがちなこれらのタイマーについて何か不足しているのではないかと気になります。

2
AVR ATMEGA / ATTINYタイマーミラー出力の理解に助けが必要
Arduinoで使用されているAtMega328またはATTiny85のいずれかのAtmel AVRマイクロコントローラーのTimer1を使用して、互いに鏡像の2つのクロック信号を出力しようとしています。私が生成しようとしている周波数は1 MHzから2 MHz以上の可変であり、コントローラーで他にほとんど何もしたくない場合を除いて、出力ピンを切り替えるコードを使用してこれを行うには高すぎます。したがって、関連するピンで直接タイマー出力を使用したいと思います。私はGCCツールチェーンを使用しているため、arduinoライブラリまたは言語に制限されません。 Atmega328のTimer1には2つのピンが関連付けられており、それらから2つの同じ1MHz〜2MHz信号を取得できます。データシートに反転波形が表示されるようですが、混乱しています。Timer1のPWM設定を使用して、1 MHzでデューティサイクルが異なる2つの信号を取得することもできますが、両方の信号が同時にハイになり、短い方が早くローになります。これは私のプロジェクトに役立ちません。PWMパルス幅の変動も必要ありません。反対位相の2つの同一の「クロック」タイプの信号が必要なだけです。 私がこれを行うためのコードを書くことを誰かに求めているのではなく、タイマーのどのモード/フラグがタイマーに関連付けられた2つのピンの1つに単純な反転波形を与えるべきかを誰かに教えてくれる必要があります。それが唯一の選択肢でない限り、可能であれば、出力の1つに外部反転回路を使用しないようにします。 これがATTinyで可能な場合は、さらに良いでしょう。ATTinyには、1つのタイマーに関連付けられた2つのピンもありますが、ATMegaと同じオプションがあるかどうかはわかりません。 PCBに接続された20 MHzの水晶振動子とコンデンサーを既に持っており、20 MHzのクロックはATMega328で確実に機能しています。ATTiny85 PCBには8 MHzの水晶があり、これも確実に機能しています。 助けてください。ありがとうございました。 更新:これまでの回答とコメントにはいくつかの無効な仮定がありますので、おそらく明確にする必要があります:私の元の投稿では、8 MHzではなく 20 MHzクロックを使用していること、およびPWMは不要であることを指摘しました。 PWMモードは2 MHzの出力では機能しないため、十分に高い出力周波数を提供する唯一のモードはCTCモードのようです。CTCモードでタイマー1の出力Aまたは出力Bを反転する方法はありますか? 私のコードをチェックするために、自分の20 MHzボードではなく、標準のArduino Uno(ATMega328、16 MHz)に切り替えました。これは、CTCモードでピン9と10からの安定した2 MHzクロックのタイマーです。タイマー1つの出力ピン: #define tick 9 #define tock 10 void setup() { pinMode(tick, OUTPUT); pinMode(tock, OUTPUT); TCCR1A = _BV(COM1A0) | _BV(COM1B0) ; // activate both output pins TCCR1B …

4
ATMega328pでの16 MHzクリスタルの使用
16 MHzクリスタルを使用するには、ATMega328pのヒューズビットをどのように設定する必要がありますか?私は自分でこれを試し、最後に持っていたatmegaを殺しました。今回はアドバイスをお願いします。 私が使っているクリスタルはこれです これはデータシートに記載されている「フルスイングクリスタルオシレーター」であると想定しているため、CKSEL3..1は011である必要があります。 次に、起動時間を設定する必要があります。「Crystal Oscillator、ゆっくり上昇するパワー」がより安全なオプションであると想定しているので、CKSEL0は1で、SUT1..0は11でなければなりません。 クロックを8分周したくないので、CKDIV8は1にする必要があります CKOUT私はデフォルトの1のままにします 私の仮定が正しい場合(およびその確認方法は?)、lfuseビットの設定は0xf7になります。 私はこれを正しく行っていますか? これはうまくいきませんでした。こちらをご覧ください
10 atmega 

2
未使用のアナログ入力をどうするか?
ATmega328p atmelマイクロコントローラーを使用するアプリケーションに取り組んでいます。私は28 PDIPバージョンから始めましたが、今は32 TQFPを使用したいと思います。Altiumプロジェクトをコンパイルした後、2つの追加の入力があることに気付きました。 データシートによると、これらの入力はADC7:6であり、「A / Dコンバータへのアナログ入力として機能します。これらのピンはアナログ電源から給電され、10ビットADCチャネルとして機能します」。 一部の人々がADCを使用し、浮動入力を持っているときに未知の結果を得ていることをオンラインで読みました。私が読んだのはプルダウン抵抗をアクティブにすることですが、それらを構成する方法がわかりません(I / Oポートに属していないため)。また、私のアプリケーションではA / Dコンバーターもまったく使用していません。 ベストプラクティスは何ですか?外部プルダウン抵抗を接続する必要がありますか?Altiumエラーを無視しますか?

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

1
ATmega328でのAVRタイマーの高速化
ATmega328でクロックプリスケーラー64で実行すると、不明な理由により、実行中の特定の時間に私のタイマーの1つがスピードアップします。 ATmega328で2つのタイマーを使用して、TLC5940が必要とするクロッキングを生成しています(理由については以下を参照してください。これは質問には重要ではありません)。TIMER0Fast PWM onを使用してクロック信号を生成し、OC0B次のように設定されます。 TCCR0A = 0 |(0<<COM0A1) // Bits 7:6 – COM0A1:0: Compare Match Output A Mode |(0<<COM0A0) // |(1<<COM0B1) // Bits 5:4 – COM0B1:0: Compare Match Output B Mode |(0<<COM0B0) |(1<<WGM01) // Bits 1:0 – WGM01:0: Waveform Generation Mode |(1<<WGM00) ; TCCR0B = 0 |(0<<FOC0A) // Force Output …
9 avr  atmega  spi  timer 

1
合成されたROMコアを使用した単純なテストベンチのシミュレーション
私はFPGAの世界にまったく新しいので、4ビットの7セグメントデコーダーという非常に単純なプロジェクトから始めようと思いました。私が純粋にVHDLで書いた最初のバージョン(それは基本的に単一の組み合わせselectであり、クロックは必要ありません)は機能しているようですが、ザイリンクスISEの「IPコア」の要素を試してみたいと思います。 今のところ、「ISE Project Explorer」GUIを使用しており、ROMコアを使用して新しいプロジェクトを作成しました。生成されるVHDLコードは次のとおりです。 LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- synthesis translate_off LIBRARY XilinxCoreLib; -- synthesis translate_on ENTITY SSROM IS PORT ( clka : IN STD_LOGIC; addra : IN STD_LOGIC_VECTOR(3 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END SSROM; ARCHITECTURE SSROM_a OF SSROM IS -- synthesis translate_off COMPONENT wrapped_SSROM …

1
ATMega328外部AREF接続
ATMega328データシート、セクション24.9.1: 外部基準電圧がAREFピンに印加されている場合、内部基準電圧オプションは使用できません。 Arduino リファレンスページから: あるいは、外部基準電圧を5K抵抗を介してAREFピンに接続し、外部基準電圧と内部基準電圧を切り替えることができます。AREFピンに32Kの内部抵抗があるため、抵抗は基準として使用される電圧を変更することに注意してください。2つは分圧器として機能するため、たとえば、抵抗を介して2.5Vを印加すると、AREFピンで2.5 * 32 /(32 + 5)=〜2.2Vが生成されます。 ATMega328データシートは、表29.16 ADC特性の「内部32k抵抗」リファレンスを確認しています。リファレンス入力抵抗= 32 kOhm。 とはいえ、上記の2つの発言は互いに相反するように思われます。私はいくつかのセンサーが0-5Vフルスケールを出力し、他のセンサーが0-1.8Vフルスケールを出力するアプリケーションを持っています。1.8Vセンサーをサンプリングし、5Vセンサーの内部AVCCリファレンスに切り替えるときに、1.8V AREFへの切り替えの分解能が向上すると、アプリケーションにメリットがあります。 Arduinoのリファレンスページでは、5kOhmの直列抵抗を介して1.8V AREFに結合し、内部の32kOhm抵抗による分圧器を考慮に入れれば、これで問題ないことを示唆しています。これはArduinoリファレンスからの悪いアドバイスですか、それとも実際にこの種のことをするのは一般的な習慣ですか?Atmelの声明は、外部電流制限抵抗なしでAREFに適用される外部電圧に制限されていますか(そうであれば、内部32k抵抗が与えられている理由)? 余談ですが、1.8V信号を最大5Vにスケーリングするために適切に構成されたオペアンプで同様の結果を達成できることは明らかですが、オンボードADCでも同様に処理できる場合、追加された複雑さと部品は無駄に見えます。変更可能な電圧リファレンスを利用する。同様に、感知された信号が1.1Vを超えないことを確信できれば、内部基準電圧を利用できます。繰り返しになりますが、基準を設定するために低電圧センサーに電力を供給している1.8Vレギュレーターを使用する方が私にはよりエレガントに思えます。

1
ATmegaの新しい「PB」バリアントには、電圧低下検出器にバグがありますか?
私たちは、ATmega48 / 88/168/328マイクロコントローラを長年にわたって多くの製品で使用してきました。AとPAのバリアントから新しいPBのバリアントに切り替えることを検討しました(新しい製品には追加のピン、タイマー、およびUARTが必要になります。これは、価格が安くなり、古いバリアントが廃止されるためです)。そこでATmega328PBでATmega328Aを切り替えました。停電後は非常に頻繁に問題が発生するようです。このような問題は、古い亜種では発生しませんでした。 当社の製品のユースケースでは、定期的な停電は正常です。私たちは5Vに設定されたスイッチング電源(この電源など)を使用し、ATmegaのVCCに220µFの範囲のコンデンサを使用して、SRAMを数分の範囲の停電に対して存続させ、ミッションではない内部状態を保存します重要ですが、再起動時にすぐに利用できるため、ユーザーエクスペリエンスが大幅に向上します(これらの状態は、EEPROMが不適切になるほど頻繁に変化します)。これは常に機能しています。 ただし、新しいATmega328PBを使用すると、停電後、MCUSRでリセット状態が検出されずにチップがリセットされ、クロックが不安定になっているように見えます。 電圧低下検出器はヒューズごとに設定されます。私たちは利用可能なすべてのbodlevelを試しましたが、それらすべてでバグが発生します。 外部20 MHzを使用し、ヒューズごとに正しく設定します。 3つの異なるチップを試したので、それは単一のはんだ付けやその他のハードウェア障害ではありませんでした。 バグが発生した後、クロックはしばしば2.5倍遅い速度に設定されます。これは、mcuが8 MHzの内部発振器によってクロックされていることを示しています。ただし、速度の低下は約6倍になる場合があります。これは、ソフトウェアからヒューズを設定できず、クロック分周器がクロックを2.5または6で分周できないため、クロック分周器を変更するソフトウェアのバグではないことを意味します。 それで、私の最初の疑いは、新しいClock Failure Detectionヒューズでした。ただし、オンまたはオフに関係なく、動作は同じです。 ソフトウェアの特殊性を排除するために、私は単純なテストプログラムを最初から作成しました。これは、タイマー割り込みからの100 Hzで出力をトグルするだけで、再起動後にリセット条件がアクティブになった(MCUSRから読み取った)LEDで示します。ハードウェアの残りの部分も削除され、mcuとレギュレーターのみが存在します(およびインジケーターは直列抵抗で導かれます)。 結果 およそ2/3の時間、興味深いことは何も起こりません。電源遮断後、mcuはそのジョブを再開し、電圧低下リセットと電源投入リセットインジケーターの両方が点灯します。 (画像では、赤はトグルされたピン、青はVCCです。この画像では、2.7 Vのブラウンアウトがはっきりと見えます。他のブラウンアウト設定で同じテストを行ったところ、結果はまったく同じです。だから私はそれらの写真を省略します) おおよそ1/3の時間、前述のバグが発生し、電源が再び戻ってきたときに、どれもブラウンアウトリセットのとパワーオンリセットインジケーターが点灯されていません!mcuが奇妙な時計でカチカチ音を立てているかのように、出力は異なります。無秩序ではありませんが、同じ頻度でカチカチ音を立て続けます。 興味深いことに、この状況では、電圧低下検出器は完全に非アクティブになっているように見えます。これは、次の電源遮断後(正しいクロックが復元されることもあれば、復元されないこともあります)、出力がブラウンアウトレベルは合格です。このような状況では、時計が速くなる場合と遅くなる場合があります。 これらのテストでは、起動遅延に16K CK / 14CK + 4.1 msを使用しました(ただし、65 msの遅延では問題を回避できません)。 これはズームインした画像で、VCCが2 V以内に5 Vで安定状態に達していることがはっきりとわかります。 上の画像では、MCUは正常に起動しています。 興味深いことに、そうでない場合、電源電圧はより早く安定した5 Vに達します(MCUの多くの部分がオンになっていないようなので、起動時に流れる電流が少なくなります) 以下は、失敗したスタートからの画像です: 電源電圧が安定してから85 ms以上経過すると、ソフトウェアが実行を開始することに注意してください。起動遅延のヒューズは同じで、16K CK / 14CK + 4.1 msです。 また興味深いことに、電源がオフになった後、VCCは約1.1〜1.2ボルトで安定します(古いATmega328Aバリアントは約0.6-0.7 Vに低下しました)。それは数分間それを保ちます。十分長い時間(30分程度かそれ以上)待つと、mcuは常に正しく起動します!したがって、問題は、1.1ボルト前後であり、データシートによると、パワーオンリセットに十分であるとは保証されていないようです。しかし、電圧低下リセットにはそれで十分です! これらの状況を除いて、電圧低下検出器は正常に動作します。最初の画像で確認できます(bodlevelに到達すると出力信号が停止し、mcuの一部がシャットダウンされるため、電圧降下が遅くなります)。VCCをボディレベルよりわずかに下げて再び上昇させると、テストを実行しました。そのような条件下では、mcuは常に正しく再起動し、ブラウンアウトリセットインジケーターのみが点灯しました。 私は明らかな何かを見逃しましたか、それともATmega328PBのブラウンアウト検出器に深刻なバグがありますか? 編集: …

5
ATmega32(ATmega AVRシリーズ)を搭載した組み込みCから始めます
私はATmega32ボードを敷設していて、マイクロコントローラから始めるのが最適だと思います。組み込みCでバブリングをしたことがありますが(このボードを入手したとき)、フローがいくつかの理由で停止しました。今私は2つの質問があります: AVRシリーズのCで始めるのに最適な無料のリソースは何ですか。私はAVR-GCCを知っていますが、私を始めるためのチュートリアルや無料の本を探していました。 最初にCにジャンプするか、最初にASMを実行する必要がありますか?周りにはasmの本がたくさんあります。それで、より良いオプションは何ですか? インターネットを検索しながら、私はここでATmega32用のArduinoのブートローダを見つけhttp://retrointerfacing.com/?p=30が、問題は、私はヒューズビットおよびすべてと、いくつかの工夫を行うことがためらっています。そうしても安全ですか?
9 avr  atmega  books  c 

2
UARTでのATMega328の最小速度
低消費電力のためにATMega328を低速で実行する低消費電力プロジェクトの設計を検討しています。 現在の計画では、UART を1200ボーで通信するためのRFリンクレシーバーに接続します。 しかし、私が思っているのは、ATMega328を実行しても1200baud UARTを実行できる最低速度はどれくらいかということです。1MHzで十分ですか?

2
PIC12F675 GP4が機能しない
プロジェクトにPIC12F675を使用していますが、1つの点を除いてすべて正常に動作します。GP4はデジタルIOとして機能しません。設定とコードをよく見てきましたが、何も見つかりませんでした。 構成: #pragma config FOSC = INTRCCLK #pragma config WDTE = OFF #pragma config PWRTE = OFF #pragma config MCLRE = OFF #pragma config BOREN = ON #pragma config CP = OFF #pragma config CPD = OFF コード: #include <xc.h> #include <math.h> #include "config.h" #define _XTAL_FREQ 4000000 void delay(unsigned int …
9 pic  c  embedded  programming  audio  oscillator  spark  dc-dc-converter  boost  charge-pump  eagle  analog  battery-charging  failure  humidity  hard-drive  power-supply  battery-charging  charger  solar-energy  solar-charge-controller  pcb  eagle  arduino  voltage  power-supply  usb  charger  power-delivery  resistors  led-strip  series  usb  bootloader  transceiver  digital-logic  integrated-circuit  ram  transistors  led  raspberry-pi  driver  altium  usb  transceiver  piezoelectricity  adc  psoc  arduino  analog  pwm  raspberry-pi  converter  transformer  switch-mode-power-supply  power-electronics  dc-dc-converter  phase-shift  analog  comparator  phototransistor  safety  grounding  current  circuit-protection  rcd  batteries  current  battery-operated  power-consumption  power-electronics  bridge-rectifier  full-bridge  ethernet  resistance  mosfet  ltspice  mosfet-driver  ftdi  synchronous  fifo  microcontroller  avr  atmega  atmega328p  verilog  error  modelsim  power-supply  solar-cell  usb-pd  i2c  uart 

1
UART経由の予期しないAtmega16応答
UART経由の予期しないAtmega16応答 問題の概要 私はコードではATmega16を点滅している必要があります私は端子を介してそれを送るどんなキャラクターはATmega16送信バックにつながります。返事はもらえますが、送ったキャラクターはめったにありません。ボーレートを変更すると正しい出力が表示されますが、正しいボーレートが機能する理由がわかりません。 もっと詳しく 私はかなり楽しんでいるので、自分の時間にファームウェアプログラミングについてもっと学びたいと思っています。これまでに私がuniで行ったファームウェアプログラミングでは、ペリフェラルインターフェースの多くを実行してセットアップするスケルトンコードファイルが提供されましたが、これを自分で学びたいと思います。私がここで何をしているのかについていくつか質問がありますが、最後に項目ごとに説明します。私の知識の誤解や潜在的なギャップを見つけたら、私はあなたが持っているかもしれないどんなインプットにも大いに感謝します。 コード 私のAtmega16にフラッシュしたコードは、このページにある「AVR-GCCでのUSARTの使用」チュートリアルからほぼ一行ずつ取得されています。追加したのは、F_CPUの#defineだけです。元のコードにはF_CPUの#defineがなかったため、コードがAtmelStudio 7でコンパイルされませんでした。作成者が元のファイルでF_CPUを定義しなかった理由を誰かが説明できますか?彼らはAtmel Studio 7以外のツールやコンパイラーを使用していたのではないかと思いますが、確かなことは言えません。 #include <avr/io.h> #define F_CPU 7372800 //this was chosen because the tutorial states this is the frequency we want to operate at #define USART_BAUDRATE 9600 #define BAUD_PRESCALE (((( F_CPU / 16) + ( USART_BAUDRATE / 2)) / ( USART_BAUDRATE )) - …

2
小さな回路のリバースエンジニアリングと理解の助けが必要
私は電子学生です。ある日、自宅にあるEM21というエネルギーメーターを開いたところ、その本体が2つの主要なコンポーネントで構成されていることがわかりました。 グリッドに接続して電圧と電流を測定するメーター本体(理論的には、メーターのすべてのインテリジェンスを備えています) 測定に関するユーザーのリアルタイム情報を表示するLCDディスプレイ(ダム、LCD、押しボタンを制御し、誘導を使用して電圧/電流/電力情報をボディに要求するのに十分なインテリジェンスを備えています) ここでのすばらしい点は、LCDコンポーネントが身体から電力を供給され、誘導(非接触)以外のものを使用せずに身体と通信することです。 [LCD with buttons]-----coil <magnetism magic> coil-----[meter body] 数時間で、ボタンを使ってLCD画面にエネルギーを供給するためにカップリングを使用する回路を逆転させようとしました。同時に、そのカップリングは非接触通信チャネルとして使用されています。 これが最終結果でした: この回路のシミュレーション – CircuitLabを使用して作成された回路図 接続を整理してくれたTransistorと/ u / eyal0 @ Redditに感謝 そして、これらは実際の共食い回路の写真です: FRONT(1つのタブで開く) 戻る(別のタブで開いてから、両方の間で通勤すると、それらは互いに整列します) FRONTラベル付き PWR SRC回路に電力を供給する(ボディがLCD回路に電力を供給する)および通信に使用されるコイル (図が正しく取得されたかどうかを確認できますか?) / u / InductorMan @ Redditで、図にあるC4 / R4の間違いを指摘してくれてありがとう。 私は答えが見つからないこの内部の仕組みについていくつか質問があります: コイルはどのようにしてATMEGAにDC電流を供給できますか?どうしてVCCがコイルの一方の端に直接接続されていて、ATMEGAを揚げないのですか? Q1の役割は何ですか? WB2コンポーネントとは何ですか? 通信に使用されるATMEGAピンは何ですか?どのようにして(オシロで)それらを「聞いて」、通信プロトコルを発見できますか? AVCCとAREFは、図で配線されている方法で何をしていますか? コンデンサとツェナーの値を簡単に見つけるにはどうすればよいですか? ありがとう! リンク:現在進行中のRedditに関するディスカッション

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