Checkpoint. Начало переноса кода работы с ардуинёй в отдельный класс. Вроде бы работает чтение. Остальное как нибудь потом...
This commit is contained in:
parent
b8dbae2a6f
commit
58168358ab
|
@ -0,0 +1,136 @@
|
|||
#include "arduino.h"
|
||||
|
||||
#include <QDebug>
|
||||
|
||||
arduino::arduino(QSerialPort *port)
|
||||
{
|
||||
serialPort = port;
|
||||
}
|
||||
|
||||
|
||||
void arduino::send(const QByteArray &data)
|
||||
{
|
||||
serialPort->write(data);
|
||||
}
|
||||
|
||||
void arduino::recieve()
|
||||
{
|
||||
while (!serialPort->atEnd()) {
|
||||
buffer.append(serialPort->read(100));
|
||||
emit blockComplete(buffer.length());
|
||||
//qDebug() << "readed data: " << buffer.length();
|
||||
}
|
||||
if (buffer.length() >= bufSize)
|
||||
emit readComplete(buffer);
|
||||
}
|
||||
|
||||
void arduino::selectChip(chip type)
|
||||
{
|
||||
switch(type){
|
||||
case NONE:
|
||||
bufSize = 0;
|
||||
break;
|
||||
case C16:
|
||||
bufSize = 0x07ff + 1;
|
||||
send("a");
|
||||
break;
|
||||
case C32:
|
||||
bufSize = 0x0fff + 1;
|
||||
send("b");
|
||||
break;
|
||||
case C64:
|
||||
bufSize = 0x1fff + 1;
|
||||
send("c");
|
||||
break;
|
||||
case C128:
|
||||
bufSize = 0x3fff + 1;
|
||||
send("d");
|
||||
break;
|
||||
case C256:
|
||||
bufSize = 0x7fff + 1;
|
||||
send("e");
|
||||
break;
|
||||
case C512:
|
||||
bufSize = 0xffff + 1;
|
||||
send("f");
|
||||
break;
|
||||
}
|
||||
emit chipUpdated(bufSize);
|
||||
|
||||
}
|
||||
|
||||
uint32_t arduino::getChipSize()
|
||||
{
|
||||
return bufSize;
|
||||
}
|
||||
|
||||
void arduino::readChip()
|
||||
{
|
||||
buffer.clear();
|
||||
serialDataConnection = QObject::connect(serialPort, SIGNAL(readyRead()), this, SLOT(recieve()));
|
||||
send("r");
|
||||
/*
|
||||
static uint32_t count = 0;
|
||||
const QByteArray data = serialPort->readAll();
|
||||
if (data.count()){
|
||||
memcpy(&(bufWork.data())[count], data.data(), data.count());
|
||||
count += data.count();
|
||||
}
|
||||
ui->progressBar->setValue(count);
|
||||
if (count >= bufSize){
|
||||
ui->progressBar->setValue(bufSize);
|
||||
QObject::disconnect(serialDataConnection);
|
||||
updateButtons(true, true);
|
||||
|
||||
log(QString("Readed %1 bytes.").arg(count));
|
||||
count = 0;
|
||||
|
||||
emit readComplete(data);
|
||||
//emit bufferUpdated();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void arduino::writeChip(QByteArray data)
|
||||
{
|
||||
QByteArray ack;
|
||||
QByteArray buf;
|
||||
buf.clear();
|
||||
|
||||
// +1 нужен для записи последнего блока
|
||||
for (uint32_t i = 0; i <= bufSize; i++){
|
||||
buf.append(data[i]);
|
||||
if (i && ((i & 0xf) == 0)){
|
||||
// 16 bytes block
|
||||
send(buf);
|
||||
buf.clear();
|
||||
ack = serialPort->readAll();
|
||||
ack.clear();
|
||||
|
||||
if (bufSize == 2048){
|
||||
// Correct time to 27C16
|
||||
while (serialPort->waitForReadyRead(320)){
|
||||
ack.append(serialPort->readAll());
|
||||
}
|
||||
} else {
|
||||
while (serialPort->waitForReadyRead(20)){
|
||||
ack.append(serialPort->readAll());
|
||||
}
|
||||
}
|
||||
if (ack.indexOf("Complete block ") == -1){
|
||||
uint16_t address = 0;
|
||||
uint8_t value = 0xff;
|
||||
emit writeError(address, value);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
emit writeComplete();
|
||||
}
|
||||
|
||||
void arduino::voltageMesurment(bool enable)
|
||||
{
|
||||
if (enable) {
|
||||
send("v");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
#ifndef ARDUINO_H
|
||||
#define ARDUINO_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QSerialPort>
|
||||
|
||||
class arduino : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
uint32_t bufSize;
|
||||
QByteArray buffer;
|
||||
QSerialPort *serialPort = NULL;
|
||||
QMetaObject::Connection serialDataConnection;
|
||||
|
||||
|
||||
void send(const QByteArray &data);
|
||||
|
||||
private slots:
|
||||
void recieve();
|
||||
|
||||
public:
|
||||
enum chip {
|
||||
NONE,
|
||||
C16,
|
||||
C32,
|
||||
C64,
|
||||
C128,
|
||||
C256,
|
||||
C512
|
||||
};
|
||||
|
||||
explicit arduino(QSerialPort *port);
|
||||
uint32_t getChipSize();
|
||||
void selectChip(chip type);
|
||||
void readChip();
|
||||
void writeChip(QByteArray data);
|
||||
void voltageMesurment(bool enable);
|
||||
|
||||
|
||||
signals:
|
||||
void chipUpdated(uint32_t size);
|
||||
void blockComplete(uint32_t address);
|
||||
void readComplete(QByteArray data);
|
||||
void readError(uint16_t address, uint8_t value);
|
||||
void writeComplete();
|
||||
void writeError(uint16_t address, uint8_t value);
|
||||
void voltage(float v);
|
||||
|
||||
};
|
||||
|
||||
#endif // ARDUINO_H
|
|
@ -26,10 +26,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||
|
||||
SOURCES += \
|
||||
main.cpp \
|
||||
mainwindow.cpp
|
||||
mainwindow.cpp \
|
||||
arduino.cpp
|
||||
|
||||
HEADERS += \
|
||||
mainwindow.h
|
||||
mainwindow.h \
|
||||
arduino.h
|
||||
|
||||
FORMS += \
|
||||
mainwindow.ui
|
||||
|
|
|
@ -18,7 +18,6 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
QObject::connect(this, SIGNAL(chipUpdated()), this, SLOT(resizeBuffers()));
|
||||
//QObject::connect(this, SIGNAL(bufferUpdated()), this, SLOT(updateButtons()));
|
||||
|
||||
updatePortsConnection = QObject::connect(&updatePortsTimer, SIGNAL(timeout()), this, SLOT(reload_ports()));
|
||||
|
@ -91,8 +90,12 @@ void MainWindow::openSerialPort(QString path)
|
|||
readData.append(serialPort->readAll());
|
||||
if (readData.indexOf("Arduino 27 Series programmer", 0) != -1){
|
||||
log(QString("Connect successful"));
|
||||
|
||||
mArduino = new arduino(serialPort);
|
||||
mArduino->selectChip(arduino::C256);
|
||||
//mArduino->readChip();
|
||||
chipSelected = true;
|
||||
//QObject::connect(serialPort, SIGNAL(errorOccurred()), this, SLOT(closeSerialPort()));
|
||||
QObject::connect(mArduino, SIGNAL(chipUpdated(uint32_t)), this, SLOT(resizeBuffers()));
|
||||
|
||||
chipSelectSetEnabled(true);
|
||||
ui->updateButton->setEnabled(false);
|
||||
|
@ -198,97 +201,17 @@ void MainWindow::updateButtons(bool actions, bool buffer)
|
|||
|
||||
void MainWindow::on_writeChipButton_clicked()
|
||||
{
|
||||
writeData("w");
|
||||
writeChip();
|
||||
mArduino->writeChip(bufWork);
|
||||
}
|
||||
|
||||
void MainWindow::writeData(const QByteArray &data)
|
||||
{
|
||||
serialPort->write(data);
|
||||
}
|
||||
|
||||
void MainWindow::writeChip()
|
||||
{
|
||||
QByteArray data;
|
||||
QByteArray readData;
|
||||
log(QString("Writing %1 bytes to chip...").arg(bufSize));
|
||||
ui->progressBar->setMaximum(bufSize);
|
||||
|
||||
data.clear();
|
||||
|
||||
// +1 нужен для записи последнего блока
|
||||
for (uint32_t i = 0; i <= bufSize; i++){
|
||||
ui->progressBar->setValue(i);
|
||||
data.append(bufWork[i]);
|
||||
if (i && ((i & 0xf) == 0)){
|
||||
// 16 bytes block
|
||||
writeData(data);
|
||||
//qDebug("Send block 0x%04X-0x%04X\n", (i - 16), (i - 1));
|
||||
data.clear();
|
||||
readData = serialPort->readAll();
|
||||
readData.clear();
|
||||
|
||||
if (bufSize == 2048){
|
||||
// Correct time to 27C16
|
||||
while (serialPort->waitForReadyRead(320)){
|
||||
readData.append(serialPort->readAll());
|
||||
}
|
||||
} else {
|
||||
while (serialPort->waitForReadyRead(20)){
|
||||
readData.append(serialPort->readAll());
|
||||
}
|
||||
}
|
||||
if (readData.indexOf("Complete block ") == -1){
|
||||
log(QString("Writing error"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
log(QString("Writing successful"));
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::on_readChipButton_clicked()
|
||||
{
|
||||
bufferClear = false;
|
||||
bufCheck.fill(0);
|
||||
readChip();
|
||||
checkClearConnection = QObject::connect(this, SIGNAL(chipReaded()), this, SLOT(checkClear()));
|
||||
}
|
||||
|
||||
void MainWindow::readChip()
|
||||
{
|
||||
updateButtons(false, false);
|
||||
log(QString("Reading %1 bytes from chip...").arg(bufSize));
|
||||
|
||||
// clear serial buffer
|
||||
QByteArray data = serialPort->readAll();
|
||||
|
||||
ui->progressBar->setMaximum(bufSize);
|
||||
serialDataConnection = QObject::connect(serialPort, SIGNAL(readyRead()), this, SLOT(readData()));
|
||||
writeData("r");
|
||||
}
|
||||
|
||||
void MainWindow::readData()
|
||||
{
|
||||
static uint32_t count = 0;
|
||||
const QByteArray data = serialPort->readAll();
|
||||
if (data.count()){
|
||||
memcpy(&(bufWork.data())[count], data.data(), data.count());
|
||||
count += data.count();
|
||||
}
|
||||
ui->progressBar->setValue(count);
|
||||
if (count >= bufSize){
|
||||
ui->progressBar->setValue(bufSize);
|
||||
QObject::disconnect(serialDataConnection);
|
||||
updateButtons(true, true);
|
||||
|
||||
log(QString("Readed %1 bytes.").arg(count));
|
||||
count = 0;
|
||||
|
||||
emit chipReaded();
|
||||
emit bufferUpdated();
|
||||
}
|
||||
ui->progressBar->setMaximum(mArduino->getChipSize());
|
||||
log(QString("Reading %1 bytes from chip...").arg(mArduino->getChipSize()));
|
||||
mArduino->readChip();
|
||||
progressBarConnection = QObject::connect(mArduino, SIGNAL(blockComplete(uint32_t)), this, SLOT(chipOperationProgressBar(uint32_t)));
|
||||
checkClearConnection = QObject::connect(mArduino, SIGNAL(readComplete(QByteArray)), this, SLOT(checkClear()));
|
||||
}
|
||||
|
||||
void MainWindow::checkClear()
|
||||
|
@ -432,7 +355,7 @@ void MainWindow::showBuf()
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::resizeBuffers()
|
||||
void MainWindow::resizeBuffers(uint32_t size)
|
||||
{
|
||||
chipSelected = true;
|
||||
|
||||
|
@ -451,63 +374,51 @@ void MainWindow::on_verifyChipButton_clicked()
|
|||
{
|
||||
// Backup work buffer
|
||||
bufCheck = bufWork;
|
||||
readChip();
|
||||
verifyDataConnection = QObject::connect(this, SIGNAL(chipReaded()), this, SLOT(verifyData()));
|
||||
mArduino->readChip();
|
||||
verifyDataConnection = QObject::connect(mArduino, SIGNAL(readComplete()), this, SLOT(verifyData()));
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::on_c16Button_clicked()
|
||||
{
|
||||
log("Select 27C16 chip");
|
||||
bufSize = 0x07ff + 1;
|
||||
writeData("a");
|
||||
emit chipUpdated();
|
||||
mArduino->selectChip(arduino::C16);
|
||||
}
|
||||
|
||||
void MainWindow::on_c32Button_clicked()
|
||||
{
|
||||
log("Select 27C32 chip");
|
||||
bufSize = 0x0fff + 1;
|
||||
writeData("b");
|
||||
emit chipUpdated();
|
||||
mArduino->selectChip(arduino::C32);
|
||||
}
|
||||
|
||||
void MainWindow::on_c64Button_clicked()
|
||||
{
|
||||
log("Select 27C64 chip");
|
||||
bufSize = 0x1fff + 1;
|
||||
writeData("c");
|
||||
emit chipUpdated();
|
||||
mArduino->selectChip(arduino::C64);
|
||||
}
|
||||
|
||||
void MainWindow::on_c128Button_clicked()
|
||||
{
|
||||
log("Select 27C128 chip");
|
||||
bufSize = 0x3fff + 1;
|
||||
writeData("d");
|
||||
emit chipUpdated();
|
||||
mArduino->selectChip(arduino::C128);
|
||||
}
|
||||
|
||||
void MainWindow::on_c256Button_clicked()
|
||||
{
|
||||
log("Select 27C256 chip");
|
||||
bufSize = 0x7fff + 1;
|
||||
writeData("e");
|
||||
emit chipUpdated();
|
||||
mArduino->selectChip(arduino::C256);
|
||||
}
|
||||
|
||||
void MainWindow::on_c512Button_clicked()
|
||||
{
|
||||
log("Select 27C512 chip");
|
||||
bufSize = 0xffff + 1;
|
||||
writeData("f");
|
||||
emit chipUpdated();
|
||||
mArduino->selectChip(arduino::C512);
|
||||
}
|
||||
|
||||
|
||||
void MainWindow::showVoltage()
|
||||
{
|
||||
writeData("v");
|
||||
//writeData("v");
|
||||
QByteArray readData = serialPort->readAll();
|
||||
QString str = "Programming voltage: ";
|
||||
int8_t pos;
|
||||
|
@ -546,6 +457,11 @@ void MainWindow::on_voltageChipButton_toggled(bool checked)
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::chipOperationProgressBar(uint32_t value)
|
||||
{
|
||||
ui->progressBar->setValue(value);
|
||||
}
|
||||
|
||||
void MainWindow::on_progressBar_valueChanged(int value)
|
||||
{
|
||||
if (updateVoltageConnection){
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include "arduino.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QSerialPort>
|
||||
#include <QListWidgetItem>
|
||||
|
@ -26,9 +28,6 @@ signals:
|
|||
void chipUpdated();
|
||||
|
||||
private slots:
|
||||
|
||||
void readData();
|
||||
|
||||
void showBuf();
|
||||
|
||||
void on_openFileButton_clicked();
|
||||
|
@ -57,7 +56,7 @@ private slots:
|
|||
|
||||
void on_c512Button_clicked();
|
||||
|
||||
void resizeBuffers();
|
||||
void resizeBuffers(uint32_t size);
|
||||
|
||||
void on_connectButton_clicked();
|
||||
|
||||
|
@ -79,14 +78,18 @@ private slots:
|
|||
|
||||
void on_progressBar_valueChanged(int value);
|
||||
|
||||
void chipOperationProgressBar(uint32_t value);
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
QSerialPort *serialPort = NULL;
|
||||
arduino *mArduino = NULL;
|
||||
|
||||
QTimer updatePortsTimer;
|
||||
QTimer updateVoltageTimer;
|
||||
QMetaObject::Connection updatePortsConnection;
|
||||
|
||||
QMetaObject::Connection progressBarConnection;
|
||||
QMetaObject::Connection serialDataConnection;
|
||||
QMetaObject::Connection verifyDataConnection;
|
||||
QMetaObject::Connection checkClearConnection;
|
||||
|
@ -102,16 +105,10 @@ private:
|
|||
|
||||
void log(QString str);
|
||||
|
||||
void readChip();
|
||||
|
||||
void openSerialPort(QString path);
|
||||
|
||||
void closeSerialPort();
|
||||
|
||||
void writeData(const QByteArray &data);
|
||||
|
||||
void writeChip();
|
||||
|
||||
void chipSelectSetEnabled (bool state);
|
||||
};
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
/* 74HC595 control (address lines) */
|
||||
#define shiftLatchPin A1
|
||||
|
@ -63,11 +65,17 @@ void select_chip (chipType new_chip);
|
|||
|
||||
chipType chip = NONE;
|
||||
Modes mode = WAIT;
|
||||
uint8_t log_enable = FALSE;
|
||||
uint16_t start_address = 0x0000;
|
||||
uint16_t end_address = 0x0000;
|
||||
#define BUF_LEN 16
|
||||
uint8_t buf[BUF_LEN];
|
||||
|
||||
void message(const char* mes){
|
||||
if (log_enable)
|
||||
Serial.println(mes);
|
||||
}
|
||||
|
||||
void setup() {
|
||||
// 74HC595 (*2)
|
||||
pinMode(shiftLatchPin, OUTPUT);
|
||||
|
@ -105,9 +113,7 @@ void loop() {
|
|||
mode = WAIT;
|
||||
break;
|
||||
}
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Read mode.");
|
||||
#endif
|
||||
message("Read mode.");
|
||||
read_mode();
|
||||
if (chip == C16) digitalWrite(readVoltageEnable, LOW);
|
||||
digitalWrite(chipEnable, LOW);
|
||||
|
@ -115,7 +121,7 @@ void loop() {
|
|||
for (uint16_t i = start_address; i <= end_address; i++) {
|
||||
uint8_t data = read_byte(i);
|
||||
Serial.write(&data, sizeof(data));
|
||||
if (i == end_address) break;
|
||||
if (i == end_address) break; // Защита от переполнения uint16
|
||||
}
|
||||
digitalWrite(outputEnable, HIGH);
|
||||
digitalWrite(chipEnable, HIGH);
|
||||
|
@ -127,11 +133,7 @@ void loop() {
|
|||
mode = WAIT;
|
||||
break;
|
||||
}
|
||||
#ifdef MESSAGES
|
||||
Serial.print("n");
|
||||
#endif
|
||||
write_mode();
|
||||
program_voltage_set(true);
|
||||
message("Write mode");
|
||||
/*for (int i = start_address; i <= end_address; i++) {
|
||||
Serial.println(i, HEX);
|
||||
write_byte(i, 0x89);
|
||||
|
@ -139,7 +141,7 @@ void loop() {
|
|||
for (uint16_t i = start_address; i <= end_address; i += BUF_LEN) {
|
||||
Serial.print("Write block ");
|
||||
Serial.println(i);
|
||||
uint8_t count = Serial.readBytes(buf, BUF_LEN);
|
||||
uint8_t count = Serial.readBytes((char*)buf, BUF_LEN);
|
||||
if (count != BUF_LEN) {
|
||||
Serial.print("Error on block");
|
||||
Serial.println(i);
|
||||
|
@ -148,16 +150,32 @@ void loop() {
|
|||
break;
|
||||
}
|
||||
for (uint16_t j = 0; j < BUF_LEN; j++) {
|
||||
// Write byte
|
||||
write_mode();
|
||||
program_voltage_set(true);
|
||||
write_byte((i + j), buf[j]);
|
||||
program_voltage_set(false);
|
||||
|
||||
// Verify byte
|
||||
read_mode();
|
||||
if (chip == C16) digitalWrite(readVoltageEnable, LOW);
|
||||
digitalWrite(chipEnable, LOW);
|
||||
digitalWrite(outputEnable, LOW);
|
||||
uint8_t verify = get_data();
|
||||
digitalWrite(outputEnable, HIGH);
|
||||
digitalWrite(chipEnable, HIGH);
|
||||
if (chip == C16) digitalWrite(readVoltageEnable, HIGH);
|
||||
if (buf[j] != virify){
|
||||
Serial.print("Error on address ");
|
||||
Serial.println(i + j);
|
||||
mode = WAIT;
|
||||
}
|
||||
}
|
||||
Serial.print("Complete block ");
|
||||
Serial.println(i);
|
||||
if (i == end_address) break;
|
||||
}
|
||||
program_voltage_set(false);
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Write success.");
|
||||
#endif
|
||||
message("Write success.");
|
||||
mode = WAIT;
|
||||
break;
|
||||
case VOLTAGE:
|
||||
|
@ -166,10 +184,8 @@ void loop() {
|
|||
mode = WAIT;
|
||||
break;
|
||||
default:
|
||||
#ifdef MESSAGES
|
||||
if (chip == NONE) Serial.println("Chip not selected!");
|
||||
Serial.println("Wait commands...");
|
||||
#endif
|
||||
if (chip == NONE) message("Chip not selected!");
|
||||
message("Wait commands...");
|
||||
while (Serial.available()) Serial.read();
|
||||
do {} while (Serial.available() == 0);
|
||||
char incomingByte = Serial.read();
|
||||
|
@ -195,52 +211,38 @@ void select_chip (chipType new_chip) {
|
|||
digitalWrite(powerEnable, LOW);
|
||||
chip = new_chip;
|
||||
end_address = 0x07ff;
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Select 27C16 chip.");
|
||||
#endif
|
||||
message("Select 27C16 chip.");
|
||||
break;
|
||||
case C32:
|
||||
digitalWrite(powerEnable, LOW);
|
||||
chip = new_chip;
|
||||
end_address = 0x0fff;
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Select 27C32 chip.");
|
||||
#endif
|
||||
message("Select 27C32 chip.");
|
||||
break;
|
||||
case C64:
|
||||
chip = new_chip;
|
||||
end_address = 0x1fff;
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Select 27C64 chip.");
|
||||
#endif
|
||||
message("Select 27C64 chip.");
|
||||
break;
|
||||
case C128:
|
||||
chip = new_chip;
|
||||
end_address = 0x3fff;
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Select 27C128 chip.");
|
||||
#endif
|
||||
message("Select 27C128 chip.");
|
||||
break;
|
||||
case C256:
|
||||
chip = new_chip;
|
||||
end_address = 0x7fff;
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Select 27C256 chip.");
|
||||
#endif
|
||||
message("Select 27C256 chip.");
|
||||
break;
|
||||
case C512:
|
||||
chip = C512;
|
||||
end_address = 0xffff;
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Select 27C512 chip.");
|
||||
#endif
|
||||
message("Select 27C512 chip.");
|
||||
break;
|
||||
default:
|
||||
chip = NONE;
|
||||
end_address = 0x0000;
|
||||
#ifdef MESSAGES
|
||||
Serial.println("Chip not selected!");
|
||||
#endif
|
||||
message("Chip not selected!");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue