ATtiny10

円周率の計算 (15) -- BBP 公式による計算 (4)

ATtiny10 版のプログラムができました。 全てアセンブラ記述で、プログラム・サイズは 860 バイト (430 ワード) です。 思ったより小さくなりました。 SRAM の使用量はデータ 22 バイト、スタック 6 バイトの計 28 バイトで、まだ 4 バイト余っています。 内…

ATtiny10 用プログラム (18)

ATtiny10 の 6 番ピン (PB3) の特性を測定するのに使った回路を下に示します。 外部から PB3 に電圧を与えて、PB3 側に流れ込む電流 (シンク電流) の向きを「正」とし、ソース電流の場合は「負」とします。 電流検出回路を構成して、電圧値として読み出すこ…

ATtiny10 用プログラム (17)

今回は、マイコン・チップ上のフラッシュ・メモリにオブジェクト・プログラムを書き込むという意味の「プログラミング」の話題です。 ATtiny10 では、フューズ・ビットの設定により、通常はリセット端子として使われる 6 番ピンを PB3 の入出力ポートや、そ…

ATtiny10 用プログラム (16)

「scr_tn10.asm」プログラムについて、いくつか補足の説明をしたいと思います。 まず、「SYNC_MODE = 2」、つまり、外部 SYNC 入力モードの場合の波形写真を下に示します。

ATtiny10 用プログラム (15)

VCO 回路の「コンパレータ + ワンショット」部分として機能する ATtiny10 のプログラム「scr_tn10.asm」のソースを下に示します。 AVR Studio 4.19 で「Atmel AVR Assembler」プロジェクトとして「scr_tn10」を新規作成し、デフォルトで自動作成される空の「…

ATtiny10 用プログラム (14)

VCO 回路の「コンパレータ + ワンショット」部分を ATtiny10 のプログラムとして実現しました。 (gcc の gas ではなく)AVR ネイティブのアセンブラで書いてあり、そのソースリストは次回に掲載します。 タイマ IC 555 を使ったリセット型 VCO 回路なら 555 …

ATtiny10 用プログラム (13)

ATtiny10 版の MIDI to CV プログラム「m2c_tn10」のソースリストを下に示します。 FM 音源プログラムの MIDI データ処理部を再利用しているので、機能を削った部分はコメント・アウトしたり、#if (0) 〜 #endif で無効にしており、プログラム・ソースとして…

ATtiny10 用プログラム (12)

ATtiny10 版の MIDI to CV プログラムができました。 ソースリストは長くなるので次回に掲載します。 Arduino につないだままではなく、「応用回路」中に差し替えた場合の回路図を下に示します。 シリアル MIDI / レガシー MIDI インターフェース回路部分に…

ATtiny10 用プログラム (11)

ピン変化割り込みと AD 変換完了割り込みを利用したソフトウェア UART 受信プログラムのソース・リストを下に示します。 AD 変換完了割り込みサービス・ルーチン (108 バイト) ピン変化割り込みサービス・ルーチン (50 バイト) 初期化関数 tn10_sw_uart_setu…

ATtiny10 用プログラム (10)

ATtiny10 版の MIDI to CV プログラムを作っています。 ATmega168 用の同種のプログラムを元に処理を削り、ピッチベンド等のサポートのない、7 ビットの MIDI ノート番号を CV として PWM で出力し、ゲート信号を ON/OFF するだけの最低限の機能のプログラム…

ATtiny10 用プログラム (9)

ATtiny10 の内蔵 8 MHz オシレータの周波数 (周期) を「自力」で測定するプログラム「osc_tn10.c」のソース・リストを下に示します。 AVR Studio 4.19 で新規 AVR GCC プロジェクトを作成し、プロジェクト・フォルダに以下のプログラムをコピー・アンド・ペ…

ATtiny10 用プログラム (8)

内蔵 8 MHz オシレータの周波数を測定するには、正確で安定な基準周波数が必要で、これは外部から与える必要があります。 ATtiny10 では、Timer0 および CPU コアのクロックとして外部クロックを選択すると、内部クロックの行き先はフラッシュ・メモリの書き…

ATtiny10 用プログラム (7)

ATtiny10 の「OSCCAL」レジスタ (アドレス 0x39) に設定する値と、内蔵 8 MHz クロック・オシレータの発振周波数の関係を測定し、グラフにしてみました。 単に CPU クロック周波数の測定なら、フューズ・ビットの設定で、CLKO 端子 (4 番ピン) にクロックが…

ATtiny10 用プログラム (6)

#define によるモード設定の続きです。 #define USE_ADC // PB2 (pin 4) = freq control AD input でシンボル「USE_ADC」を定義すると、可変周波数のモードになり、PB2 (4 番ピン) に入力されるアナログ電圧を内蔵 8 ビット AD で 変換して得られた 0 〜 255…

ATtiny10 用プログラム (5)

「sin_tn10.c」プログラムの最初の部分にある #define で定義されるシンボルで設定される各種のモードについて説明します。 まず、 #define OSCCAL_ADJ (0) は、アドレス 0x39 にある OSCCAL レジスタに設定されるデフォルト値に足しこむ補正値の定義です。 …

ATtiny10 用プログラム (4)

ATtiny10 用のサイン波発生プログラムを作りました。 (12/27 追記: 「sin_tn10.c」で USE_ADC 未定義の場合にコンパイル・エラーになる問題と、「stab128.S」の 2 の補数計算のバグを修正したプログラムに差し替えました) フェーズ・アキュムレータとサイン…

ATtiny10 用プログラム (3)

DDA (Digital Differential Analyzer) を利用して、サイン/コサイン波形を出力する ATtiny10 用プログラム「var_test.c」を下に示します。 8 ビット phase correct PWM を利用していて、PB0 (ピン 1) および PB1 (ピン 3) から PWM 繰り返し周波数 15.625 kH…

ATtiny10 用プログラム (2)

今回は、gcc (Atmel AVR 8-bit GNU Toolchain 3.3.0.364) を使用した ATtiny10 用の C プログラムの話題です。 以下の話はバージョン 3.3.0.364 についてのもので、当然、バージョンが変われば状況も変化する可能性があります。 「米粒 AVR」こと ATtiny10 …

ATtiny10 用プログラム (1)

この「プログラム」は、ターゲット・マイコン上で走るプログラム自体のことで、それをフラッシュ・メモリに書き込む「プログラム」作業のことではありません。 以前に ATtiny13 用に m-系列ノイズを発生させるアセンブラ・プログラムを作成しましたが、それ…

Arduino を使った ATtiny10 の書き込み (4)

今回は、 ブレッドボード・シールドの製作 ターゲットへのプログラム書き込み後に自動でそのターゲット・プログラムが走り出すようにするためのスケッチの修正点 を取り上げます。

Arduino を使った ATtiny10 の書き込み (3)

今回は前回の記事に関して、いくつかの補足を示します。 まず、前回は、ライセンスについて明記しませんでしたが、このプログラムは Atmel の AVR918 のソースにわずかな変更を加えただけなので、もともとの Atmel のライセンス条件がそのまま適用されるもの…

Arduino を使った ATtiny10 の書き込み (2)

Arduino を AVR918 相当のデバイスとして機能させるスケッチ「Arduino918」を作って、ATtiny10 の書き込みに成功しました。 バイナリ・スケッチ・サイズは 2612 バイトです。 スケッチのアーカイブ・ファイルと readme ファイルを以下の Yahoo ボックスに置…

Arduino を使った ATtiny10 の書き込み (1)

最近話題の「米粒 AVR」こと 6 ピン SOT-23 パッケージの「ATtiny10」を私も手に入れましたが、TPI (Tiny Programming Interface) 方式の ATtiny10 に対応したプログラム書き込み器は持っていません。 新たなデバイス/ハードウェアの購入や、書き込み器の組…