Очередной "Умный дом", на этот раз модульная система...

triac
triac аватар
Offline
Зарегистрирован: 03.05.2018

Andy пишет:

triac пишет:
Andy стал на лету подменять понятия
разницу между сетями, каналами и протоколами.

Представь определения в студию, и к ним интерфейсы добавь.  Посмотрим, что ты нафантазировал, посмеемся когда у тебя SPI "асинхронным" окажется.

Andy пишет:

Напомни мне где я врал и на чем был ловлен с поличными

В #781 врал, в #797 был пойман на вранье.

Andy пишет:

Ты послан. Можешь не отвечать.

А, так ты слился, соплячок. Накозлил глупостей с три короба - и теперь в кусты.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Коллеги, предлагаю дискутировать , не переходя на личности. Уважайте друг друга. Читать такие вещи противно если честно. Взрослые ведь уже. Мы тут письками не мереемся, мы пытаемся сеть построить.

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

Коллеги, предлагаю дискутировать , не переходя на личности. Уважайте друг друга. Читать такие вещи противно если честно. Взрослые ведь уже. Мы тут письками не мереемся, мы пытаемся сеть построить.

Согласен полностью.

riv
Offline
Зарегистрирован: 20.07.2017

Т.к. согласно схемы http://electronicsworld.ru/wp-content/uploads/2017/11/niren_mcp2515-CAN-Bus-Module-Schematics.png

(Так тут я сбредил, здесь пишут про ресет на 17 ноге и выводе на INT) 

19 нога не задействована я уже почти пришел к тому чтобы через 10кОм на 19 ногу GPIO от ардуино подпаять и держать там HIGH для ресета дать LOW на 10-20 мс

http://microsin.net/images/stories/hard/MCP2515-RESET-pin-example-fig9-1.png

Думаю диод с конденсатором и R не нужны т.к автосброс мы не реализуем.

(Нужно схему смотреть с платы, вешером посмотрю)

MaksVV
Offline
Зарегистрирован: 06.08.2015

автосброс по этой схеме используется для того чтобы он происходил автомаически один раз при подаче питания (требование даташита MCP2515 делать сброс после подачи питания), но нам это не нужно, т.к. мы с ардуины делаем сброс при помощи SPI. 

Вообще сброс по SPI эквивалентен,  я так понял, сбросу по пину Reset. Вот выдержка из текста описания MCP2515

1MCP2515 различает два способа сброса:
2 
31. Hardware Reset (аппаратный сброс) - низким уровнем на выводе /RESET.
42. SPI Reset - подачей команды Reset через SPI.
5Функционал обоих видов сброса эквивалентен. Важно осуществить один из этих способов сброса после включения питания, чтобы гарантировать переход логики и регистров в свое состояние по умолчанию.

Я научился делать фильтры правильно. Маске 0 соответсвуют фильтры 0 и 1. Маске 1 соответствуют фильтры 2,3,4,5. Так вот нужно задавать все маски и фильтры, иначе MCP воспринимает маску и фильтр как 0, что не правильно. 

Но, т.к. у нас один из фильтров на второй разряд ID равен 00 (шириоковещательные), то в целом будут пролетать ID вообще со всеми нулями, что нам не нужно. Тут два выхода:

- Сделать широковещательные 0xFF (будет проблем с enum, т.к. выходит за пределы)

- устанавливать брошенный нами бит direction  в 1 на ВСЕХ используемыми нами сообщениях, таким образом, наши сообщения никогда не будут с ID равном полностью 0  - считаю наилучший вариант. 

если мы так сделаем, то аппаратно не будут проходить большие ID 0х00000000 и маленькие 0х000. Думаю это даст шанс на исправление косяков. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

riv пишет:

(Так тут я сбредил, здесь пишут про ресет на 17 ноге и выводе на INT) 

19 нога не задействована я уже почти пришел к тому чтобы через 10кОм на 19 ногу GPIO от ардуино подпаять и держать там HIGH для ресета дать LOW на 10-20 мс

(Нужно схему смотреть с платы, вешером посмотрю)

бывают два корпуса MCP2515 - 20 ногий TSSOP  и 18 ногий PDIP/SOIC

У нас 18 ногий PDIP/SOIC. Поэтому пин reset  у нас 17 нога. У 20 ногого TSSOP reset, всё правильно, 19 нога. Надеюсь до этого гемора с хард ресетом не дойдет. 

ЗЫ есть ещё корпус 20 ногий 4x4 QFN* у него reset тоже 17 нога. 

riv
Offline
Зарегистрирован: 20.07.2017

Нв выходе пока бъемся с софтом?

riv
Offline
Зарегистрирован: 20.07.2017

И судя по схеме через R3 на 17 ногу всегда подается +5. Знаешь номинал R3?

MaksVV
Offline
Зарегистрирован: 06.08.2015

пока вот 11 версия. Теперь аппаратно не просачиваются 0х00000000 и 0х000. Поставил в нашем скетче в отправляемом фрейме в заголовке  бит direction везде "1" (надеюсь везде исправил). 

Исправил фильтры 

MaksVV
Offline
Зарегистрирован: 06.08.2015

riv пишет:

И судя по схеме через R3 на 17 ногу всегда подается +5. Знаешь номинал R3?

дак конечно, это потяжка к питанию, чтобы помехи не влияли, а то бы так постоянно спонтанно перезагружался MCP2515. Я думаю кОм 10 он. Да, всё верно,  щас проверил 10кОм.  (маркирвка резистора 103)

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот инфа из описания MCP2515 как детектируются ошибки в MCP2515

 

По идее в момент глюка можно вывести инфу в каком режиме по ошибкам находится MCP2515. Переполнены ли буферы. 

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

riv пишет:

И судя по схеме через R3 на 17 ногу всегда подается +5. Знаешь номинал R3?

дак конечно, это потяжка к питанию, чтобы помехи не влияли, а то бы так постоянно спонтанно перезагружался MCP2515. Я думаю кОм 10 он. Да, всё верно,  щас проверил 10кОм.  (маркирвка резистора 103)

Я тут посоветовался со своими разработчиками, они насоветовали от GPIO DUE через диод и резистор 500 ом + стабилитрон на ногу 17 подать 0. Ну это на бегу.

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

По идее в момент глюка можно вывести инфу в каком режиме по ошибкам находится MCP2515. Переполнены ли буферы. 

Сможешь это сделать? Я с регистрами вообще на Вы.

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот фукция, а вот когда её вызывать вопрос. Если мастер , то можно при каждом получении статуса от узла 

Если узел, то при каждом получении статуса мастера. 

01void readErrorFlags_MCP2515 () {
02   
03SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0));  // начало связи по SPI ( скорость , очередность, режим SPI)
04digitalWrite(csPIN, LOW);                // выбираем устройство на шине SPI (пин CS нужного устройства в лоу)
05SPI.transfer(0x03);                   // команда прочитать регистры MCP2515 в BIN это 00000011
06SPI.transfer(0x2D);                   // адрес регистра 6-3 EFGL - Error Flag
07byte inByteSPI = SPI.transfer(0x00);  // получение данных из шины SPI
08digitalWrite(csPIN, HIGH);               // отпускаем пин CS
09SPI.endTransaction();                 // конец связи по SPI
10 
11// ниже разборка полученного байта на биты
12    if (inByteSPI != 0) {for (int i=0; i<8; i++) {
13           if (i==0) { if (bitRead (inByteSPI, i)) Serial.print (F(" RX or TX errors >= 96   "));}
14      else if (i==1) { if (bitRead (inByteSPI, i)) Serial.print (F(" RX errors >= 96   "));}
15      else if (i==2) { if (bitRead (inByteSPI, i)) Serial.print (F(" TX errors >= 96   "));}
16      else if (i==3) { if (bitRead (inByteSPI, i)) Serial.print (F(" RX errors >= 128. Mode ErrorPassive   "));}
17      else if (i==4) { if (bitRead (inByteSPI, i)) Serial.print (F(" TX errors >= 128. Mode ErrorPassive   "));           }
18      else if (i==5) { if (bitRead (inByteSPI, i)) Serial.print (F(" TX errors == 255. Mode BusOff   "));           }
19      else if (i==6) { if (bitRead (inByteSPI, i)) Serial.print (F(" Переполнен буфер приёма RX0   "));           }
20      else if (i==7) { if (bitRead (inByteSPI, i)) Serial.print (F(" Переполнен буфер приёма RX1   ")); Serial.println();     }
21       }
22     
23  }
24   else Serial.println (F("NO Errors"));
25 
26}

 

riv
Offline
Зарегистрирован: 20.07.2017

Воткнул твою функцию readErrorFlags_MCP2515 (); в 5 мест

1. в RX() в начале где return по 0 ID

2. в RX() в конце где default case

3. в test() под 9

4. В printStatus() в начале.

5 В конце MCP2515_Init

В итоге при кадом выводе статуса имеем список ошибок, при сбое имеем список ошибок, после инит имеем список ошибок, ну и ручками всегда можем посмотреть.

Поставил ждем.

Кстати к размышлению. У меня громе DUE которые включены в комп, все осталные платы (узлы 6-21) на автономном питании от единого БП, я из как включил 2 дня назад так и не выключал. Так вот там ошибок нет. 

Но они интенсивно в отличии от мастера с передачей 1 раз в секунду не обмениваются.

Т.е получается валимся при интенсивном обмене и не в терминаторах дело. В общем буду смотреть накопление ошибок.

MaksVV
Offline
Зарегистрирован: 06.08.2015

вот немного подкорректированная функция чтения ошибок. Показывает кроме флагов также количество ошибок. Я в два места запихал. CTRL+F ом найдешь. 12 версия. 

riv
Offline
Зарегистрирован: 20.07.2017

Вот вылезло

00:00:03:00       
 RX or TX errors >= 96    RX errors >= 96 
 
00:00:05:00       
 RX or TX errors >= 96    TX errors >= 96    TX errors >= 128. Mode ErrorPassive 
 
00:00:05:30       
 RX or TX errors >= 96    TX errors >= 96   
 
00:00:06:00       
NO Errors
 
MaksVV
Offline
Зарегистрирован: 06.08.2015

поставь 12 версию, посмотрим как количество ошибок меняется. В описании написано что счётчики увеличиваются и уменьшаются в соответствии со спецификацией CAN - уж не знаю по какому алгоритму. 

riv
Offline
Зарегистрирован: 20.07.2017

Ты в ней только

void readErrorFlags_MCP2515 () поменял и readErrors_MCP2515 добавил?
 
  
MaksVV
Offline
Зарегистрирован: 06.08.2015

да

riv
Offline
Зарегистрирован: 20.07.2017

Вот смотри что происходит

 

riv
Offline
Зарегистрирован: 20.07.2017

Вот глянь весь лог

https://yadi.sk/d/ozOcbX7B3V5hYy

log_18.05.18.txt

MaksVV
Offline
Зарегистрирован: 06.08.2015

лог не скачивается. почему опять всё время инит происходит? Сделай отладку для мастера таким образом 

1#define debug                     //отладка в сериал_монитор. Закоментировать строку после отладки
2 
3#ifdef debug
4#define debugStatus               //отладка в сериал_монитор - таблица статусов узлов CAN сети (для МАСТЕРА) Закоментировать строку после отладки
5bool ID_Print = 0 ;               //флаг распечатки CAN FRAMES в монитор. 0 - будут, только адресованные на данный узел. 1 - все CANFRAMES 
6bool statusprint = 0 ;            //флаг распечатки статусов в монитор. 
7#include "debug.h"
8#endif

 

riv
Offline
Зарегистрирован: 20.07.2017

Смотри полный лог, файл просто долго синхронизировался.

Инит происходит т.к постоянно получаем то что попадает в default

riv
Offline
Зарегистрирован: 20.07.2017

А вот сейчас ресетнулось

Ну вот откуда эти левые ID 8E090400

MaksVV
Offline
Зарегистрирован: 06.08.2015

ага неизвестный тип сообщения , да ещё фрейм ремоут докучи О_О.  Эта шина над нами издевается, ноль убрали  - дак это стало просачиваться. При том что MCP2515 виснет к тому же при получении такого сообщения. И видимо на пине INT висит сигнал что сообщение принято, и он одно и тоже глюкавое б/у шное сообщение показывает. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

отключи узел 13, может он козлит. По одному отключай и смотри. Судя по логу, вообще беда. еще и ардуина докучи перезагружалась , смотри время сбрасывалось вначале лога на 4 мин. 

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

отключи узел 13, может он козлит. По одному отключай и смотри. Судя по логу, вообще беда. еще и ардуина докучи перезагружалась , смотри время сбрасывалось вначале лога на 4 мин. 

Ну а сейчас от 9 было

041 -------CAN MESSAGE RX ADRRESSED TO ME-------
042  ID  8E090400
043  type_msg  - Неизвестное сообщение 
044  node_addr - node_9_Kitchen_net_center 
045  Rem_addr  - node_4_Net_center_Due1    
046  Dev_type  - NULL DEVICE
047 DATA FRAME      00 00 00 00 00 00 00 00
048 --------------------------------------------

Важно же не только из-за чего но и что делать если. Мало того CAN сам должкн отрабатывать 

Andy
Andy аватар
Offline
Зарегистрирован: 01.01.2016

riv пишет:
Так что же нам поможет ;-)
ООП более структурировано, привыкнете писать красиво и правильно. По своему опыту знаю проекты, начавшиеся на чистом С, обычно переписываются на С++, обратно никогда.
riv пишет:
вопрос про легкость согласования длинноволновых линий связи. Утверждение основано на опыте или теории?
Опыт в соответствии с теорией. Произвольную топологию в принципе нельзя согласовать. Задержка распространения сигнала в медном кабеле 4.8 мкс/км, 19200 это предел для несогласованной линии 1 км.

riv
Offline
Зарегистрирован: 20.07.2017

Andy пишет:

riv пишет:
Так что же нам поможет ;-)
ООП более структурировано, привыкнете писать красиво и правильно. По своему опыту знаю проекты, начавшиеся на чистом С, обычно переписываются на С++, обратно никогда.
riv пишет:
вопрос про легкость согласования длинноволновых линий связи. Утверждение основано на опыте или теории?
Опыт в соответствии с теорией. Произвольную топологию в принципе нельзя согласовать. Задержка распространения сигнала в медном кабеле 4.8 мкс/км, 19200 это предел для несогласованной линии 1 км.

Я то насчет КСВ с КБВ и четверть волонового трансформатора имел в виду. Ну и чем длиннее волна тем сложнее согласовывать линии. Снижение скорости снижаетчастоту но и увеличивает длинну волны.

Я конечно понимаю что тут манипуляция а не модуляция, так как физ линия, но все же.

Ну и проблемы то у нас другого характера, ошибки на CAN есть но они очень эпизодические. Явно если бы линиям было недостаточно согласования она бы часами не стояла нормально. 

riv
Offline
Зарегистрирован: 20.07.2017

Вот новый сбой но ресетнулось нормально

Причем заметь опять ID  8E0D0400

Это не глюк это системная ошибка, причем приглядись к датафрейму 61 80 00 00 00 00 00 00. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

говорю отключай этот 13 узел, он несчастливый) 

А вообще регистры  неадекватно показывает. То все биты сразу 1. То все 0. Ошибки то 255, то 0 - бред. Хотя проверял на регистре режима работы (нормал, лупбэк, листен онли, слип) - нормально показывает, значит правильно запрашиваю. и раз ID начинается с 8 значит direction равно 0. А я везде сделал его 1. То бишь бабайка этот фрейм отправил.  Домовёнок у тебя к кану подключился. 21 век как никак. 

И самое главное как оно просочилось через фильтр? О_О

Фильтр стоит что direction только с 1 должен проходить. можешь проверить на простом скетче. Это не поддается объяснению. 

riv
Offline
Зарегистрирован: 20.07.2017

Вот уже 3 часа работает с 2мя сбоями и самовосстановлением.

Просбочка есть встрой код часов, стобы выдавалось не только милс время но и от часов.  Или я свой набросаю, встрой потом в скетч.

У меня трое часов загашнике нашлось

DS1302

DS1307

DS3231

Если у тебя нет каких то из них я тогда свой код под DS3231 напишу.

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

А вообще регистры  неадекватно показывает. То все биты сразу 1. То все 0. Ошибки то 255, то 0 - бред. Хотя проверял на регистре режима работы (нормал, лупбэк, листен онли, слип) - нормально показывает, значит правильно запрашиваю. и раз ID начинается с 8 значит direction равно 0. А я везде сделал его 1. То бишь бабайка этот фрейм отправил.  Домовёнок у тебя к кану подключился. 21 век как никак. 

Это из твоего кода ф-я RX case REQUEST_SEND

1TX(0,REQUEST_ANSWER, dev_addr, dev_TYPE, EXTENDED, DATA_CANFRAME, DlC, DataP);

Первый 0 это dir 0

Ну и вообще может уйти от 11bit ID  и произвольных DLC

Везде 29 и 8?

MaksVV
Offline
Зарегистрирован: 06.08.2015

dlc 8 не везде. В REQUEST_SEND я вообщето direction исправил в 11 версии ещё вроде как . Ты хоть мои скетчи то заливаешь или гибриды опять делаешь? А то наворотим щас тут. Я буду думать что исправил, а у тебя в итоге не исправлено. А потом думай, почему не работает. Часы 3231 есть. код выложу

MaksVV
Offline
Зарегистрирован: 06.08.2015

короче если опять шина закозлит заливай опять упрощённый скетч - я его немного поправил. Он на коротких ID. мастер шлёт статус ID 666. Узлы отвечают 0XX, где ХХ - адрес узла. Посмотрим как себя поведёт. Заметь скорость поставил 125 кбит. 500 больше не ставь нигде, нафиг такая большая не нужна. Тем более расстояния довольно большие. 125 в самый раз. 

 

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

dlc 8 не везде. В REQUEST_SEND я вообщето direction исправил в 11 версии ещё вроде как . Ты хоть мои скетчи то заливаешь или гибриды опять делаешь? А то наворотим щас тут. Я буду думать что исправил, а у тебя в итоге не исправлено. А потом думай, почему не работает. Часы 3231 есть. код выложу

Заливаю твои, но подкручиваю дебаг, сам видишь как выводит, меня это отправлено в CAN достает в логе.

Вроде залита 11 с измененной ф-й вывода ошибок из 12. Я специально спросил, ты только ее изменил.

Я кстати про это и говорил что

1. Вставляй в основной файл что то вроде //ver 12 

2. По времени подготовить код и залить его во все контроллеры это 2-3 часа. Поэтому без серьезных изменения я только в DUE меняю код. И кстати МК не вснут

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

короче если опять шина закозлит заливай опять упрощённый скетч - я его немного поправил. Он на коротких ID. мастер шлёт статус ID 666. Узлы отвечают 0XX, где ХХ - адрес узла. Посмотрим как себя поведёт. Заметь скорость поставил 125 кбит. 500 больше не ставь нигде, нафиг такая большая не нужна. Тем более расстояния довольно большие. 125 в самый раз. 

Ок завтра поставлю. Пусть 12 простоит ночь. Уже 4 часа без малого стоит.

MaksVV
Offline
Зарегистрирован: 06.08.2015

код часов. Не проверял, нету под рукой DS3231. библиотека

01#include <RTC.h>
02#include <Wire.h>
03 
04RTC  time;
05byte ss; //секунда
06byte mm; //минута
07byte hh; //час
08byte dd; //день месяца
09byte wd; //день недели
10byte mn; //месяц
11 
12void setup() {
13  time.begin(RTC_DS3231);  //  RST, CLK, DAT инициализация модуля часов   
14}
15 
16void loop() {
17DS_3231 ();
18 
19}
20 
21void DS_3231 () {
22time.gettime();
23ss = time.seconds;
24mm = time.minutes;
25hh = time.Hours;
26dd = time.day;
27wd = time.weekday;
28mn = time.month;
29}

в либе смотри пример, как часы настроить и вообще почитай коменты

riv
Offline
Зарегистрирован: 20.07.2017

Опять сбойнуло https://yadi.sk/d/ozOcbX7B3V5hYy

log_18.05.18-2.txt

riv
Offline
Зарегистрирован: 20.07.2017

Опять сбойнуло https://yadi.sk/d/ozOcbX7B3V5hYy

log_18.05.18-2.txt

Да и смотри какое кино реконект по com порту ресетит MCP нормально.

MaksVV
Offline
Зарегистрирован: 06.08.2015

riv пишет:

Заливаю твои, но подкручиваю дебаг, сам видишь как выводит, меня это отправлено в CAN достает в логе.

Я же тебе говорил как дебаг настроить 

riv пишет:
Вроде залита 11 с измененной ф-й вывода ошибок из 12. Я специально спросил, ты только ее изменил.

нужно наверное убрать в 5 местах обращения к регистрам - коряво всё это работает почему то

riv пишет:
1. Вставляй в основной файл что то вроде //ver 12
 

ладно, просто в шапке показывается же название файла. Но ок, мне не сложно это добавлять. 

riv пишет:
По времени подготовить код и залить его во все контроллеры это 2-3 часа. Поэтому без серьезных изменения я только в DUE меняю код.

но вот это конечно не гуд, из-за этого  и могут быть проблемы. Где то скетч старый остался, а мы тут гадаем, че за шляпа творится. И убери пока DUE - глючная она. Потом вернёшь когда всё наладится.  

 

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

Я же тебе говорил как дебаг настроить 

ладно, просто в шапке показывается же название файла. Но ок, мне не сложно это добавлять. 

но вот это конечно не гуд, из-за этого  и могут быть проблемы. Где то скетч старый остался, а мы тут гадаем, че за шляпа творится. И убери пока DUE - глючная она. Потом вернёшь когда всё наладится.  

Посмотри файл лога, как на DUE добиться такого вывода настройками?

Я беру твой пакет, создаю под каждый папку с именем узла, переименовываю основной файл, открываю, настраиваю. На выходе если нет указателя что за версия то хрен поймешь что стоит. Так что лучше даже в лог пусть выводит вместе с именем узла.

Ну я условно сказал. Везде стоит 11 версия, так как лог я снимаю только с DUE то протсо вставил ф-ю снятия ошибок из регистров.

DUE завтра поменяю. Но я думаю не в DUE дело. Каждая плата свои либы имеет и может конфликтовать.

MaksVV
Offline
Зарегистрирован: 06.08.2015

riv пишет:
Посмотри файл лога, как на DUE добиться такого вывода настройками?

ну вот что это в отладке ? 

1Default msg_id !=0 && >12
2----------CAN BROADCAST MESSAGE RX----------
3 ID  20
4 type_msg  - NULL_C
5 node_addr - ШИРОКОВЕЩАТЕЛЬНО          
6 Rem_addr  - ШИРОКОВЕЩАТЕЛЬНО          
7 Dev_type  - Неизвестное устройство 
8DATA FRAME     
9--------------------------------------------

какое то Default msg_id !=0 && >12 вспыло. зачем ты ID_Print в труе ставишь. Нафиг эти рамки - по ID уже и так на глаз всё определяем, примелькаклось уже. 

У меня кстати при удачной перинициализации вообще не так в отадке всё было . см видос. Че то у тебя не так как у меня в скетче, похоже. 

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

riv пишет:
Посмотри файл лога, как на DUE добиться такого вывода настройками?

ну вот что это в отладке ? 

1Default msg_id !=0 && >12
2----------CAN BROADCAST MESSAGE RX----------
3 ID  20
4 type_msg  - NULL_C
5 node_addr - ШИРОКОВЕЩАТЕЛЬНО          
6 Rem_addr  - ШИРОКОВЕЩАТЕЛЬНО          
7 Dev_type  - Неизвестное устройство 
8DATA FRAME     
9--------------------------------------------

какое то Default msg_id !=0 && >12 вспыло. зачем ты ID_Print в труе ставишь. Нафиг эти рамки - по ID уже и так на глаз всё определяем, примелькаклось уже. 

У меня кстати при удачной перинициализации вообще не так в отадке всё было . см видос. Че то у тебя не так как у меня в скетче, похоже. 

1#define debug                     //отладка в сериал_монитор. Закоментировать строку после отладки
2 
3#ifdef debug
4#define debugStatus               //отладка в сериал_монитор - таблица статусов узлов CAN сети (для МАСТЕРА) Закоментировать строку после отладки
5bool ID_Print = 0 ;               //флаг распечатки CAN FRAMES в монитор. 0 - будут, только адресованные на данный узел. 1 - все CANFRAMES 
6bool statusprint = 0 ;            //флаг распечатки статусов в монитор.

Эээ я как бы твой код из другого места (чуть выше) взял и ткнул в нужное мне место ( RX default)

У меня отладка Ночью идет и места на твой развернутый как в видео дебаг в консоле нет, она начнет затираться. 

Я вывожу раз в 60 сек сост узлов и при аварии состояние авариии. Смотреть чем обмениваются в другое время узлы нет смысла.

MaksVV
Offline
Зарегистрирован: 06.08.2015

я не знаю в чём у тебя там проблема, но на узле аж на 4 часа хватает такой записи в мониторе порта. Этого хватит, чтобы косяки засечь. Не говоря уже про мастер, где данные два раза в минуту пишутся. Там весь лог записался от начала до конца.  Вот 5-часовой тест мастера и одного узла №10. Глюки отсутсвуют полностью. В конце, для прикола, сделал с монитора порта переинициализацию MCP2515. Если бы были косяки, по такой отладке у узла можно определить что  и когда он отсылал и получил. Время у него посмотреть, не простаивало ли. Сравнить что в это время на мастере творилось. 

riv
Offline
Зарегистрирован: 20.07.2017

MaksVV пишет:

я не знаю в чём у тебя там проблема, но на узле аж на 4 часа хватает такой записи в мониторе порта. Этого хватит, чтобы косяки засечь. Не говоря уже про мастер, где данные два раза в минуту пишутся. Там весь лог записался от начала до конца.  Вот 5-часовой тест мастера и одного узла №10. Глюки отсутсвуют полностью. В конце, для прикола, сделал с монитора порта переинициализацию MCP2515. Если бы были косяки, по такой отладке у узла можно определить что  и когда он отсылал и получил. Время у него посмотреть, не простаивало ли. Сравнить что в это время на мастере творилось. 

Поставил 12 версию на мастер без

1// SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0));
2 // digitalWrite(csPIN, LOW);
3 // SPI.transfer(0xC0);
4//  digitalWrite(csPIN, HIGH);
5//  SPI.endTransaction();
6 // delay (100);

+

1#define debug                     //отладка в сериал_монитор. Закоментировать строку после отладки
2 
3#ifdef debug
4#define debugStatus               //отладка в сериал_монитор - таблица статусов узлов CAN сети (для МАСТЕРА) Закоментировать строку после отладки
5bool ID_Print = 0 ;               //флаг распечатки CAN FRAMES в монитор. 0 - будут, только адресованные на данный узел. 1 - все CANFRAMES 
6bool statusprint = 0 ;            //флаг распечатки статусов в монитор. 

Так нужно?

Инициализация у меня тоже работает.

Но вот когда глюк серьезный то сеть летит. Лог сам видел.

riv
Offline
Зарегистрирован: 20.07.2017

Так 12 версия не работает.

riv
Offline
Зарегистрирован: 20.07.2017

Постиавил 11 с теми же настройками и скопировал тольуо ф-ю с ошибками MCP

MaksVV
Offline
Зарегистрирован: 06.08.2015

что в 12 не работает?