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

ATtinyはAtmelの小型、低電力8ビットRISCマイクロコントローラーのファミリーです。一般的に、より小さなArduinoプロトタイピングプラットフォームボードとプロジェクトで見られます。

1
wdt_disable()を呼び出してウォッチドッグタイマーをオフにしようとすると、AVRがリセットされるのはなぜですか?
AVR ATtiny84Aでウォッチドッグシーケンスを無効にすると、タイマーには十分な時間が残っているはずですが、実際にチップがリセットされるという問題があります。これは一貫性がなく、多くの物理パーツで同じコードを実行しているときに発生します。毎回リセットされるものもあれば、時々リセットされるものと、決してリセットされないものもあります。 問題を実証するために、私は簡単なプログラムを書きました... 1秒のタイムアウトでウォッチドッグを有効にします ウォッチドッグをリセットします 白色LEDを0.1秒間点滅させます 白色LEDを0.1秒間点滅させた ウォッチドッグを無効にします ウォッチドッグの有効化と無効化の間の合計時間は0.3秒未満ですが、無効化シーケンスの実行時にウォッチドッグリセットが発生する場合があります。 コードは次のとおりです。 #define F_CPU 1000000 // Name used by delay.h. We are running 1Mhz (default fuses) #include <avr/io.h> #include <util/delay.h> #include <avr/wdt.h> // White LED connected to pin 8 - PA5 #define WHITE_LED_PORT PORTA #define WHITE_LED_DDR DDRA #define WHITE_LED_BIT 5 // Red …
34 arduino  avr  attiny  watchdog 

5
マイクロコントローラー回路でバッテリーを長持ちさせる
ATtiny85Vに小さなバッテリー(おそらくコイン電池)で長時間電源を供給したいと思っています。 私はソフトウェア側を調べましたが、コードはウォッチドッグタイマーで駆動され、未使用のアナログおよびデジタルコンバーターがオフになっており、チップは1MHzで動作しています。どれだけの電流が流れているのか、基本的に最小化されていることを望んでいます。 数秒ごとに起動し、ADCで電圧レベルのチェックを行い、RAMに記録し、スリープ状態に戻ります。シリアルラインが接続されていることを検出すると、データを吐き出します。 しかし、今私は回路全体を見て、回路全体をよりバッテリーに優しいものにするために私がすべきことがあるのだろうかと考えていますか? 1つのコンポーネント(マイクロコントローラー)が反復的であるが可変電流を消費する、長持ちする(単純な)回路を設計する場合の基本的な注意事項と禁止事項は何ですか? 例えば: インジケータLEDは大したことですか?明るいときにバッテリーを使い果たしていませんか?それを暗くするために巨大な抵抗器を置くべきですか、それとも抵抗器がバッテリーを使用するだけですか? バイパス/デカップリングコンデンサを使用して、バッテリーからの電流を均等にする必要がありますか、それとも、コンデンサがバッテリーの電力を浪費するだけですか? マイクロコントローラーには1.8Vしか必要ありませんが、1.8Vバッテリーはありません。2個の1.xバッテリーを使用して、電圧を送りすぎる必要がありますか?「できるだけ多くのボルトを使用しない」ことで、バッテリーの寿命を延ばすことができますか?それ、どうやったら出来るの? ピンがHIGHかLOWかを確認するには、余分な電力が必要ですか?何もしない演算や何らかの算術演算と比較して、GP I / Oピンの1つの状態をチェックする際に、さらに多くの電力使用量がありますか? 電流、電圧、電力の計算方法(および漠然と測定する方法)を漠然と知っていますが、どれがバッテリー寿命に相当するかはわかりません。Coulombsのバッテリー寿命の重要な測定値はありますか? バッテリーには次のようなものがいっぱいあるという漠然とした考えがあります。 アンペア時などの充電 エネルギー、ワット時など ワットなどの電力 しかし、私の回路が実行されたときに何が「食べる」のかについては、はっきりしていません。かなりの量のEE101と物理学の教科書を読みましたが、実際にはラボの経験はありません。言い換えれば、私は電池についてたくさん読みましたが、実際にはそれの大部分が何を意味するのか本当に分かりません。 抵抗器はバッテリー寿命を使い果たしますか?コンデンサはありますか?ダイオードはありますか?私は彼ら全員がそうしていると思うが、数字のどれが重要な数字なのか?インピーダンス?電力損失?現在?電圧? バッテリーを無駄にせずに電圧を下げる方法はありますか?バッテリー寿命を延ばしながら電圧を下げる方法はありますか?

3
通常のISRのようにAVRウォッチドッグを使用する
私はATTinyX5シリーズのウォッチドッグタイマーに頭を包み込もうとしています。だから私が読んだことは、プログラムをN秒まで特定の何かをさせるためにそれを使用できるように見えましたが、実際にはどのように見せたのではありません。他の人は、コード内の何かがその間にカウントをリセットしない限り、チップをリセットするだけのように見せました(これは「通常の」使用法のようです)。 TIMER1_COMPA_vectまたは同様のWDTを使用する方法はありますか。私はそれが1秒のタイムアウトモードを持っていることに気付きました、そして私は本当に私のコードで1秒ごとに何かを起こさせるためにそれを使用することができるのが大好きです(そして好ましくはその間スリープします)。 考え? * アップデート:*質問されたので、私が言及しているのはATTinyX5データシートのセクション8.4です。私がそれを完全に理解しているわけではなく、それが私の問題です...
17 avr  attiny  watchdog 

7
Arduinoをプログラマーとして使用する場合、ATtiny85でクロック速度ヒューズを設定するにはどうすればよいですか?
私はこのチュートリアルに従って、ArduinoでATtiny85をプログラミングし、それを使用して(ピエゾスピーカーを通して)いくつかのトーンを再生します。私は音を正しいピッチで取得することに苦労しています(ATtiny85ではtone()関数がサポートされていないため、手動で波形を作成しています)。 問題はArduinoとATtinyの異なるクロック速度にあると考えられます。ATtinyでクロック速度を変更できることを理解していますが、arduino環境を使用してこれを達成するにはどうすればよいですか?

2
アナログ入力ピンを介した4ビットバスアドレスの選択:モンテカルロシミュレーションで重複するアドレス値が表示される
ATtiny44マイクロコントローラーを使用して、修士論文の小さなセンサーPCBを設計しました。アプリケーションにはこれらのボードのうち約200個が必要で、16個は常にローカルにコントローラーボードに接続されています。ネットワーク全体は次のようになります。 コントローラーとセンサーボード間で通信するために、私は自分の1ピンバスを作成しました(タイミングベース)。唯一の問題は、センサーボードにデータをコントローラーボードに送信するときに、ネットワーク内の位置を知るためのアドレスが必要になることです。 ATtinyには1つのピンしか残っていないので、4つのジャンパーの設定に基づいてアナログ電圧を生成するジャンパーベースのDAC回路を思い付きました。センサー回路は値(47、470、1k、3k、4k7、10k、100k、および220k)を使用し、生産のために最適化したかったため、DACには以下の値(基本的には100k、50k、20k、および10k)を使用しました)。これにより、ジャンパー設定に基づいて0 Vから760 mVの間の値が得られます。ATtinyの内部1.1 Vリファレンスを備えたアナログ電圧として正確に読み取る必要がありました。起動時にATtinyはこの電圧を読み取り、その位置を知る必要があります。 この回路のシミュレーション – CircuitLabを使用して作成された回路図 理論的には、これは正常に機能します。抵抗の許容差を考慮すると、LTspiceでモンテカルロ解析を行って、重複領域がないことを確認しました(すべて1%BTW)。以下に、この分析の写真を見つけることができます。 今、私はこれらのボードのいくつか(幸運なことに200ではありません)を生産しましたが、いくつかは(特にすべての許容値が一度に再生される上位アドレス領域で)正確な読み取り値を取得できませんでした。すべての可能な解決策を測定し、最終的に私の問題を見つけました。私の最初の分析には、各コントローラーボード上のMC7805で12 Vからローカルに生成される5 V電源電圧の許容誤差は含まれていませんでした。データシートごとに、MC7805の出力電圧は4.8〜5.2 Vです。 これを理解した後、モンテカルロ分析を修正しました。これは次のようになります。 あなたが見ることができるように、私はこの電圧がこのアドレスを意味するだけであると断言することはできません素敵な重複領域があります。基本的に、noで始まるすべてのアドレス。8は、誤った読み取り値を取得する可能性があります(より高いアドレスの誤った読み取り値の可能性が高い) 私は考えていない、すでに(私は生産のために最適化したい論文用として)ボード上で使用されているものとは異なる抵抗値を追加したいです。 私は考えていない DACの抵抗ネットワークを供給するために電圧リファレンス(例えば、ツェナーダイオード)を追加したいです。 私はできませんそれ以上のコントローラボードを変更(およびそこより正確な電圧レギュレータを使用します)。 私がすることができますまだPCB設計/センサボードの概略を修正します! (プログラムによって、または回路を変更することによって)アドレスで常に正しい読み取り値を取得するようにするにはどうすればよいですか?

2
シリアル初心者:ワイヤーをつなぐことができないのはなぜですか?
私は、ほとんど何も理解せずに、USB-SerialコンバーターでArduino風のコードを使用してATtiny85からPCに送信しようとしています。私はショックを受け、うまくいかなかったことにthat然とした。 その小さなピンがピンの1つの電圧を点滅させていることを確認しましたが、そのピンをUSBシリアルケーブルで送信または受信に接続し、ターミナルプログラムを使用して試聴しようとしても、何も得られません。 どの部分が壊れているかをどのように判断するかわかりません。 シリアルを送信するには、VCC、GND、TXD以上のものが必要ですか? 詳細: この小さなコードはArduino環境で書かれており、少なくともLEDによれば、同様のコードが4つの「PORTB」ピンすべてを正常に点滅させます。HLTとSaporettiのコードを使用して、C ++のArduino方言を使用してプログラミングします。プログラムはまだKの下にあります。 #include <SoftwareSerial.h> SoftwareSerial s(0,1); //receive on "0", and transmit on "1" aka "PB1" aka pin 6 void setup() { s.begin(4800); } // assuming 1Mhz, 4800 baud void loop() { s.println(millis()); } // transmit something at every opportunity 多くの翻訳が含まれますが、コードは非常に基本的です。ボーレートを設定するコードは1MHzを想定しているようですが、幸いなことに、私の設定には工場出荷時のデフォルトヒューズがあり、1MHzで動作します。いずれにしても、ピン6はLEDに応じて電圧が点滅しています。 そこで、FTDI USBシリアルコンバーターの「ftdi」端を小さなワイヤーに接続します。黒にGND、赤にVCC、オレンジに6。PCでプログラム「minicom」を開き、ボーを設定します。 4800まで評価して、何もしないで待ちます。Boarduinoと話をするとき、問題はありません。 FTDIコンバーターケーブルのピン配列は次のとおりです。黒はGND、茶色は「CTS」、赤はVCC(+ 4.98V)、オレンジは「TXD」、黄色は「RXD」、緑は「RTS」です。 …
14 attiny  arduino  serial  ftdi  usb 

3
ArduinoでできることはATtinyでできないことは何ですか?
このMake Magazine youtubeビデオに触発されて、ほとんどのプロジェクトでArduinoの代わりにATtinyチップを使用したいと思います。ビデオ作成者は、Arduinoの一部の機能がATtinysで動作しないことを警告しています。サポートされているものとサポートされていないものの完全なリストはありますか?
12 arduino  attiny 

2
Cソースから直接AVR EEPROMをプログラム
AVR Cソースに以下のコードを含めると、追加のコマンドや.hexファイルを必要とせずに、ヒューズを直接プログラムすることができます。 #include <avr/io.h> FUSES = { .low = LFUSE_DEFAULT , .high = HFUSE_DEFAULT , .extended = EFUSE_DEFAULT , }; EEPROMに値をプログラムする同様のトリックはありますか? /usr/lib/avr/include/avr/fuse.hマクロに関するコメントが見つかる場所を確認しましたが、で同様のコメントが見つからず/usr/lib/avr/include/avr/eeprom.h、プリプロセッサの解釈が私のリーグから少し外れています。 CのソースコードにデフォルトのEEPROM値を含めることができれば、とても便利です。誰でもそれを達成する方法を知っていますか? edit1: このFUSESトリックはISP時間にのみ実行され、RUN時間には実行されません。そのため、コントローラーの結果のアセンブリコードにはヒューズがプログラムされていません。代わりに、プログラマーは追加のFUSESプログラミングサイクルを自動的に繰り返します。 edit2: Linuxではavr-gccおよびavrdudeツールチェーンを使用しています。
11 avr  c  attiny  eeprom 

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 …

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

2
単三電池からAttinyに電力を供給する方法は?
周囲光の状況でRGB LEDに電力を供給したいプロジェクトに取り組んでいます。私はArduino Leonardoとledを使用してこれをプロトタイプ化しました。現在、プロジェクトはコンピュータのUSBポートに接続されていますが、Attiny 45または84と単三電池を使用したいと思います。私はもともと、完全に充電されたときに約4.8ボルトを供給する3つのAA非充電式バッテリーを使用することを考えていました。問題は、電圧が時間の経過とともに低下することです。LEDが一定の明るさになるようにしたいと思います。電圧レギュレータが思い浮かびましたが、私はバッテリーをかなり長持ちさせたいので、それは効率的である必要があります。いくつか見ましたが、自分の状況に最適なものはわかりませんでした。 私が使用しているLEDは、SparkFun- SparkFun RGB LEDからのものです。 もう1つの方法は、2つのAAバッテリーを使用して、ここにSparkFun 3.3vブレークアウトのようなステップアップボードを使用することですが、やはりバッテリーの寿命が問題です。ステップアップボードを介してバッテリー使用量を計算する方法がわかりません。 この状況でのバッテリ寿命が長いということは、オンとオフの使用が数週間、場合によっては数か月続くことを意味します。でも、たった2つか3つのバッテリーでは不可能を求めているかもしれません。 だから私の質問は、これらのオプションのいずれかが他よりも優れているでしょうか?明るさは、単三電池3個と電圧調整器なしでそれほど変化しませんか?2番目のオプションを使用すると、バッテリーは長持ちしますか?私が見逃した別のオプションはありますか? 私は物事のハードウェアの面が初めてなので、どんな助けでも大歓迎です!

3
ATtiny85の消費電力は2倍になると予想
ATTiny85をバッテリーで動かそうとしています。16.384 MHzクリスタルからクロックを供給し、8分周ヒューズセットを備えています。Vccは3.3ボルトです。データシートの図22-7は、アイドル時(set_sleep_mode(SLEEP_MODE_IDLE); sleep_mode();)に約300 µAを消費することを示しています。実際には、それは850 µAのように見えます。消費電力が2倍になることが予想される理由がわかりません。25 msごとに中断するように設定したtimer0を除いて、PRRのすべてをオフにしました。したがって、ほとんどの時間をアイドル状態で費やす必要があります。これは、タイマーでカウントしたい場合に実行できる最善の方法です。 ヒューズは0x7f、0xdf、0xffです。 このテストで実行されるコードは次のとおりです。 #include <Arduino.h> #include <EEPROM.h> #include <avr/sleep.h> #include <avr/power.h> #define P0 0 #define P1 1 #define P_UNUSED 2 ISR(TIMER0_COMPA_vect) { // do nothing - just wake up } void setup() { power_adc_disable(); power_usi_disable(); power_timer1_disable(); //PRR = _BV(PRADC) | _BV(PRTIM1) | _BV(PRUSI); // everything …

5
ATTiny13 — avr-gcc Hello Worldは100バイト以上を使用しますか?
ATTiny13用のプログラムを書こうとしています。私の問題は、巨大なサイズの制約があることです。さて、私の最初のHello Worldプログラムを作成するとき、ライトをオン/オフするだけで100バイトのプログラムスペースが必要でした。このサイズを縮小するためにavr-gccに提供できるオプションはありますか?また、crt0には何がありますか?私はAVRアセンブリにあまり熱心ではないので、あまり理解していません。 このプロジェクトのアセンブリに立ち寄る必要はありません。

2
ATtiny13A-CTCモードでソフトウェアPWMを生成できない
ATtiny13Aを使ってリモコンのRGB LEDライトを作ろうとしています。 私はATtiny85がこの目的により適していることを知っており、最終的にコード全体に適合できない可能性があることを知っていますが、今のところ私の主な関心事はCTCモードで割り込みを使用してソフトウェアPWMを生成することです。 私は(と高速PWM以外の他のモードで動作することができないOCR0AようにTOP、私が使用していたIR受信コードは、それがCTCを使用して生成する38 kHzの周波数を必要とするため、基本的に同じものです)OCR0A=122。 だから私は(そしてインターネットでこれが言及されているのを見たことがあります)、ソフトウェアPWMを生成するために割り込みOutput Compare AとOutput Compare B割り込みを使用しようとしています。 OCR0AIRコードでも使用されるは、周波数を決定しますが、これは気にしません。そしてOCR0B、LEDの色を変更するために使用するPWMのデューティサイクルを決定します。 OCR0B値をから0に変更することで、デューティサイクルが0〜100%のPWMが得られると期待していますOCR0A。これは何が起こるべきかについての私の理解です: しかし実際に起こっていることはこれです(これはProteus ISISシミュレーションからです): 以下を見るとわかるように、約25%〜75%のデューティサイクルを取得できますが、〜0-25%および〜75-100%の場合、波形はスタックし、変化しません。 黄色の線:ハードウェアPWM REDライン:固定デューティサイクルのソフトウェアPWM 緑のライン:デューティサイクルが変化するソフトウェアPWM そして、これが私のコードです: #ifndef F_CPU #define F_CPU (9600000UL) // 9.6 MHz #endif #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> int main(void) { cli(); TCCR0A = 0x00; // Init to zero TCCR0B = 0x00; TCCR0A |= …
8 avr  pwm  interrupts  attiny 

2
FCC免除のための古いATTINY15 1.5Mhzクロックの回避策は?
ATTINY15は、1.6Mhzの内部RCクロックが1.705Mhzのカットオフをわずかに下回っていたため、FCCパート15の免除バッテリー駆動製品の設計に最適でした。 ATTINY2 / 4/85交換部品には1.6Mhz互換モードが付属していますが、このクロックは内部の6.4Mhzクロックを分周することによって得られます。FCCの免除では、デバイスが「1.705 MHzを超える周波数を生成または使用しない」必要があるため、この交換部品は免除の対象にはなりません。 ATTINY2 / 4/85の内部128KHzクロックを使用して免除の対象になることは可能と思われますが、これは非常に遅く、一部のアプリケーションでは実用的ではありません。 ATTINY15が停止した状態で、外部発振器を追加せずに、128KHz以上の馬力を必要とするパート15の免除バッテリー駆動製品を設計する良い方法はありますか?
8 attiny  fcc  attiny85 

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