Функция для установки значений регистра программируемого генератора (DS1077L) для разных частот - PullRequest
0 голосов
/ 03 июля 2019

Я получаю частоту 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...