ちょっと Tea Time!? オーディオクロックリベンジ!の巻き 2023.2.15

つい先日に作成したブレッドボード用のオーディオクロックが実験用電源の不調に巻き込まれて
壊れてしまいました.
 やっぱり必要なのですが、同じものを作るのも芸がありません.
そういえば、だいぶ昔に秋月で購入した汎用のPLL発振器があるはずです.ちょっと探してみましょう.

----
ありました、 Si5351Aをつかった発振器です.


以前にSI5351Aを使った発振器モジュールを買っていました.


とても小さいです. DIP8サイズの基板に本体と25MHzの水晶が搭載されています.

このSI5351AはPLLを2個搭載していて、3つの発振出力を出すことができます.
ただ、部品箱の肥やしになっていたのは買ったのはいいのだけど、結構使うのが
面倒そうだったからです. でも、これを機会に動かしてみましょう.
基本的にはI2C線を繋ぐだけで動作するはずです.

組み立てましょう!

今回は安全のため3.3Vレギュレータを搭載することにしました. こうすれば多少の高電圧が
かかっても壊れることはありません.

あと、スイッチも1個増やして3個にしました. 高機能なSi5351Aをつかうのでなにか面白い使い方も
できるかもしれません.

PICは最初から容量の大きいPIC18F25Q10を使います.

回路図からわかるように、配線はさほど多くありません.

回路図です.とてもシンプルです.


必要になりそうな部品を集めてきました.


前作と同様にPICはOLEDに隠れるので、最初に実装です.



全体の配置はこんな感じでしょう.



完成しました.

ソフトはどうしよう?

Si5351Aは秋月から安価なモジュールがでているためか、「Si5351」で検索すると色々な人が動かしておられます.
でも、面白いことに共通しているのは「秋月の説明書では判らない〜」というところでした. まあ、確かにエッセンス
しか書いていませんから、正確に動かすにはデータシートとアプリケーションマニュアルをちゃんと読む必要があるでしょうね.

秋月の説明書 : AE-Si5351A.PDF
データシート :  Si5351-B.pdf
アプリケーションマニュアル :an619.pdf

ただ、このデバイスの周波数設定のための定数の算出はかなり面倒なところがあります.
よく理解すれば、任意の周波数を出力することができるでしょうが、基本的にはオーディオクロックとして使いますから、
使う周波数はほぼ限られてきます.

そのため、周波数設定の定数の導出は「CLOCK BUILDER PRO」というソフトを使います.
これは周波数を入れると、定数の一覧をC言語の形やエクセルのCSV形式で出力してくれます.
出てきたデータをそのままI2C通信でデバイスに書くだけで発振してくれますので、あまり悩む必要はありません.

でも、このソフトを使って自作している人ってあまりWEBでヒットしないのですよね〜. みなさん、頑張ってマニュアルを
理解しようとされているのでしょうか. 私もアンチョコに走らずに、ボケ防止の為にもそうしたほうがいいかな〜(笑.

使い方は簡単です.
 ソフトをインストールして、Open Projectを選択して、Clock Generatorを選択して、デバイス(Si5351A)の選択、パッケージ選択(10-MSOP)、
I2Cアドレス入力、水晶の周波数入力()25MHz)、出力と周波数の入力、etcを入力すれば定数テーブルを作成してくれます.
結果はEXPORTすれば、見ることができます.
 

CLOCK BUILDER PROをインストールして立ち上げて,Create New Projectから入って、あとは指示される通りに入力するだけです.


結果の出力例です.これは24.576MHzでCLK0から出力する場合です.

<前略>
typedef struct
{
unsigned int address; /* 16-bit register address */
unsigned char value; /* 8-bit register data */

} si5351a_revb_register_t;

si5351a_revb_register_t const si5351a_revb_registers[SI5351A_REVB_REG_CONFIG_NUM_REGS] =
{
{ 0x0002, 0x53 },
{ 0x0003, 0x00 },
{ 0x0004, 0x20 },
{ 0x0007, 0x00 },
{ 0x000F, 0x00 },
{ 0x0010, 0x0F },
{ 0x0011, 0x8C },
{ 0x0012, 0x8C },
{ 0x0013, 0x8C },
{ 0x0014, 0x8C },
{ 0x0015, 0x8C },
{ 0x0016, 0x8C },
{ 0x0017, 0x8C },
{ 0x001A, 0x0C },
{ 0x001B, 0x35 },
{ 0x001C, 0x00 },
{ 0x001D, 0x0F },
{ 0x001E, 0xF0 },
{ 0x001F, 0x00 },
{ 0x0020, 0x09 },
{ 0x0021, 0x50 },
{ 0x002A, 0x00 },
{ 0x002B, 0x02 },
{ 0x002C, 0x00 },
{ 0x002D, 0x10 },
{ 0x002E, 0x40 },
{ 0x002F, 0x00 },
{ 0x0030, 0x00 },
{ 0x0031, 0x00 },
{ 0x005A, 0x00 },
{ 0x005B, 0x00 },
{ 0x0095, 0x00 },
{ 0x0096, 0x00 },
{ 0x0097, 0x00 },
{ 0x0098, 0x00 },
{ 0x0099, 0x00 },
{ 0x009A, 0x00 },
{ 0x009B, 0x00 },
{ 0x00A2, 0x00 },
{ 0x00A3, 0x00 },
{ 0x00A4, 0x00 },
{ 0x00A5, 0x00 },
{ 0x00B7, 0x92 },

};
<以下略>


すこし面倒なのは、必要とする周波数分だけ一度計算させて、そのテーブルをまとめておくことです.
といっても、本当に必要なのは44.1kHzと48kHz系列で256FS,512FS、1024FSですから全部で6個程度です.
まあ、今後のことを考えて2048FSまで含めてもいいかもしれません.ついでなら4096FSもいれるかな?
48kHzの4096FSだと196.608MHzですから現状のDACでは動くものはないでしょう. 2048FSでもほとんどないかもしれません.

しかし、上のデータ列をみていて気付きました.
例えばここです.

{ 0x0004, 0x20 },
{ 0x0007, 0x00 },

というデータがあります. レジスター4とレジスター7へそれぞれ0x20と0x00を書き込む内容ですが、
アプリケーションを見ると、レジスターの4〜8は予約になっていて、何を書くかは明記してありません.
となると、書き込む値が既定値そのものでなかったら、このソフトを使わないと動かせないということですよね〜.
んん・・・どうなんだろう?


アプリケーションではレジスター4〜8は予約になっているが、定数ファイルにはこれらのレジスタの書き込み値がでてきます. これって既定値以外だったら絶対に
判らないなあ〜.


ここはオキラクに

あまり難しく考えずに、データテーブルを力づくで作っちゃいましょう.
その前に、データを単純にI2C通信で送っただけで動くかどうかを確認です.
24.576MHzで計算して出力させてみました.
オシロの周波数カウンターは24.576MHzとなっているから大丈夫ですね.
時間標準をつかって正確に測定したら24.575556MHzでした.
誤差は18ppmということですから、水晶ならこんなもんでしょう.


24.576MHzで発振させるとオシロの周波数カウンターも同じ値でした.


細かく測ると24.575556MHzとなり誤差は18ppmでした.

でも、どうせなら

SI5351Aが3出力あるということなら、MCK,BCK,LRCKの3種類を出してやるようにしたら
あとあと便利かもしれません. 同時に出力できるか試してみましょう.
問題は位相の合致です. MCKは位相がずれていてもいいですが、BCKとLRCKでは
位相が合っている必要があります.
 試してみましょう. 
LRCK=96kHz、BCK=6.144MHz、MCK=24.576MHzに設定です.
結論からいえば、位相あわせはできないようです. ああ〜残念.


上:MCK 下:BCK この2つの位相は関係ありません.


上:LRCK 下:BCK BCKの立下りでLRCKの変化が必要なので
BCKを反転すればいいでしょう.



上:LRCK 下:BCK BCKの出力を反転させました.
BCKの立下りでLRCKの変化になりましたね.
これでいいかな?


上:LRCK 下:BCK 残念でした.
電源を入れなおしたら、位相関係がずれました.
こりゃダメです.

おとなしく

単純なマスタークロック発振器にしちゃうかな〜.

#あすは出張だから、その時に考えましょう←仕事しろよ!


在庫少ない?

秋月でSi5351Aのモジュールの在庫は残り10個になっていました.
またSi5351A単体(@150円)は売り切れのようです.
でも、AMAZONでもSI5357は買えそうです. 結構安価です.
でもALIだとさらにやすいです. まあ、すぐ欲しい場合はAMAZONでしょうね.

AMAZONでも購入可能です.1個800円くらいです.
コネクタもついているのお得感あるかも.



ALIだともっとやすいです. まあ、いつ届くかわかりませんが.

とりあえずオキラクに  2023.2.21

とりあえず、ソフトを完成させておかないと、ゴミになってしまいそうなので
オキラクに使えるようにだけしておきまし.
セレクトキーで周波数系列(44.1k系、48k系、一般系)の切替と
それぞれの系列の中で6個のテーブルで周波数を選ぶようにしました.
これでCLK0,CLK1,CLK2のすべてをつかって周波数を出力できます.


44.1kHz系列の周波数テーブルです.


44.1kHz系列の周波数テーブルです.


一般系列の周波数テーブルです.

ちょっとお遊びで激安Si5351を怖いもの見たさで買っていました.

(おしまい)

PIC18F25Q10用のバイナリー.
:060000000000DAEF09F038
:08000800046ED8CF05F0E0CF33
:1000100006F00001E9CF0CF0EACF07F0E1CF08F0DD
:10002000E2CF09F0D9CF0AF0DACF0BF0F3CF12F01C
:10003000F4CF13F0FACF14F0F5CF15F0F6CF16F099
:10004000F7CF17F000C00EF001C00FF002C010F0A3
:1000500003C011F00E01BDAB31EF00F0C5BBC4EF22
:1000600004F00EC000F00FC001F010C002F011C08B
:1000700003F00CC0E9FF07C0EAFF078E08C0E1FFEC
:1000800009C0E2FF0AC0D9FF0BC0DAFF12C0F3FFBC
:1000900013C0F4FF14C0FAFF15C0F5FF16C0F6FF39
:1000A00017C0F7FF045006C0E0FF05C0D8FF1000DE
:1000B000BE0FF66E000EF7220900F5501200000088
:1000C00000000000005F00000003000300143E1465
:1000D0003E14242A7F2A124333086661364955228A
:1000E000500005030000001C2241000041221C00BA
:1000F00014083E081408083E0808005030000008A4
:1001000008080808006060000020100804023E5142
:1001100049453E04027F000042615149462241495F
:1001200049361814127F1027454545393E4949493B
:100130003201017109073649494936264949493E84
:100140000036360000005636000008142241001424
:1001500014141414004122140802015109063E41EE
:1001600059555E7E0909097E7F494949363E41411C
:1001700041227F4141413E7F494949417F09090967
:10018000013E4141493A7F0808087F00417F410014
:10019000304040403F7F081422417F404040407F34
:1001A000020C027F7F0204087F3E4141413E7F09ED
:1001B0000909061E2121215E7F0909097626494980
:1001C000493201017F01013F4040403F1F20402054
:1001D0001F7F2010207F41221C2241070870080742
:1001E0006151494543007F4100000204081020008E
:1001F00000417F00040201020440404040400001F1
:1002000002040020545454787F4444443838444411
:100210004444384444447F385454541804047E05FC
:1002200005085454543C7F0804047800447D400081
:100230002040443D007F1028440000417F40007C66
:10024000047804787C0804047838444444387C14E6
:10025000141408081414147C007C08040448545432
:10026000542004043F44443C4040207C1C20402057
:100270001C3C4030403C44281028440C5050503C1A
:100280004464544C44000836414100007F00004162
:1002900041360800020102040200A80FF66E020EA9
:1002A000F7220900F550120002535353535353538E
:1002B00053535353535353535353530300000000AA
:1002C000000000000000000000000000000004200A
:1002D000202020202020202020202020202020201E
:1002E00020070000000000000000000000000000E7
:1002F000000000000F0000000000000000000000EF
:1003000000000000000000100F0F0F0F0F4F0F0F25
:100310000F0F0F4F4F0F0F0F0F0F110F0F0F0F0F6B
:100320004F0F0F0F0F0F4F4F0F0F0F0F0F120F0F1A
:100330000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FCD
:10034000138C8C8C8C8C8C8C8C8C8C8C8C8C8C8C66
:100350008C8C8C148C8C8C8C8C8C8C8C8C8C8C8C55
:100360008C8C8C8C8C8C158C8C8C8C8C8C8C8C8C44
:100370008C8C8C8C8C8C8C8C8C168C8C8C8C8C8C33
:100380008C8C8C8C8C8C8C8C8C8C8C8C178C8C8C22
:100390008C8C8C8C8C8C8C8C8C8C8C8C8C8C8C1A0F
:1003A0003D3D3D3D3D3D020C0C0C0C0C00000000A1
:1003B00000001B0909090909097135353535350171
:1003C00001010101011C000000000000000000000C
:1003D00000000000000000001D0F0F0F0F0F0C0F9A
:1003E0000F0F0F0F0D0E10101010101EFAF3F3D692
:1003F0009C73F8F0F0F0B1BA0000000000001F009C
:1004000000000000000000000000000000000000EC
:100410000020211313192516010909090A060000F5
:1004200000000000213675757A84F5885050505BC5
:100430007E0000000000002A000000000000000014
:10044000000000000000000000002B04020404046F
:10045000010401020401010101010104042C000056
:100460000000000C00000000000C0C0000225200F4
:100470002D4D25110702004722100702000014DF4E
:1004800030BD1A2EA0C0E0E0E000208040208000B7
:100490000080008020202F000000000000000000ED
:1004A000000000000000000000300000000000001C
:1004B000000000000000000000000000310000000B
:1004C00000000000000000000000000000000032FA
:1004D000000000000000000000000000000000001C
:1004E00000003302010202020102010102010101C6
:1004F00001010104023400000000000000000000BF
:100500000000000001326200359D4D251107029068
:100510004722100702022BC030BD36364080C0C0D3
:10052000C0004000804000000000008020403700F4
:1005300000000000000000000000000000000000BB
:100540000038000000000000000000000000000073
:100550000000000039000000000000000000000062
:10056000000000000000003A000000000000000051
:10057000000000000000000000003B01010101013B
:10058000010101010101010101010104013C4232AB
:1005900022120200423222120200000003427200C4
:1005A0003D7B7A7A766EFE474646463EFE06588288
:1005B00030BD6E3E000000000000000000000000A2
:1005C0000000008020803F000000000000000000CC
:1005D00000000000000000000040000000000000DB
:1005E00000000000000000000000000041000000CA
:1005F0000000000000000000000000000000005AA1
:1006000000000000000000000000000000000000EA
:1006100000005B000000000000000000000000007F
:100620000000000000950000000000000000000035
:100630000000000000000000960000000000000024
:100640000000000000000000000000970000000013
:100650000000000000000000000000000000980002
:10066000000000000000000000000000000000008A
:1006700000990000000000000000000000000000E1
:10068000000000009A0000000000000000000000D0
:10069000000000000000009B0000000000000000BF
:1006A00000000000000000000000A20000000000A8
:1006B00000000000000000000000000000A3000097
:1006C000000000000000000000000000000000002A
:1006D000A400000000000000000000000000000076
:1006E000000000A500000000000000000000000065
:1006F000000000000000A600000000000000000054
:10070000000000000000000000A700000000000042
:10071000000000000000000000000000B79292926C
:10072000929292929292929292929292929292003B
:1007300020202020202020202020202020202020B9
:100740000000202020200000493243204552522042
:10075000253278253278253278004932435F455278
:10076000524F52004932435F4552524F5200493274
:10077000435F4552524F52002034342E316B487A39
:1007800020536572696573202020202000002020FE
:10079000434C4B30202020434C4B312020434C4BCA
:1007A0003220000020352E3634344D20322E38329F
:1007B000324D2034342E316B00002031312E32384E
:1007C0004D20352E3634344D2038382E326B000013
:1007D0002032322E35374D2031312E32384D2031F6
:1007E00037366B2000002034352E31354D20323223
:1007F0002E35374D203335326B2000002039302E16
:1008000033314D2034352E31354D203730356B2086
:100810000000203138302E364D2039302E33314D06
:1008200020312E34314D00002034386B487A20536B
:100830006572696573202020202020200000202080
:10084000434C4B30202020434C4B312020434C4B19
:100850003220000020362E3134344D20332E3037F4
:10086000324D202034386B2000002031322E3238B7
:100870004D20362E3134344D202039366B20000087
:100880002032342E35374D2031322E32384D203142
:1008900039326B2000002034392E31354D2032346E
:1008A0002E35374D203338346B2000002039382E58
:1008B00033304D2034392E31354D203736386B20CA
:1008C0000000203139364D20202039382E33304D6C
:1008D00020312E35334D0000205374616E646172F7
:1008E0006420205365726965732020200000202059
:1008F000434C4B30202020434C4B312020434C4B69
:100900003220000020203230304D20202031303085
:100910004D20202035304D20000020202032304D49
:100920002020202031304D20202020354D20000077
:1009300020202020324D2020202020314D20203525
:1009400030306B20000020203230306B20202031EE
:1009500030306B20202035306B20000020202032EA
:10096000306B2020202031306B20202020356B2060
:10097000000020202031364D2020202020384D201E
:10098000202020344D2000000001D4A801D0D36ADB
:10099000070ED26E8DB406D0255203E0010E226EF2
:1009A000256A02D0010E256E8DB206D0265203E0D4
:1009B000010E236E266A02D0010E266E8DB006D07F
:1009C000275203E0010E246E276A02D0010E276E23
:1009D0000E01C59B000131EF00F020204155444934
:1009E0004F20434C4F434B28504C4C2920200000B3
:1009F00020202020776974682053693533353141D0
:100A00002020202000002020204F4B4952414B55F0
:100A100020415544494F2020202000002020202044
:100A2000323032332D4665622D3230202020202096
:100A30000000EA6A3F0EE96EEF500EE0140E016E00
:100A4000006A002EFED7012EFBD7BF0E006E002ECF
:100A5000FED700D0EF2EF2D71200888488828880DB
:100A60000F011369878087928282000123EF0AF0C9
:100A70008282050E006E002EFED782908790050EB2
:100A8000006E002EFED78292050E006E002EFED75D
:100A900012008780050E006E002EFED78282050EA2
:100AA000006E002EFED78292050E006E002EFED73D
:100AB000120082908790050E006E002EFED7828273
:100AC000050E006E002EFED78292050E006E002EDF
:100AD000FED71200486A8780050E006E002EFED7F2
:100AE0008282050E006E002EFED78CA005D0050E6A
:100AF000006E002EFED7F9D78292050E006E002EF2
:100B0000FED7050E006E002EFED782908790050E50
:100B1000006E002EFED74850640804E1010E016EFD
:100B200003D002D0000E016ED0EF05F082908790C6
:100B3000050E006E002EFED78282050E006E002E7E
:100B4000FED78780050E006E002EFED7120047AE3E
:100B500002D09FDF01D0ADDF47AC02D09ADF01D0D9
:100B6000A8DF47AA02D095DF01D0A3DF47A802D0B3
:100B700090DF01D09EDF47A602D08BDF01D099DF46
:100B800047A402D086DF01D094DF47A202D081DFE4
:100B900001D08FDF47A002D07CDF01D08ADF9AD757
:100BA000015203E0C3DF010E016E12001A2C22D0A5
:100BB0005FDF780E476ECBDF476AC9DFAD0E476E49
:100BC000C6DF8B0E476EC3DFAF0E476EC0DF2F52FE
:100BD00007E0A10E476EBBDFC80E476EB8DF06D038
:100BE000A00E476EB4DFC00E476EB1DF9FDF000E70
:100BF000016E26D01A5222E13BDF780E476EA7DF46
:100C0000476AA5DF8D0E476EA2DF140E476E9FDF89
:100C1000AF0E476E9CDF2F5207E0A10E476E97DFA5
:100C2000C80E476E94DF06D0A00E476E90DFC00E50
:100C3000476E8DDF7BDF000E016E02D0010E016E6C
:100C400027EF06F02EC01AF0010E2F6EAFD72BEF54
:100C50000AF01A2C2CD0306A3050070828E308DF3D
:100C6000780E476E74DF476A72DF476A70DF100ED6
:100C7000476E6DDF3050B009316E476E68DF56DF6A
:100C8000F7DE780E476E63DF400E476E60DF2F6A37
:100C90002E6A2F5209E12E50830806E3476A57DF78
:100CA0002E2AD8B42F2AF5D741DF302AD5D71A52A9
:100CB0002FE1DEDE780E476E4ADF476A48DF200EFE
:100CC000476E45DF476A43DF210E476E40DF476AC4
:100CD0003EDF7F0E476E3BDF220E476E38DF476AEE
:100CE00036DF070E476E33DF21DFC2DE780E476E38
:100CF0002EDF400E476E2BDF2F6A2E6A2F5003081F
:100D000006E3476A24DF2E2AD8B42F2AF7D70EDF4E
:100D100090EF06F040C01BF041C01CF0120099D7C4
:100D2000406A416AF7DF2CEF0AF03EC040F03FC056
:100D300041F0F0DF120046504802F3CF01F0F4CF4B
:100D400000F04902F350002647504802F3500020BB
:100D5000026E120042501F08D8B056D089DE780EBD
:100D6000476EF5DE476AF3DE1C50B009466E476EEB
:100D7000EEDE1B50060DF350020F436E43500F0B77
:100D8000466E476EE4DE4338006E0F0E00160050CC
:100D90000F0B1009466E476EDADEC8DE69DE780E8C
:100DA000476ED5DE400E476ED2DE200E425C446EAA
:100DB000456A455004081BE3476A44C046F0496A47
:100DC000050E486EB8DF02C047F001C046F045503E
:100DD0000124016E000E0220036E015003C0F7FFD4
:100DE00058EC00F0466E476EB2DE452AE2D7476AFD
:100DF000AEDE9CDE1B2A1B50150806E11B6A1C2A6E
:100E00001C50080801E11C6A09EF07F041C042F0DC
:100E1000A1D712000900F5520CE0F6CF3DF0F7CF54
:100E20003EF0F5CF41F0F2DF3DC0F6FF3EC0F7FFE8
:100E3000F1D712003E6A3F6A78DF780EF66E070E31
:100E4000F76EE8DF3E6A010E3F6E6FDF8E0EF66EC4
:100E5000070EF76EDFDF3E6A020E3F6E66DFA40EFE
:100E6000F66E070EF76ED6DF3E6A030E3F6E5DDF4D
:100E7000BA0EF66E070EF76ECDDF3E6A040E3F6EB9
:100E800054DFD00EF66E070EF76EC4DF3E6A050E15
:100E90003F6E4BDFE60EF66E070EF76EBBDF3E6A67
:100EA000060E3F6E42DFFC0EF66E070EF76EB2DFE7
:100EB0003E6A070E3F6E39DF120EF66E080EF76EB1
:100EC000A9DF12003E6A3F6A30DF280EF66E080E78
:100ED000F76EA0DF3E6A010E3F6E27DF3E0EF66E14
:100EE000080EF76E97DF3E6A020E3F6E1EDF540E4D
:100EF000F66E080EF76E8EDF3E6A030E3F6E15DF4C
:100F00006A0EF66E080EF76E85DF3E6A040E3F6EBF
:100F10000CDF800EF66E080EF76E7CDF3E6A050E63
:100F20003F6E03DF960EF66E080EF76E73DF3E6AB5
:100F3000060E3F6EFADEAC0EF66E080EF76E6ADF36
:100F40003E6A070E3F6EF1DEC20EF66E080EF76EB9
:100F500061DF12003E6A3F6AE8DED80EF66E080EC8
:100F6000F76E58DF3E6A010E3F6EDFDEEE0EF66E64
:100F7000080EF76E4FDF3E6A020E3F6ED6DE040E9D
:100F8000F66E090EF76E46DF3E6A030E3F6ECDDE4B
:100F90001A0EF66E090EF76E3DDF3E6A040E3F6EC6
:100FA000C4DE300EF66E090EF76E34DF3E6A050EB3
:100FB0003F6EBBDE460EF66E090EF76E2BDF3E6A05
:100FC000060E3F6EB2DE5C0EF66E090EF76E22DF85
:100FD0003E6A070E3F6EA9DE720EF66E090EF76EC0
:100FE00019DF1200306A3050050812E3020E302477
:100FF000316E3E6A3F6E99DE2F50305C04E13E0E4A
:10100000416E04DF03D0200E416E00DF302AEBD7A3
:10101000120082820A0E006E002EFED7000082901F
:1010200087900A0E006E002EFED7000082920A0EF4
:10103000006E002EFED70000F4EF08F087800A0E45
:10104000006E002EFED7000082820A0E006E002E77
:10105000FED7000082920A0E006E002EFED700001E
:101060001200829087900A0E006E002EFED70000BC
:1010700082820A0E006E002EFED7000082920A0EB7
:10108000006E002EFED7000012003E6A3E50060899
:1010900009E33DAE02D0D2DF01D0E3DFD8903D3688
:1010A0003E2AF4D7F7EF08F00900F6CF3FF0F7CF6C
:1010B00040F0F5CF41F0AADE3FC0F6FF40C0F7FF99
:1010C0003E2EF2D7BCEF08F03FBE0FD00F0E006EE1
:1010D0003E3800160A0E005C03E2300E002602D0F5
:1010E0003F50002600C041F091DE0F0E3E160A0E62
:1010F0003E5C02E2300E02D03F9E3F503E263EC094
:1011000041F084DE12003D6A87800A0E006E002ED8
:10111000FED7000082820A0E006E002EFED700006D
:101120008CA00BD00A0E006E002EFED700003D2AC8
:101130003D50640801E101D0F3D782920A0E006E9F
:10114000002EFED700000A0E006E002EFED7000013
:10115000829087900A0E006E002EFED700003D5050
:10116000640824E13E6A3F6AE0DD480EF66E070E31
:10117000F76E080E3E6E98D71FC03EF0570E3F6EBA
:10118000A3DF20C03EF0570E3F6E9EDF21C03EF031
:10119000570E3F6E99DF040E3E6EFA0E3F6E49DC2D
:1011A0003E2EFBD7010E016E03D002D0000E016E61
:1011B0001200829087900A0E006E002EFED700006B
:1011C00082820A0E006E002EFED7000087800A0E73
:1011D000006E002EFED70000120039C01FF03AC08A
:1011E00020F03BC021F015D739C03DF04ED739DF94
:1011F0008ADF015213E0DDDF3E6A3F6A96DD5A0E58
:10120000F66E070EF76E06DE020E3D6EFA0E3F6EAC
:1012100010DC3D2EFBD7010E016E4BD03C6A3C50DA
:10122000070809E33AAE02D009DF01D01ADFD890EF
:101230003A363C2AF4D767DF015214E0BADF3E6A3F
:101240003F6A73DD640EF66E070EF76EE3DD020E85
:101250003D6EFA0E3F6E19EC05F03D2EFAD7010EE9
:10126000016E27D03C6A3C50070809E33BAE02D030
:10127000E5DE01D0F6DED8903B363C2AF4D743DFDA
:10128000015214E096DF3E6A3F6A4FDD6E0EF66E45
:10129000070EF76EBFDD020E3D6EFA0E3F6E19ECC3
:1012A00005F03D2EFAD7010E016E03D082DF000E4D
:1012B000016E1200C00E396E100E3A6E800E3B6E3B
:1012C0008CDFC00E396E110E3A6E800E3B6E85DFDC
:1012D000C00E396E120E3A6E800E3B6E7EDFC00E6F
:1012E000396E130E3A6E800E3B6E77DFC00E396E8C
:1012F000140E3A6E800E3B6E70DFC00E396E150E06
:101300003A6E800E3B6E69DFC00E396E160E3A6E75
:10131000800E3B6E62DFC00E396E170E3A6E800E85
:101320003B6E5BDF346A336A366A2FC035F036C0F5
:1013300047F035C046F0496A060E486EFCDC02C034
:1013400036F001C035F0010E30243526000E36226D
:10135000326A316A325226E131503C0823E334C00C
:1013600003F0335034C0F7FF4DEC01F0376E130E2D
:101370003326000E342236C003F0355036C0F7FF56
:101380004DEC01F0386E130E3526000E3622C00EDD
:10139000396E37C03AF038C03BF01FDF312AD8B47D
:1013A000322AD8D7C00E396EB10E3A6EAC0E3B6EF3
:1013B00014DF1200F86AF29A078E0E01D86BD56B13
:1013C000D76B080ED96F600ED36F010E196E1E6AAF
:1013D0001D6A226A236A246A0F010C6B146B1C6B52
:1013E000356B366B376B346B316B326B336B306B09
:1013F000010E256E266E276E010E2D6E0E01D86B26
:10140000D56BD76B030ED96F600ED36F010E3F6E95
:10141000000119EC05F00E01D86BD56BD76B050EEA
:10142000D96F600ED36F140E3F6E000119EC05F0FA
:101430000E01D86BD56BD76B080ED96F600ED36FCA
:1014400000012DEF05F0640E3F6E19EC05F02DC084
:101450002EF022EF06F063D47F8EF2CF2EF0F29EB4
:10146000030E796E310E7B6E80807C502EBEF28E24
:101470002B6E2B50020816E22B6A7F8EF250006E04
:10148000F29E030E796E310E7B6E2BC07CFF0F0136
:10149000550E816EAA0E816E808880B8FED70050EE
:1014A000F21200012C6A2C50020846E3036A2C5009
:1014B000280FE96E000E0320EA6E7F8EF2CF30F027
:1014C000F29E2CC079FF310E7B6E80807C5030BE46
:1014D000F28EEF6E036A2C50280FE96E000E032087
:1014E000EA6EEF50050808E2036A2C50280FE96EF7
:1014F000000E0320EA6EEF6A036A2C50280FE96E93
:10150000000E0320EA6EEFCF2EF07F8EF250006EB9
:10151000F29E2CC079FF310E7B6E2EC07CFF0F0136
:10152000550E816EAA0E816E808880B8FED700505D
:10153000F2122C2A0001B7D73E6A020E3F6E95ECDC
:1015400006F0DA0EF66E090EF76E64DC3E6A030EE4
:101550003F6E95EC06F0F00EF66E090EF76E5ADC53
:101560003E6A050E3F6E95EC06F0060EF66E0A0E0C
:10157000F76E50DC3E6A060E3F6E95EC06F01C0ED0
:10158000F66E0A0EF76E46DC040E2E6EFA0E3F6EF5
:1015900019EC05F02E2EFAD7800ED46E460ED56EBD
:1015A000D4A801D0D36A070ED26E0E01BD8BC00E37
:1015B000F2122B50000A000105E0010A05E0030ABF
:1015C00005E006D037DC04D07DDC02D0C3DC00D0DF
:1015D000036A2B50280FE96E000E0320EA6EEFCF4E
:1015E0002FF000DD036A2B50280FE96E000E032058
:1015F000EA6EEFCF30F02BC02FF05CDE22524FE0CE
:10160000036A2B50280FE96E000E0320EA6EEF2AC2
:10161000036A2B50280FE96E000E0320EA6EEF508C
:10162000060808E1036A2B50280FE96E000E03201C
:10163000EA6EEF6A226A036A2B50280FE96E000EE9
:101640000320EA6EEFCF2EF07F8EF250006EF29EF6
:101650002BC079FF310E7B6E2EC07CFF0F01550E23
:10166000816EAA0E816E808880B8FED70050F2127B
:10167000036A2B50280FE96E000E0320EA6EEFCFAD
:101680002FF00001AFDC036A2B50280FE96E000E2B
:101690000320EA6EEFCF30F02BC02FF00BDE235289
:1016A00050E0036A2B50280FE96E000E0320EA6E0B
:1016B000EF520AE1036A2B50280FE96E000E032057
:1016C000EA6E050EEF6E08D0036A2B50280FE96E04
:1016D000000E0320EA6EEF06236A036A2B50280FE0
:1016E000E96E000E0320EA6EEFCF2EF07F8EF250EF
:1016F000006EF29E2BC079FF310E7B6E2EC07CFFF8
:101700000F01550E816EAA0E816E808880B8FED7BB
:101710000050F212036A2B50280FE96E000E0320CE
:10172000EA6EEFCF2FF000015DDC036A2B50280F2B
:10173000E96E000E0320EA6EEFCF30F02BC02FF0E1
:10174000B9DD245242E0246A2B2A2B50030801E120
:101750002B6A7F8EF250006EF29E030E796E310E70
:101760007B6E2BC07CFF0F01550E816EAA0E816E21
:10177000808880B8FED70050F2122B50000A00017A
:1017800005E0010A06E0030A07E009D01AEC07F0B9
:1017900006D062EC07F003D0AAEC07F000D0036A91
:1017A0002B50280FE96E000E0320EA6EEFCF2FF0CA
:1017B00019DC036A2B50280FE96E000E0320EA6E35
:0E17C000EFCF30F02BC02FF075DD18D70300EF
:020000040030CA
:0C0000008CFFFCFC9FFFFFDFFEFFFFFFFA
:00000001FF
;PIC18F25Q10