問題タブ [attiny]
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.
timer - Arduino Attiny84 と Timer1 の問題
どのライブラリにも見つからないエラーがあります。
機能中
'void__vector_2()'
代入の左オペランドとして必要な左辺値のエラー。
c++ - Arduino: ライブラリを編集せずに定義を変更する [解決済み、コンパイラのバグ、回避策あり]
編集:以下の私の答えを見てください
私はArduinoプラットフォームにかなり慣れていないので、AdaFruitのattiny85(Trinket)ライブラリを使用してUSB HIDプロジェクトを作成しています。このライブラリのオプションに関する以前の回答済みの質問も参照してください: Change/Override Trinket (attiny85) USB 識別名、デバイス名
まれな C 関連の制限 (前の質問への上記のリンクの回答にある最新のコメントも参照)、分離コンパイルによるバイナリの分離遅延バインドに困惑しています。USB デバイスのオプションを変更したい場合は、ライブラリ自体を変更する必要があります。これはライブラリなので、ちょっと奇妙です。
たとえば、ライブラリをロードする前にオプションが変更されたヘッダー ファイルをインクルードした場合、何も変更されません。これは、このライブラリにもインクルードする必要があるため、ライブラリでは認識されないためです。
例: これは機能しません:
別のアプローチ:
そのため、プロジェクトごとにライブラリ自体 (この場合はusbconfig.h
ファイル) を変更する必要があります。それはライブラリであり、他のプロジェクトで使用できるため、私にはばかげているように聞こえます。おそらく、これは Adafruit ライブラリの設計エラーです。ベンダー名、デバイス名などは、このライブラリの外側でオプションにする必要があり、ライブラリの更新時に設定が上書きされる可能性もあります。そして... 分割されたプロジェクトごとにファイルを再度編集する必要があります。
usbconfig.h
そこで、オプションのヘッダー ファイルをファイルに含めるというアイデアを思いつきました。これには、 #include "user_usbconfig.h"
1 つの変更のみが必要です。しかし、それが唯一のusbconfig.h
ファイルではありません。少なくとも 3 つのバージョンが利用可能です! プロジェクト ディレクトリに user_usbconfig.h ファイルを 1 つ作成し、それを自動化するためのバッチ ファイルを作成し、それをプロジェクト ディレクトリに含めて、プロジェクトを切り替えるときにクリックするだけでオプションを変更できるようにします。
usbconfig.h ファイルに追加された行:
たとえば、プロジェクトに含まれる user_usbconfig.h
ソースコードの例 myProject.ino は、USB を有効にする以外は何もしません:
私が作成し、プロジェクト ディレクトリに追加されたバッチ ファイル:
結論と質問:
この方法は問題なく機能していますが、私はまだ満足しておらず、ライブラリのコード行を変更せずにこれを行う簡単な方法がないか疑問に思っています。エラーやその他の頭痛の種を避けるためにこれについて考える必要がないため、より「オンザフライ」なソリューションです。
c++ - Arduino Trinket/Attiny85 USB: すべてのキーの状態を読み取ることができますか?
たとえば、USB キーボードはシステム内の共有デバイスです。複数のキーボードが可能で、num、scroll、capslock の状態を共有します。キーボード #1 で capslock を押すと、キーボード #2 がこの状態を検出します。
エミュレートされた USB キーボード デバイス (Trinket ライブラリを使用) の場合、次を使用してこれらの値を確認できます。
質問:
それで、私はこれを任意のキーで行うことができるのだろうか、それとも完全に不可能なのでしょうか? そうでない場合、なぜですか?はいの場合、どうすればこれを行うことができますか?
interrupt - ATtiny85: ピン割り込みとタイマー割り込みに同時に応答する方法
私は最近、ATtiny85 を非常に小さなパッケージでいくつかの単純な電子機器のプロトタイプを作成する手段としていじっています。その関数の多くに使用される言語が、標準の Arduino スケッチに見られるものとは非常に異なる (そして直感的ではない!) ため、私はこれに問題を抱えています。ハードウェア固有の機能についても適切なリファレンスを見つけるのに苦労しています。
主にやりたいことは、ピンの変更とタイマーの両方を同時にリッスンすることです。ピンの状態が変化するとタイマーがリセットされますが、同時に、ピンの状態が変化する前にタイマーが終了した場合、コードはタイマー自体に応答する必要があります。
さて、私が見つけたチュートリアルから、ピン変更とタイマー割り込みの両方が同じ関数 - ISR() を介して漏斗されているようです。私が知りたいのは:
- ピンとタイマー割り込みの両方を同時に実行することは可能ですか?
- どちらも同じ関数を呼び出すと仮定すると、どのように区別しますか?
c - AVR タイマー オーバーフロー割り込みが機能しない
こんにちは、スタックオーバーフローの善良な人々。私の問題は、実行されないように見える割り込みサービス ルーチン (ISR) です。ここに私の設定に関するいくつかの情報があります: 私は avr attiny85 をフラッシュしています。これまでのところ、main.c と 2 つのモジュール (timer と hardwareInit) だけで、プロジェクトの骨組みがセットアップされています。タイマー モジュールには、CTC モードのタイマー 0 を 1 ミリ秒ごとにオーバーフローするように設定するために使用する timer0_init 関数があります。関数は次のとおりです。
タイマーを設定して、カウンターがオーバーフローするたびにティックをインクリメントする ISR を追加したので、経過時間などを追跡できます。
ご覧のとおり、動作していないため ticks++ をコメントアウトし、PORTB |= ( 1 << PORTB0 );
単純に LED をオンにするものに置き換えました。したがって、割り込みが実行された場合は、LED がオンになっていることを証明することでわかります。
残念ながら、電源を入れることができず、何が欠けているのかわかりません。(1. 正しいピンに LED を設定し、2. 正しいレジスタで正しいビットを操作していることを証明するために、このステートメントだけをPORTB |= ( 1 << PORTB0 );
無限ループに入れ、LED が点灯することを確認しました)
詳細については、ここに私の main.c があります。
したがって、無限ループで表示されるのは私が最初に試したものですが、その後うまくいかなかったので、空のループ (以前のものをコメントアウト) を作成し、割り込みがトリガーされるのを待って、より単純なことを試しました。 LEDをオンにします。
あなたが与えることができるどんな助けでも本当に感謝します. なぜこれが機能していないのか、私はかなり困惑しています。
c - 内部でトリガーしない場合
現在、マイクロコントローラのプログラミングに最善を尽くしています。
がメインで、gameStatus はグローバルな uint_8 です。ボタンを押すことによって発生する割り込みによって設定されます。
ただし、メインは gameStatus をまったく認識しません。これが考えられる理由はありますか?
ありがとう!
arduino - 電球を調光するための Attiny85 AC 位相制御
I2C経由で送信されたコマンドを受け入れるattiny85を介して電球を暗くしようとしています。私の問題は、電球がほとんど減光せず、かなりちらつくことです。
私の回路はここで見ることができます: I2C で制御される Attiny85 調光回路
Attiny85 では、光アイソレータ (およびトライアック) はピン 2 (AKA PB3、AKA PCINT3) を介して制御され、AC ゼロクロス検出はピン 3 (AKA PB4、AKA PCINT4) で行われます。
外部割り込みピンは、I2C 通信の SCL として使用されるピン 7 (別名 PB2) であるため、コードは単一の外部割り込みイネーブルではなく、ピン変更割り込みイネーブルを使用します。
8MHz の内部クロックが使用され、タイマー/カウンター プリスケーラーは 1024 です。これは、有効な入力範囲 (level
コード内の変数を参照) が約 0 ~ 65 であることを意味します。私の AC ソースは USA (60Hz) です。
私はさまざまな電球を試しましたが、他の電球よりもうまく機能するものはありませんでした.
これは、さまざまな調光レベルをオシロスコープに送信したときに、ゼロクロス検出器 (黄色) とトリガー (青色) を示すビデオです。悪い電話のビデオ