Si5338 は変換基板、MCU は例のごとく ATmega328P で aitendo のマイコン基板を使っています。本来は、慎重に取り組むべき電源を手持ち部品でいい加減に組んだため発振で苦しみました。次回は、ちゃんとした電源を使わなければと痛感です。
試験回路図
AVRのメモリ使用量はこんな感じです。
プログラム ソースは main.c と register_map.h の2つに分割しました。
main.c は、やりたいことを単純に書き連ねたものです。特にエラー処理は、どう書いて良いかわからなかったのでばっさり省略。参考ベースで見て下さい。
register_map.h は、ClockBuilder Desktop Software が吐き出すヘッダファイルで、構造体がよくわからないので単純な配列として扱えるよう冒頭部分を少しアレンジしたものです。
main.c
#define F_CPU 8.000E6 // マスタクロック8MHz
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/twi.h>
#include <util/delay.h>
#include <register_map.h>
void init_devices(void);
void onERROR(uint8_t i);
void init_si5338(void);
void write_Si5338(uint8_t addr, uint8_t data);
uint8_t read_Si5338(uint8_t addr);
void reg_update_Si5338(uint8_t addr, uint8_t data, uint8_t mask);
void wait_ms(uint16_t t);