LPC810M021FN8 (10) -- 無限音階オルガン (1)
LPC810M021FN8 版の無限音階オルガン・プログラムができました。
8 ピンしかないので、当然、MIDI 入力のみに対応し、簡易キーボードはありません。
ソースは近日中に公開することとして、今回はオブジェクトの HEX ファイルのみを掲載します。
プログラム・サイズは 2552 バイトです。
MIDI IN から電源を取る場合の回路図を下に示します。
(2014/01/11 追記: 3 段 RC LPF の回路例を追加しました)
MIDI IN からの電源供給では ISP (In System Programming) には心許ないので、プログラムの書き込み自体は別に行い、書き込みずみのデバイスを装着するものとしています。
秋月で 8 個入り 100 円と安価な、LDO (Low DropOut) 三端子レギュレータの S-812C33AY-B-G には過電流保護回路がありませんが、MIDI IN から電源を取ると最大でも 23 mA しか流れないので出力ショート時にも破壊される心配はありません。
プログラム実行時の LPC810 の消費電流の実測値は約 6.5 mA で、MIDI IN から 3.3 V を生成する場合の上限値に近いので、接続する MIDI 機器の公称 +5 V の電圧が低い場合には、十分にレギュレートされない可能性があります。
その場合でも、プログラムの動作自体には影響ありませんが、出力に変動分が「ノイズ」として乗ります。
出力の LPF として、以前にも示した 100 mH のインダクタを使う LCR フィルタの例を示してあります。
PWM 周波数が約 59 kHz と高いので、上の回路例のような 3 段 RC パッシブ・フィルタでも十分な減衰が得られます。
ただし、フィルタの「肩特性」がゆるやかなので、シェパード・トーンのスペクトルを「シェーピング」する働きは弱く、高域のエイリアス成分を減少させるだけの機能です。
MIDI IN からの電源供給だと電流値に余裕がないので、OP アンプを使うアクティブ・フィルタは実現しにくくなります。
無限音階オルガン・プログラムは
- 12 MHz 内部 RC オシレータ出力から PLL を使って 30 MHz システム・クロックを生成し
- 8 ビット Double Edge PWM により、PWM 周波数およびサンプリング周波数は約 59 kHz
で動作しています。
CPU 負荷率は約 60 % で、つまり約 40 % がアイドル状態です。
最後に HEX ファイルを示します。
「Flash Magic」でこのファイルを書き込めば動作します。
SWD (Serial Wire Debug) に割り当てられている 3 番のピンと 4 番ピンをそれぞれ LED 出力と PWM 出力とに使っているので、SWD 経由の(再)書き込みがうまく行かない場合があるかも知れません。
:020000040000FA :1000000050010010D5000000E5000000DD000000F8 :1000100000000000000000000000000000000000E0 :10002000000000000000000000000000DF000000F1 :100030000000000000000000E1000000E3000000FC :10004000E5000000E500000000000000E500000001 :10005000E5000000E50000000000000000000000D6 :10006000E500000059030000E5000000E500000085 :10007000E5000000E500000000000000E5000000D1 :100080000000000000000000000000000000000070 :100090000000000000000000000000000000000060 :1000A000E5000000E5000000E5000000E5000000BC :1000B000E5000000E5000000E5000000E5000000AC :1000C0000348854600F014F800480047E3020000AA :1000D000500100100448804704480047FEE7FEE74F :1000E000FEE7FEE7FEE700009D030000C100000000 :1000F000064C0125064E05E02046E36807C82B4361 :1001000098471034B442F7D3FFF7DEFF0809000028 :100110002809000003490A68012383401A430A6042 :10012000704700008080044003490A68012383402F :100130001A430A6070470000C0C10040020700096E :100140008300064810B5520E1B181868FF2494400F :10015000A04391400143196010BD000000C0004061 :10016000044A5368012181408B435360506808431F :10017000506070470080044010B50620FFF7CAFFAA :100180000248016808221143016010BD002000A050 :10019000012310B51A461902054800F02BF83C213E :1001A000044800F0ADF8FFF7E7FF00F005F810BDD8 :1001B000004000500040064010B50720FFF7AAFF9E :1001C0000220FFF7B1FF0320FFF7AEFF02216320FB :1001D000FFF7B4FF04210020FFF7B0FF002101204A :1001E000FFF7ACFF0248016880229143016010BD17 :1001F00080800440FFB5044681B00E4615460820B5 :10020000FFF788FF0820FFF7ABFF00202060FF21E9 :10021000701E1131085321210901085303210902DD :10022000254A6018426201220262102020810020CB :100230007208616D46002B46B34019436165C300E7 :1002400001211F190903032301431B02FB185960F5 :1002500001211960814005231B02FB1859608100B0 :100260000F19FF210131CA53FF37FF3702373A8098 :10027000002D1CD0002109011960002D19D000218A :10028000A36DB1401943A165401C0428D1DB04983B :10029000002805D01020F0210851084940010860CD :1002A000E8070749C00E4018A08005B0F0BD012145 :1002B000E1E70121E4E700000410000000E100E0B4 :1002C0000800040002E008C8121F08C1002AFAD181 :1002D00070477047002001E001C1121F002AFBD1C6 :1002E000704700F000F800F003F900F085F8FCE733 :1002F000000000000000000000000000FFFFFFFF02 :1003000070B5044612480E46844201D1012508E02A :1003100010480025806B0F49403148610D498031FC :100320004D6328460E30C0B2FFF7F4FEED1CE8B274 :10033000FFF716FF206804217C22904308432060C9 :10034000761E2662206801210843206070BD0000EF :1003500000800640408004400B48416BC90612D51E :100360001021416309490A4A088812888018C2B2DC :100370000A800121C903484000040649000E088094 :100380000549012008707047C0400050000000106F :100390000A000010004200500500001070B512481D :1003A0000168124A114301600F4800224038026080 :1003B000012343604168C907FCD00B4924248039DC :1003C0008C600B4CA56B8026B543A563CC68E40715 :1003D000FCD0032101634363416BC907FCD00221B8 :1003E00081630448026170BD808004408000040085 :1003F000008204400000044070B5294C6078082653 :10040000002500282AD0274806602089E0806570F2 :1004100000F04CF88001208123488168C9071DD075 :100420004069C1B2C8090FD0C8430006C00E15D03C :100430002278EF2008408032904203D10809000161 :10044000A0702BE0A57009E0A378002B06D0E0781F :10045000401CC0B2E070022805D0217111488030E4 :10046000066030BF70BD2079302803D3303800E0FB :100470000C38C0B20C28FBD2094A0C32002906D035 :10048000802B04D0000180188168491C05E0000120 :1004900080188168002901D0491E8160E570DDE780 :1004A00004000010002200A000400640F0B500202B :1004B0000D4C0E4D01460A011219136857689E0132 :1004C000DB191360B30D9268EB56491C5A431018A0 :1004D0000C29F0DBFF21F931884202DC49428842D5 :1004E00000DA0846F0BD000010000010040500000E :1004F00010B503490020C880FFF74AFE10BD000078 :10050000040000100029454C443730364450524511 :100510002F1D1927425D6B65503827252D36362A49 :100520001608091D3F617677675346454D54503E86 :10053000230D051129424E4732190908111C1E14BA :1005400004F8FC153A5F787C705F5557616B695908 :100550003F2A222E465E6960492E1B161C2321135A :10056000FDEDED00214255554531232129302C1A4E :1005700000EAE3EF08222F2915FDEFEFFA060A0142 :10058000F2E8EE082F5770776D5E5559657070610F :1005900049352F3C566F7A735D42302C333A392BF4 :1005A0001606051839596C6C5B4637343B413C28BC :1005B0000DF5ECF60E25302912F9E8E6EFF9FAEF21 :1005C000DED1D5ED12364E5246342A2B353E3C2C28 :1005D00012FCF50018303B331B00EEE9EFF6F5E6B0 :1005E000D1C2C2D5F6182C2C1D08FBFA030A07F657 :1005F000DCC7C0CDE7010F0AF7E0D2D3DFECF1E9A9 :10060000DBD2D9F41C445F665D4E474B5864655796 :10061000412D2836506A77705B41302D343D3C2E99 :100620001A0B0B1F4061757565504240474D4835A8 :100630001A03FA051D3540382209F8F6FF090A00A9 :10064000EEE2E6FD22475E625544393A444C4A39AF :100650001F09010C233A453C2408F4EFF5FBF8EAA6 :10066000D4C3C2D5F51629281803F4F2FA00FCEA1F :10067000CFB8B1BDD5EFFBF5E1C9BABAC4D0D4CB80 :10068000BCB1B7D1F81F383E34251C202C36362794 :1006900010FBF5021B3440382208F6F1F8FFFEF09B :1006A000DBCACADDFE1E3131200BFCFA000601EE6A :1006B000D3BBB2BDD4ECF7F0DAC0B0ADB6C1C2B8AE :1006C000A69A9EB6DB00181C10FFF5F7010B09F97E :1006D000E0CAC3CFE7FF0A02EBD1BEBAC1C8C7B9AF :1006E000A59596AACBED0102F3E0D3D2DBE3E0D0EF :1006F000B7A29CA9C3DEECE8D5BFB2B3BFCDD2CBC5 :10070000BDB5BCD70029444B43352E33414D4E4136 :100710002B1814223D57645E4930201D252E2D20B4 :100720000DFEFF1335566A6B5B4739383F46422F43 :1007300015FEF60119313D362007F7F5FF090B01CB :10074000F0E4E800254A62665A483E3F4A5350406A :10075000261009142C434E452D12FFFA000604F50D :10076000E0CFCFE20223363625100201080F0AF847 :10077000DEC8C0CCE5FE0B05F0D9CACAD4E0E4DB84 :10078000CCC2C8E1082F494F44352C303C4646378F :100790001F0B05112B434F4831160400060E0CFDAC :1007A000E8D8D7EA0B2B3E3D2C1608050B110CF8A8 :1007B000DCC4BBC6DDF4FFF7E1C7B6B4BCC6C7BC3A :1007C000AB9EA2B9DE031A1E1200F6F7010A08F763 :1007D000DEC8C0CBE3FB06FDE6CBB8B3B9C0BEB004 :1007E0009B8B8B9FC0E1F5F5E6D2C4C3CCD3D0BFC1 :1007F000A5908996B0CAD8D3BFA99B9CA8B5B9B219 :10080000A39AA1BCE40C272E25170F14212D2E200E :1008100009F6F1FF19334039240AF9F6FD0605F807 :10082000E3D4D4E80A2B3E3E2F1A0B0A111712000C :10083000E5CDC5D0E8000B04EED4C4C2CBD5D6CCF0 :10084000BAAEB2CAEE132B2F22110607111A1807DF :10085000EED7D0DBF20A140BF3D8C4BFC5CCC9BAAB :10086000A59494A7C7E8FBFAEAD5C7C6CDD4D0BEF5 :10087000A38D8691AAC4D1CBB79F90909BA7ABA222 :10088000938990A9D1F812180EFFF6FA06111103F8 :10089000EBD7D1DEF8111D1600E6D4D0D7DFDDCFBF :1008A000BBABABBEDF00131303EDDFDDE4EAE5D243 :1008B000B7A097A2BAD2DED6C1A797959FA9ABA140 :1008C000908488A1C6EB0408FCECE2E4EFF8F7E7BB :1008D000CEB9B2BED7EFFBF3DDC2B0ACB3BBBAAD9D :1008E00099898A9FC1E3F7F8EAD6CACAD3DBD9C887 :1008F000B09B95A3BED9E7E3D1BBAEB0BCCAD0C90B :10090000BCB4BBD7000000002809000000000010A4 :10091000D0000000C4020000F8090000D000001060 :1009200080000000D4020000000000000000000071 :10093000000000000000000000000000BD91000069 :10094000000000000000000000000000689A0000A5 :1009500000000000000000000000000096A300005E :1009600000000000000000000000000051AD000089 :100970000000000000000000000000009FB7000021 :100980000000000000000000000000008AC200001B :100990000000000000000000000000001CCE00006D :1009A0000000000000000000000000005DDA000010 :1009B00000000000000000000000000059E70000F7 :1009C0000000000000000000000000001BF5000017 :1009D000000000000000000000000000AE03010065 :1009E0000000000000000000000000001F130100D4 :0809F0000000000000000000FF :04000005000000D522 :00000001FF