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

AVRは、Atmelが開発した8ビットおよび32ビットのマイクロコントローラーコアです。AVRは、人気のあるArduino SBCのマイクロコントローラーとして選ばれました。

2
ATtiny13の回復
私はATtiny13で遊んでいて、1.2 Mhzの内蔵発振器の代わりに外部8Mhzセラミック発振器でそれを使うのが良いだろうと思いました。(9600 bpsでソフトUARTを実行したいので、1.2 MHzは遅すぎると思いました) 外部発振器に変更するには、「avrdude -c usbtiny -p attiny13 -U lfuse:w:0x70:m -U hfuse:w:0xff:m」を実行しました 残念ながら、現在はデバイスにアクセスできません。そこにあった「PB0のLEDを点滅させる」プログラムはもう実行されず、プログラマーはそれに接続できません。 ここで何をすべきかわからない。このチップを捨てることはできますか、それを救う方法はありますか?


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

2
AVRのUARTをポーリングする必要がない方法はありますか?
別のAVRからUART経由でデータを受信して​​います。しかし、私は他のことをしているので、常にUARTをポーリングし続けたくありません。割り込みがあることはわかっていますが、受信完了に対しては1つしか表示されません。転送を完了するには、ポーリングする必要があると思います。
10 avr  embedded 

3
コンポーネントへの電流をどのように測定しますか?
シンプルなサーボを使用してヘキサポッドロボットを構築していて、各サーボへの電流を測定するのがどれほど実現可能か疑問に思っていました(5-6V DCから最大0.25-1Aまで(サーボの失速の仕様がわかりません)。現在まだ))、例えばATMega168を使用しています。有用な読み出しを行うには、サーボの各電源ラインと直列にどのような回路を構築する必要がありますか?この回路全体で電圧降下が発生すると思いますが、どのような可能性がありますか?等

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 */ …

3
マイクロコントローラーでのデータ保持
attiny13のデータシートを読むだけで、摂氏85度で20年、摂氏25度で100年のデータを保持できると書かれています。 これは、たとえばマイクロの読み取りと書き込みに関係なく、オフにして、摂氏85度の一定温度で20年間保持すると、データが失われますか? どのようにしてデータを「失う」ことができますか?私はこの概念を見ることはできません。 また、単位ppm(100万分の1)とは何ですか。6ページのデータ保持セクションで言及されていますが、その意味がわかりません。水晶発振器について話すとき、私はそれを定期的に見ましたが、なぜそれが使われたのか理解できません。
10 avr  data 

4
カスタムArduinoボード(AVRソリューション)を使用したDIYインターフェイス用の最も簡単で最高のPoEイーサネットチップ/マイクロ/デザイン
Arduinoの機能のいくつかと共に使用する予定の設計に組み込むことができるPoEイーサネットチップを探しています。イーサネットを提供できるイーサネットデバイス用にスタンドアロンmcuを実装したいと思います。すべての可能なソリューションは、マイクロに電力を供給するためにPoEをサポートする必要があります。私はArduinoを購入するつもりはなく、シールド自体も必要ありません。Arduinoファームウェアとマイクロコントローラーでうまく機能するPoEイーサネットチップを探しています。自分のカスタムArduinoボードに組み込むことができるチップ。 また、イーサネットがオンボードで構築されているArduino ATMega168 / etcと同じ機能(ピンごと)を提供するAVRチップにも興味があります。 私の開発プラットフォームは、AVRStudioか、Jtag ICE MKIIのようなものです。プログラマー、ソフトウェア、別のプラットフォームに投資するための現金がないため、PICを使用することができません。 あなたの助けのために事前にThx。 編集:アンドリューは、もっと情報を投稿すべきだと述べました。まず、Andrew:あなたが言ったMFGはまだ見ていません。今からそうします。 家の周りにいくつかのFreeduinoタイプのセットアップを配置して、さまざまなホームオートメーションタスクを実行したいと思います。私の家はすでにCat6で配線されており、特定のネットワークドロップを10/100 8ポートLinksys POEスイッチに接続する予定です。ネットワークケーブルをハックすることなく、各デバイスにネットワークと電力を供給したいと考えています。スイッチが802.3af標準に準拠していることを確認しました。 センサーとリレー機能を提供するためにPoEラインの電源をオフにするだけの各ボードを作成したいと思います(リレーは、リレーに3-32VDCを必要とするCrouzetのSSR-GA8-6D05です)。 私は、PoEチップが完全なPoE電圧を提供するか、またはそれを7〜12VDCに低下させるのに十分であると期待します。必要に応じて、7805または適切なチップを追加して、電圧レギュレーションを確保できます。結局のところ、私のマイクロには5V + 3V DCが1Aで調整される必要があります。 これが私の元の投稿が省かれた何かに答えることを願っています。
10 avr  power-supply  poe 

1
ATtiny:乗算のサポートなし?
ATtiny AVRが乗算に対するハードウェアのサポートを持たないのは本当ですか?コードで乗算を行うと、問題なく動作するようです。math.hも含めて、sin()とcos()の計算をいくつか行っています。これらの計算で800サイクルの大きなペナルティが発生していますか?
9 avr  attiny 

3
ATtiny45直接USB 2.0接続のフ&ー ム&アと回路
USB経由でPCにデータを送信するだけのATtiny45を使用して、独自のモジュラーUSBデバイスを作成したいと考えています。私はデータを読み取っていないので、片道(ATtiny-> PC)接続で完全に問題ありません。 Arduino UnoをISPとして使用し、Arduinoソフトウェア内からロードされた標準のArduinoISPスケッチを使用しています。AVRDUDEを使用して、ArduinoをISPとしてATtiny45をプログラミングすることを考えています。これは、HEXにコンパイルされたCコードを使用できるようにしたいのです。 回路に関する私の基本的な考え: ご覧のとおり、「直接」のUSB接続が必要です。これまでのところ、ソフトウェアベースのソリューションを使用する必要があることを知っています。 私はATtiny45で動作するようにSoftwareSerialを管理しました。このために、私はArduinoソフトウェアを使用して、次のコードでATtiny45をプログラミングしました: #include <SoftwareSerial.h> #define rxPin 3 #define txPin 4 SoftwareSerial serial(rxPin, txPin); void setup() { pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); pinMode(led, OUTPUT); serial.begin(4800); } void loop() { serial.println("1"); delay(1000); } 私はピン3(まだ)を使用していませんが、SoftwareSerial用に定義する必要があることに注意してください。 このように、SoftwareSerialを使用して、ATtinyから、このテストのために空白のスケッチがロードされているArduino UNOのTXピンにデータを直接送信することができました。私がArduinoソフトウェアのシリアルモニターを使用してCOM4(私の場合)のデータを読み取っていたのは、プログラムされたATtinyをUSBケーブルに直接接続しようとしたため、PCがデバイス(COMポート)を認識しなかったためです。 残念ながら、シリアルモニターで奇妙なUnicode文字しか表示されませんでした。データが16進形式かそれくらいだからだと思います。USBとATtiny45の間にUSB /シリアルコンバーターを接続する必要があることに気づきました。そのようなコンバーターを探しましたが、すべてのものが必要なので、既製のボードは使いたくありません。単一のボード上の私のコンポーネント。私のプロジェクトではFTDIチップは「多すぎる」と思いますね。(ピンが小さすぎてはんだ付けできません...) V-USBはUSB /シリアルコンバーターを必要としないため(私の知っているように)、2番目のアプローチでした。したがって、V-USBを使用するには、前述のようにAVRDUDEを使用する必要があります。 私はこの素晴らしいV-USB EasyLoggerの例を見つけました。回路設計とサンプルファームウェアが含まれています。(C / C ++ / HEX) 私が知りたい唯一のことは、回路を例に示すようにする必要がありますか?-> …

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 

2
PCINTn割り込みをトリガーしたピンを特定するには?
同じAVR PCINT割り込みを引き起こす2つのピンがある場合(たとえば、PCINT0またはPCINT1ピンによって引き起こされるPCINT0 ベクトル -ベクトルとピンの名前の重複が混乱していると思います)、どのピンを決定する唯一の方法だと思いますか? (s)割り込みが原因で、各割り込みの後に状態が記録され、PCMSKnで有効になっているすべてのピンの以前の値と現在の値が比較されますか?
9 avr  interrupts  atmel 

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 …

3
AVRレジスタとポートはゼロに初期化する必要がありますか?
私のコードの初期化ルーチンの間、私は次のようなことをするために使用します: clr r0 ; will always stay zero そして: out PORTA, r0; initialize ports out DDRA, r0 out PORTB, r0 ... これは実際に必要ですか?または、これがリセット時に自動的に行われることを確認できますか?特に、すべてのポートがデフォルトで入力として設定されることを信頼できるので、コードが実行されない場合に外部の問題は発生しませんか?
9 avr  reset  port  register 

3
より高速なプロセッサ/クロックでより多くのコードを実行できますか?
私は16Mhzで動作するATmega 328で実行するプログラムを書いています(ご存知ならArduino Duemilanove、それはAVRチップです)。 100マイクロ秒ごとに実行される割り込みプロセスがあります。100マイクロ秒の1ループで実行できる「コード」の量を計算するのは不可能だと思います(おそらくアセンブリに変換されてからバイナリイメージに変換されるCで書いています)。 また、これはコードの複雑さに依存します(たとえば、巨大な1つのライナーは、いくつかの短い行よりも実行が遅くなる可能性があります)。 私の理解は正しいですか、クロックレートまたは16Mhzのプロセッサは1秒あたり1600万サイクルを実行します(つまり、1マイクロ秒あたり16サイクル16,000,000 / 1,000 / 1,000)。したがって、100マイクロ秒のループでさらに多くのことをしたい場合、72Mhzバージョンのようなより高速なモデルを購入すると、マイクロ秒あたり72サイクル(72,000,000 / 1,000 / 1,000)になりますか? 現在のところ、実行が少し遅すぎます。つまり、ループを実行するのに100マイクロ秒より少し長くかかります(正確にはどれだけ長く言うのが難しいか、段階的に遅れます)。もう少し実行したいのですが、これはより速いチップを得るための健全なアプローチですか、それとも私は怒っていますか?

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