Официальный сайт компании Arduino по адресу arduino.cc
Ethernet и мах6675
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Сб, 22/12/2018 - 17:35
пытаюсь подключить к ардуино нано модуль ethernet и max6675. По отдельности на демках все работает. Использую библиотеки <UIPEthernet.h> и "max6675.h" (от адафрута).
#define MACADDRESS 0xA4,0xB7,0x5C,0x03,0x04,0x05 #define MYIPADDR 192,168,1,177 #define MYIPMASK 255,255,0,0 #define MYDNS 192,168,1,1 #define MYGW 192,168,1,1 // telnet defaults to port 23 #define LISTENPORT 2000 uint8_t mac[6] = {MACADDRESS}; uint8_t myIP[4] = {MYIPADDR}; uint8_t myMASK[4] = {MYIPMASK}; uint8_t myDNS[4] = {MYDNS}; uint8_t myGW[4] = {MYGW}; #include <UIPEthernet.h> #include "max6675.h" int thermoDO = 12; int thermoCS = 9; int thermoCLK = 13; MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO); EthernetServer server(2000); EthernetClient clients = server.available(); void setup() { Serial.begin(9600); Ethernet.begin(mac, myIP, myDNS, myGW, myMASK); // start listening for clients server.begin(); pinMode(10, OUTPUT); digitalWrite(10, HIGH); pinMode(9, OUTPUT); digitalWrite(9, LOW); Serial.println("MAX6675 test"); // wait for MAX chip to stabilize delay(500); } void loop() { // basic readout test, just print the current temp Serial.print("C = "); Serial.println(thermocouple.readCelsius()); delay(1000); }
Вместе не работают.
у изернета cs -10,mosi -11,sck-13, miso-12
у 6675 cs-9,sck-13, miso-12
посмотрел библиотеки, изернет работает через аппаратный спи, а вот 6675 дергает ноги сама, через програмный спи.
в этом думается кроется проблема, но как их подружить? писать под 6675 под аппаратный спи, как вариант...?
Ну, назначьте другие ноги максу...
Вместе не работают.
у изернета cs -10,mosi -11,sck-13, miso-12
у 6675 cs-9,sck-13, miso-12
Я бы тоже не работал.
Ну, назначьте другие ноги максу...
об этом думал, но заняты все. подумываю как сделать чтоб работало именно в таком подключении
Вместе не работают.
у изернета cs -10,mosi -11,sck-13, miso-12
у 6675 cs-9,sck-13, miso-12
Я бы тоже не работал.
если битом SPE в регистре SPCR выключать на время работы с мах-ом? поможет?
помимо констатации факта предложения есть куда копать?
помимо констатации факта предложения есть куда копать?
Предложений намного больше, чем желания бить пальцы об клавиши.
Вот Вам ведь лень было подробно задачу описать. В итоге, человек высказал дельное предложение, ан фиг там - пинов свободных нет - зря он пальцы бил.
Я сейчас что-то выскажу, выяснится, что ещё чего-то нет. Зачем? Опишете задачу полностью, там видно будет.А если Вам по клавишам лень стучать, так мне тем более.
Так зачем биты-шмиты. Он же, вроде, не транслирует сам по себе. CS прижать, отпустить, подождать пока конверсия закончится, прижать и читать. Только MISO/MOSI не путать и всё...
Так зачем биты-шмиты. Он же, вроде, не транслирует сам по себе. CS прижать, отпустить, подождать пока конверсия закончится, прижать и читать. Только MISO/MOSI не путать и всё...
сори. пересмотрел несколько раз. не вижу где напутал мисо и моси. ноги cs меняю для работы с устройствани. попробывал прижать, отпустить, подождать пока конверсия закончится, прижать и читать. выдает 0 температуру
помимо констатации факта предложения есть куда копать?
Предложений намного больше, чем желания бить пальцы об клавиши.
Вот Вам ведь лень было подробно задачу описать. В итоге, человек высказал дельное предложение, ан фиг там - пинов свободных нет - зря он пальцы бил.
Я сейчас что-то выскажу, выяснится, что ещё чего-то нет. Зачем? Опишете задачу полностью, там видно будет.А если Вам по клавишам лень стучать, так мне тем более.
сори, но что еще написать не знаю. если подробнее:
без подключения библиотеки изернета в сериал поступают данные температуры с макса, при инклюде библиотеки изернета и инициализации, как в первом посте, данные температуры с макса идут нулевые.
попробывал прижать, отпустить, подождать пока конверсия закончится, прижать и читать. выдает 0 температуру
На текущий момент могу вам дать только свой исходник, но там SoftSPI. Основной алгоритм просматривается: https://github.com/zbx-sadman/zabbuino/blob/experimental/src/spi_max6675.cpp
Думаю, что можно как под SPI.transfer перепилить, так и просто ногами SPI подергать в софт-режиме.
попробывал прижать, отпустить, подождать пока конверсия закончится, прижать и читать. выдает 0 температуру
На текущий момент могу вам дать только свой исходник, но там SoftSPI. Основной алгоритм просматривается: https://github.com/zbx-sadman/zabbuino/blob/experimental/src/spi_max6675.cpp
Думаю, что можно как под SPI.transfer перепилить, так и просто ногами SPI подергать в софт-режиме.
открыл. спасибо изучу
пока нарыл:
SPCR=80 SPSR=1, т.е.
установлено удвоение частоты спи и делитель на 4, а для мах6675 16кварц\2 многовато будет.
настройки фазы и полярности нормальные для мах6675. разобрался как прочитать мах через аппаратный спи. сегодня уже спать пойду. завтра заюзаю его через аппаратный.
удвоение убрал, изернет работает...
В SPI.h скорость устанавливается в 4000000, UIPEthernet ее не меняет, MAX6675 максимальной имеет 4.3MHz... Теоретически все должно сложиться. В любом случае можно перед началом обмена через SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0)); поставить SPI_CLOCK таким, какой требуется.
В SPI.h скорость устанавливается в 4000000, UIPEthernet ее не меняет, MAX6675 максимальной имеет 4.3MHz... Теоретически все должно сложиться. В любом случае можно перед началом обмена через SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0)); поставить SPI_CLOCK таким, какой требуется.
SPSR=0; SPCR=80; да на частоте ф/4 считывает. набрасал так:
немного протупил с большим числом 12 бит с датчика, потом вкурил - два последних бита это уже десятки. работает, показывает. спасибо за помощь. пойду паять остальные 7 датчиков
В SPI.h скорость устанавливается в 4000000, UIPEthernet ее не меняет, MAX6675 максимальной имеет 4.3MHz... Теоретически все должно сложиться. В любом случае можно перед началом обмена через SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0)); поставить SPI_CLOCK таким, какой требуется.
в спи ставиться делитель частоты кристала и множител на 2. по умолчанию делитель на 4 стоит, но и множитель включен. поэтому частота 8000000 получалась, как отмечено 4.3 максимум для макса6675. записал 0 в разряд SPI2X регистра SPSR - выключил удвоение, читает через аппаратный