用于设置不同频率的可编程振荡器(DS1077L)寄存器值的功能

时间:2019-07-03 07:46:02

标签: arduino

我正在获得代码所示的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]

0 个答案:

没有答案