Запись в регистры , ошибка компиляции
- Войдите на сайт для отправки комментариев
Чт, 14/02/2019 - 09:11
Всем знатокам добрый день!
При компиляции скетча компилятор "ругается" на выражения writeByteRegister и readbigRegister.
Подскажите, пожалуйста, как исправить ошибку. Скетч рабочий, как определить эти выражения?
Скетч прилагаю.
Спасибо!
/* Hardware Connections Arduino <--> AD7714
PIN 1 -> SCLK : external clock SPI Arduino
PIN 2 -> MCLK IN : 2.4576 MHz by crystal (input)
PIN 3 -> MCLK OUT : 2.4576 MHz (output)
PIN 4 -> POL = 0: first transition of the serial clock in a data transfer operation is from a low to a high
PIN 5 -> (SYNC) = 1 : synchronization of the digital filters and analog modulators
PIN 6 -> (RESET) : Reset (PIN 30) Arduino
PIN 7/8/9/10 -> AIN1/AIN2/AIN3/AIN4 : Analog Input Channel
PIN 11 -> (STANDBY) = 1 : disable Standby
PIN 12 -> AVdd = 3.3 V
PIN 13 -> BUFFER = 0 : analog input is shorted out
PIN 14 -> REF IN(-) = AGND : negative input of the differential reference input
PIN 15 -> REF IN(+) = AVdd/2 : positive input of the differential reference input
PIN 16/17 -> AIN5/AIN6 : Analog Input Channel
PIN 18 -> AGND = GND
PIN 19 -> (CS) : chip select SPI (PIN 52) Arduino
PIN 20 -> (DRDY) : logic input of the AD7714
PIN 21 -> DOUT : serial data output, MISO SPI Arduino
PIN 22 -> DIN : serial data input, MOSI SPI Arduino
PIN 23 -> DVdd = 3.3 V
PIN 24 -> DGND = GND
*/
// SPI library
#include <SPI.h>
// define channels AD7714
#define CH0 0x00 // Pseudo Differential AIN1 - AIN6
#define CH1 0x01 // Pseudo Differential AIN2 - AIN6
#define CH2 0x02 // Pseudo Differential AIN3 - AIN6
#define CH3 0x03 // Pseudo Differential AIN4 - AIN6
#define CH4 0x04 // Fully Differential AIN1 - AIN2
#define CH5 0x05 // Fully Differential AIN3 - AIN4
#define CH6 0x06 // Fully Differential AIN5 - AIN6
#define CH7 0x07 // Test Mode AIN6 - AIN6
// constants and variables:
const int dataReady = 53;
const int CS = 52;
const int RESET = 30;
uint8_t ain;
uint8_t conf;
uint8_t channel[8] = {CH0, CH1, CH2, CH3, CH4, CH5, CH6, CH7};
uint32_t measur;
uint32_t conf3;
uint32_t temp;
bool bits24 = false; // is dataregister configured for 24bits?
char i;
int a = 0;
void setup() {
Serial.begin(9600);
// -------- SPI initialization
pinMode(CS, OUTPUT); // Set the SS pin as an output
digitalWrite(CS, HIGH); // Set the SS pin HIGH
SPI.begin(); // Begin SPI hardware
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(210); // Slow down SPI clock
SPI.setDataMode(SPI_MODE2);
// initalize the data ready and chip select pins:
pinMode(dataReady, INPUT);
pinMode(RESET, OUTPUT);
digitalWrite(RESET, LOW);
delay(100);
digitalWrite(RESET, HIGH);
// configure filter high and low register AD7714
for (i = 0; i < 7; i++) {
if (i == 4 || i == 5) continue;
ain = channel[i];
Serial.println("Init channel: CH" + String(ain));
// delay(50);
writeByteRegister(2, 0x81); // filter high register
writeByteRegister(3, 0x80); // filter low register
}
// channels calibration AD7714
for (i = 0; i < 3; i++) {
ain = i;
writeByteRegister(1, 0x20);
while (digitalRead(dataReady));
while (!(digitalRead(dataReady)));
}
Serial.println("Calibration register");
conf3 = readbigRegister(6);
Serial.println(conf3, HEX);
conf3 = readbigRegister(7);
Serial.println(conf3, HEX);
}
void loop() {
delay(1000);
Serial.println("Acquisition " + String(a));
for (i = 0; i < 7; i++) {
if (i == 4 || i == 5) continue;
ain = channel[i];
measur = readbigRegister(5);
while (!(digitalRead(dataReady)));
while (digitalRead(dataReady));
while (!(digitalRead(dataReady)));
while (digitalRead(dataReady));
Serial.print("Channel CH" + String(ain) + " : ");
Serial.print(measur, HEX);
Serial.println(" = " + String((float(measur) / 65536.0) * 3.3) + " V");
// Serial.println(" = " + String((float(measur) / 16777216.0) * 3.3) + " V");
}
a = a + 1;
}
Из чего становится понятно, что скетч рабочий? И что эти ваши readbigRegister означают вообще?
Уважаемый sadman41!
Скетч я взял из американского форума , где пользователь утверждает, что компилировал и заливал в мк.
Честно, я и сам не могу понять что означают эти выражения...
И не переменные, и не функции...
Думаю, что продуктивней будет поинтересоваться насчёт этой абракадабры у того самого пользователя, что "заливал" некомпилирующийся скетч.
Спасибо за ответ Вам, но , к сожалению, форум этот не действует;(
Уважаемый, покопайтесь в тех местах, где скопирастили программу. Похоже что вы недокопировали часть подпрограмм.
mykaida,спасибо Вам за ответ!
Сейчас проверю!:)
Уважаемый, покопайтесь в тех местах, где скопирастили программу. Похоже что вы недокопировали часть подпрограмм.
больше похожу на самопальную библиотеку SPI или доработанную напильником под эту задачу.
Мда, годы идут, а ничего не меняется. Первая же ссылка в Гугле по первой строке приведенного Вамикода, ведет на forum.arduino.cc где есть код этих процедур. Смотрели?
Спасибо огромное всем отозвавшимся!!!
Насчет forum.arduino.cc -пока не заглядывал. Обязательно посмотрю!
ничего не меняется. Первая же ссылка в Гугле ... Смотрели?
Ну, дык
я запретил гуглить, яндексить, чебурашить.