2012-01-01から1年間の記事一覧

STM32F4-Discovery 用FM音源プログラム -- TGSTM32F4 (1)

秋月で少し前に入手した「STM32F4-Discovery」用の FM 音源プログラム「TGSTM32F4」を作りはじめました。 暫定版として、以前の CQSTARM / STBee / STBee mini / STM32VL Discovery 用のプログラムに一部分修正を加えたものが動作しました。 ボード上にはオ…

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 …

midifun2.S

以下はアセンブラ部分のソースですが、プリプロセッサを通すためにファイル名のエクステンションは「.S」(英大文字の「エス」) にする必要があります。 ;/*************************************************/ ;/* midifun2.S : MIDI functions (asm part) *…

midifunc.h、midifunc.c

/*************************************************/ /* midifunc.h : MIDI functions (C part) */ /* for ATtiny10 */ /* */ /* 2012/01/16 : Created by pcm1723 */ /*************************************************/ #ifndef _MIDIFUNC_H_ #define …

mididec.h、mididec.c

/*************************************************/ /* mididec.h : MIDI decoder */ /* for ATtiny10 */ /* */ /* 2012/01/16 : Created by pcm1723 */ /*************************************************/ #ifndef _MIDIDEC_H_ #define _MIDIDEC_H_ #…

sw_uart_rx.h、sw_uart_rx.c

/*************************************************/ /* sw_uart_rx.h : Software UART (Rx only) */ /* for ATtiny10 */ /* using PCINT0 and ADC interrupt */ /* */ /* 2012/01/12 : Created by pcm1723 */ /*****************************************…

m2c_tn10.h、m2c_tn10_c

「m2c_tn10.h」内の #define で、GATE 出力などのピン・アサインを変更できますが、CV 出力については PB0 (1 番ピン) に固定です。 シリアル MIDI (38.4 kbps) 時の CPU クロック周波数を 7.9872 MHz に、および、レガシー MIDI (31.25 kbps) 時のクロック…

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 番ピン) にクロックが…