Arduino Asked by rithvikp on January 16, 2021
I am trying to read data from an ADC ADCS7476 (datasheet) using SPI on Arduino Uno. I am using the following code to read the data from the ADC and printing it on serial monitor. However, the code is always printing 0. I never used SPI before and I am not able to debug the issue, does anyone know where I am going wrong.
I am using the following connections:
Code:
#include <SPI.h>
#define cs 10
SPISettings settingsA(250000, MSBFIRST, SPI_MODE0);
byte highbyte,lowbyte;
unsigned int data;
void setup() {
Serial.begin(9600);
pinMode(cs, OUTPUT);
digitalWrite(cs, HIGH);
delay(1000);
SPI.begin();
}
void loop() {
SPI.beginTransaction(settingsA);
digitalWrite(cs, LOW);
delayMicroseconds(1);
highbyte = SPI.transfer(0xFF);
lowbyte = SPI.transfer(0xFF);
digitalWrite(cs, HIGH);
delayMicroseconds(1);
SPI.endTransaction();
data= ((unsigned int)highbyte << 8 ) + lowbyte;
Serial.println(data);
delay(100);
}
I am leaving this answer in case anyone stumbles across this question in the future
In a super frustrating, anti-climactic end, it turns out that the ADC chip itself was not working properly. I tested the (faulty) chip using the code above and observed the output of data pin on the oscilloscope and the output was the same square wave irrespective of the input. I managed to find a new ADC and I tested it and it was working correctly. But this raises a new issue for me, this is the third ADC chip I tested that was working correctly, the first two were faulty. It is very unlikely that it is a manufacturing issue and I used the same connections and the same code to test all three of them. Maybe it has to something to do with soldering, because AFAIK that's the only thing that's different. If anyone knows anything else that might have gone wrong, I'm all ears.
Answered by rithvikp on January 16, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP