Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos s需要一个上拉电阻器_Macos_Arduino_Spi - Fatal编程技术网

Macos s需要一个上拉电阻器

Macos s需要一个上拉电阻器,macos,arduino,spi,Macos,Arduino,Spi,希望能有帮助。啊。。。我现在明白了。我们需要发送0x1C02 00 0111 00000000 10。但我还是没有收到雨刷的回应。是否有必要在每个单词发送后将SS引脚拉高?参见第18页。。。当SYNC返回高位时,串行数据字将根据表11中的说明进行解码。谢谢!我更新了上面的代码以反映您的建议和一些更改,不幸的是阻力仍然没有变化。您是否尝试了SPI_模式1。(我之前有SPI_模式2)。在第7页图3中明确指出,它需要是CPOL=0,CPHA=1,又名。。。SPI_模式1幼崽。。。看起来上面的代码现在是

希望能有帮助。

啊。。。我现在明白了。我们需要发送0x1C02 00 0111 00000000 10。但我还是没有收到雨刷的回应。是否有必要在每个单词发送后将SS引脚拉高?参见第18页。。。当SYNC返回高位时,串行数据字将根据表11中的说明进行解码。谢谢!我更新了上面的代码以反映您的建议和一些更改,不幸的是阻力仍然没有变化。您是否尝试了SPI_模式1。(我之前有SPI_模式2)。在第7页图3中明确指出,它需要是CPOL=0,CPHA=1,又名。。。SPI_模式1幼崽。。。看起来上面的代码现在是正确的。原来我的硬件有问题。我把所有的东西拆开,在一个试验板上重新组装,现在它运行得非常平稳。谢谢所有的帮助@mpflaga我真的很感激!
#include <SPI.h> 

 const int csPinCWF = 10; 

 const byte enableUpdateMSB = 0x1C; //B00011100
 const byte enableUpdateLSB = 0x02; //B00000010
 const byte command = 0x04; //B00000100

 void setup() {
  Serial.begin(9600);
  Serial.println("Ready");

  SPI.begin();
  Serial.println("SPI Begin");
  SPI.setBitOrder(MSBFIRST); //We know this from the Data Sheet
  SPI.setDataMode(SPI_MODE1); //Pg.7:Fig.3 states CPOL=0, CPHA=1 --> MODE1

  pinMode(csPinCWF,OUTPUT);
  Serial.println("Output Set");

  digitalWrite(csPinCWF, HIGH);
  Serial.println("Set pin to HIGH");
}

 void loop() {
 for(int i=0; i<1023; i++) { 
   Serial.println(i);
   enablePotWrite(csPinCWF);
   digitalPotWrite(csPinCWF, i);
   delay(5000);
  } 
}

 void digitalPotWrite(int csPin, int value) {
  Serial.println("In digitalPotWrite Now");
  digitalWrite(csPin, LOW); //select slave
  Serial.println("Set csPin to LOW");

  Serial.print("Command Byte is: ");
  Serial.println(command, BIN);

  byte shfitedValue = (value >> 8);
  Serial.print("Shifted bit value is: ");
  Serial.println(shfitedValue, BIN);

  byte byte1 = (command | shfitedValue);
  Serial.print("Byte1 is: "); 
  Serial.println(byte1, BIN);

  byte byte0 = (value & 0xFF); //0xFF = B11111111 trunicates value to 8 bits
  Serial.print("Byte0 is: ");
  Serial.println(byte0, BIN);

  //Write to the RDAC Register to move the wiper
  SPI.transfer(byte1);
  SPI.transfer(byte0);

  Serial.print("Transfered: ");
  Serial.print(byte1, BIN);
  Serial.print("    ");
  Serial.println(byte0, BIN);

  digitalWrite(csPin, HIGH); //de-select slave
  Serial.println("Set csPin back to HIGH, end of digitalPotWrite");
}

 void enablePotWrite(int csPin) { //Enable Update of the Wiper position through the digital interface
   digitalWrite(csPin, LOW); //select slave

   Serial.print("Enable byte is: ");
   Serial.print(enableUpdateMSB, BIN);
   Serial.print("    ");
   Serial.println(enableUpdateLSB, BIN);

   SPI.transfer(enableUpdateMSB); 
   SPI.transfer(enableUpdateLSB);

   digitalWrite(csPin, HIGH); //de-select slave
}
SPI.setDataMode(SPI_MODE1);
#include <SPI.h>

const int SS_PIN = 10;
const int MOSI_PIN = 11;
const int MISO_PIN = 12;
const int CLK_PIN = 13;

// Writes to the control register enabling the RDAC register write access.
void initRheostat() {
    Serial.println("Writing Control Reg");
    byte upper = 0x1C;
    byte lower = 0x02;
    digitalWrite(SS_PIN, LOW);
    SPI.transfer(upper);
    SPI.transfer(lower);
    digitalWrite(SS_PIN, HIGH);
}

// Writes the value to the RDAC register.
void writeRheostat(byte val) {
    Serial.print("Writing to Rheostat... ");
    Serial.println(val);
    byte command = 0x01;
    byte upper = (command << 2) | (val >> 6);
    byte lower = val << 2;
    digitalWrite(SS_PIN, LOW);
    SPI.transfer(upper);
    SPI.transfer(lower);
    digitalWrite(SS_PIN, HIGH);
}

// Readsd the value in the RDAC register.
void readRheostat() {
    Serial.println("Reading rheostat...");
    digitalWrite(SS_PIN, LOW);
    byte upper = 0x80;
    byte response = SPI.transfer(upper);
    // Print the raw byte response.
    Serial.println(response, HEX);
    digitalWrite(SS_PIN, HIGH);
    digitalWrite(SS_PIN, LOW);
    byte lower = 0x00;
    // Print the raw byte response.
    byte secondResponse = SPI.transfer(lower);
    Serial.println(secondResponse, HEX);
    // Calculate the actual value and print it out.
    int value = ((response & 0x03) << 6) | (secondResponse >> 2);
    Serial.print("Actual Value: " );
    Serial.println(value);
    digitalWrite(SS_PIN, HIGH);
}

void setup() {
    Serial.begin(9600);
    // Initialize SPI
    pinMode(SS_PIN, OUTPUT);
    SPI.begin();
    // SPI_MODE1 (CPOL = 0, CPHA = 1) - From the datasheet
    SPI.setDataMode(SPI_MODE1);
    // MSBFIRST - From the data sheet
    SPI.setBitOrder(MSBFIRST);
    // Call to init and enable RDAC register write access.
    initRheostat();
}

void loop() {
    // Serial listener that sets the wiper to the specified value.
    while (Serial.available() > 0) {
        char inChar = Serial.read();
        writeRheostat(inChar);
        readRheostat();
    }
}