I have an 16 bit ADC7606. It is in parallel mode. I have a working sketch that allows me to read 8 channels, convert the 16 bit integer to decimal and then serial prints to monitor. I would like to increase the frequency of the sampling rate. The serial monitor can not keep up with a sampling rate faster than 40millis. The Due is connected via USB on COM3.
How do I log the data to a file on my laptop/computer?
All and any help greatly appreciated.
Code below,
#include <EnableInterrupt.h>
#define BUSY 3
#define RD 4 //RD+CS tied together
#define RESET 5
#define CONVST 6 //CONVSTA+CONVSTB soldered together on the board
#define RANGE 7
#define DB0 38
#define DB1 39
#define DB2 40
#define DB3 41
#define DB4 42
#define DB5 43
#define DB6 44
#define DB7 45
#define DB8 46
#define DB9 47
#define DB10 48
#define DB11 49
#define DB12 50
#define DB13 51
#define DB14 52
#define DB15 53
// declare rawData as an array of 16 integers
int rawData[16];
void setup() {
enableInterrupt(BUSY, ISR_, FALLING);
pinMode(RESET, OUTPUT);
pinMode(CONVST, OUTPUT);
pinMode(RD, OUTPUT);
pinMode(RANGE, OUTPUT);
pinMode(BUSY, INPUT);
Serial.begin(9600);
//reset ADC to begin conversion
digitalWrite(RESET, HIGH);
delayMicroseconds(10);
digitalWrite(RESET, LOW);
digitalWrite(CONVST, LOW);
digitalWrite(RD, HIGH);
digitalWrite(RANGE, HIGH);
digitalWrite(BUSY, LOW);
delayMicroseconds(1000);
}
void loop() {
disableInterrupt(BUSY);
delayMicroseconds(40000);
digitalWrite(CONVST, LOW);
delayMicroseconds(10);
digitalWrite(CONVST, HIGH);
enableInterrupt(BUSY, ISR_, FALLING);
}
void ISR_ () {
//Serial.print(millis());
//Serial.print(",");
delayMicroseconds(1);
digitalWrite(RD, LOW);
delayMicroseconds(1);
readDBpins(); // do read
digitalWrite(RD, HIGH);
Serial.print(",");
delayMicroseconds(1);
digitalWrite(RD, LOW);
delayMicroseconds(1);
readDBpins(); // do read
digitalWrite(RD, HIGH);
Serial.print(",");
delayMicroseconds(1);
digitalWrite(RD, LOW);
delayMicroseconds(1);
readDBpins(); // do read
digitalWrite(RD, HIGH);
Serial.print(",");
delayMicroseconds(1);
digitalWrite(RD, LOW);
delayMicroseconds(1);
readDBpins(); // do read
digitalWrite(RD, HIGH);
Serial.print(",");
delayMicroseconds(1);
digitalWrite(RD, LOW);
delayMicroseconds(1);
readDBpins(); // do read
digitalWrite(RD, HIGH);
Serial.print(",");
delayMicroseconds(1);
digitalWrite(RD, LOW);
delayMicroseconds(1);
readDBpins(); // do read
digitalWrite(RD, HIGH);
Serial.print(",");
delayMicroseconds(1);
digitalWrite(RD, LOW);
delayMicroseconds(1);
readDBpins(); // do read
digitalWrite(RD, HIGH);
Serial.print(",");
delayMicroseconds(1);
digitalWrite(RD, LOW);
delayMicroseconds(1);
readDBpins(); // do read
digitalWrite(RD, HIGH);
Serial.println(" ");
}
void readDBpins()
{
rawData[0] = digitalRead(DB15);
//Serial.print (rawData[0]);
if (rawData[0] > 0) {rawData[0] = 32768;}
rawData[1] = digitalRead(DB14);
//Serial.print (rawData[1]);
if (rawData[1] > 0) {rawData[1] = 16384;}
rawData[2] = digitalRead(DB13);
//Serial.print (rawData[2]);
if (rawData[2] > 0) {rawData[2] = 8192;}
rawData[3] = digitalRead(DB12);
//Serial.print (rawData[3]);
if (rawData[3] > 0) {rawData[3] = 4096;}
rawData[4] = digitalRead(DB11);
//Serial.print (rawData[4]);
if (rawData[4] > 0) {rawData[4] = 2048;}
rawData[5] = digitalRead(DB10);
//Serial.print (rawData[5]);
if (rawData[5] > 0) {rawData[5] = 1024;}
rawData[6] = digitalRead(DB9);
//Serial.print (rawData[6]);
if (rawData[6] > 0) {rawData[6] = 512;}
rawData[7] = digitalRead(DB8);
//Serial.print (rawData[7]);
if (rawData[7] > 0) {rawData[7] = 256;}
rawData[8] = digitalRead(DB7);
//Serial.print (rawData[8]);
if (rawData[8] > 0) {rawData[8] = 128;}
rawData[9] = digitalRead(DB6);
//Serial.print (rawData[9]);
if (rawData[9] > 0) {rawData[9] = 64;}
rawData[10] = digitalRead(DB5);
//Serial.print (rawData[10]);
if (rawData[10] > 0) {rawData[10] = 32;}
rawData[11] = digitalRead(DB4);
//Serial.print (rawData[11]);
if (rawData[11] > 0) {rawData[11] = 16;}
rawData[12] = digitalRead(DB3);
//Serial.print (rawData[12]);
if (rawData[12] > 0) {rawData[12] = 8;}
rawData[13] = digitalRead(DB2);
//Serial.print (rawData[13]);
if (rawData[13] > 0) {rawData[13] = 4;}
rawData[14] = digitalRead(DB1);
//Serial.print (rawData[14]);
if (rawData[14] > 0) {rawData[14] = 2;}
rawData[15] = digitalRead(DB0);
// Serial.print (rawData[15]);
if (rawData[15] > 0) {rawData[15] = 1;}
Serial.print (rawData[0]+rawData[1]+rawData[2]+rawData[3]+rawData[4]+rawData[5]+rawData[6]+rawData[7]+rawData[8]+rawData[9]+rawData[10]+rawData[11]+rawData[12]+rawData[13]+rawData[14]+rawData[15]);
}