我正在获得代码所示的16Mhz频率,最大振荡器频率为66Mhz。我可以使用振荡器的OUT1输出引脚产生(66.6MHz -8.13k Hz)之间的任何频率。我还上传了振荡器的功能图和相关寄存器图像。 问题是; 我想制作一个函数,例如,如果我在函数的参数中发送频率值,则相应的寄存器应通过公式自动设置。根据不同频率范围(66.6MHz -8.13k Hz)之间所需的频率。 喜欢
function(freq_value)// freq_value =范围(66.6MHz -8.13k Hz)之间的任何值 { //应根据该频率设置寄存器(寄存器(0x01)和MUX寄存器(0x02)) }
我陷入了困境,请问如何使该功能生效。谢谢
[#include <Wire.h>
//const int ds_address = 0x58 >> 1; //DS1077 default address
const int ds_address = 0x58; //DS1077 default address
void setup() {
Wire.begin();
Serial.begin(9600);
//Initialize DS1077
i2c_write(ds_address, 0x02, 0x00, 0x00);
//delay(500);
i2c_write(ds_address, 0x01, 0x00, 0x80);
//delay(500);
i2c_write(ds_address, 0x0D, 0x08);
//delay(500);
i2c_write(ds_address, 0x3F);
//delay(500);
}
void loop() {
// read the frequency
// Serial.println(getFrequency(freq_pin));
}
void i2c_write(int device, byte address) {
Wire.beginTransmission(device); //start transmission to device
Wire.write(address); // send register address
Wire.endTransmission(); //end transmission
}
void i2c_write(int device, byte address, byte val1) {
Wire.beginTransmission(device); //start transmission to device
Wire.write(address); // send register address
Wire.write(val1); // send value to write
Wire.endTransmission(); //end transmission
}
void i2c_write(int device, byte address, byte val1, byte val2) {
Wire.beginTransmission(device); //start transmission to device
Wire.write(address); // send register address
Wire.write(val1); // send value to write
Wire.write(val2); // send value to write
Wire.endTransmission(); //end transmission
}][1]