Я получаю частоту 16 МГц, как показано в коде, максимальная частота генератора составляет 66 МГц.Я могу генерировать любую частоту между (66,6 МГц-8,13 Гц), используя выходной вывод OUT1 генератора (таблица данных DS1077L).Я также загрузил функциональную диаграмму и соответствующие изображения регистров генератора.Проблема в том, что;Я хочу создать такую функцию, как если бы я отправлял значение частоты в аргументе функции, соответствующий регистр должен автоматически устанавливаться через формулу.В соответствии с необходимой частотой среди различных частотных диапазонов (66,6 МГц-8,13 Гц).как
функция (freq_value) // freq_value = любое значение в диапазоне (66,6 МГц-8,13 Гц) {// регистр должен быть установлен в соответствии с этой частотой (регистр (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]