Пеппев
Сб 15 августа 2015 г. 13:27
Когда я пробую примеры, включенные в это библиотека Эскиз скомпилируется без ошибки (я изменяю штифт Defincemion для штифта SS), но когда я загружаю его в Maple Mini, контроллер получает заблокированный (нет серийного порта, без светодиода). Любая помощь?
Пеппев
Сб 15 августа 2015 г., 16:15
Если я объявляю класс
MCP_CAN CAN(SPI_CS_PIN);
ZMEMW16
Сб 15 августа 2015 г., 18:02
И ваше оборудование - что?
Есть ли на самом деле интерфейс CAN? Не иметь, возможно, вполне заморозить/повесить набросок
Можем ли мы увидеть весь эскиз?
Стивен
Есть ли на самом деле интерфейс CAN? Не иметь, возможно, вполне заморозить/повесить набросок
Можем ли мы увидеть весь эскиз?
Стивен
Rogerclark
Сб 15 августа 2015 г., 21:31
Разве нет проблемы с USB и CAN Comming некоторых ресурсов?
Я знаю, что кто -то исследует, как обойти проблему общих ресурсов, но я не думаю, что они когда -либо разместили решение
Смотрите эту ветку
ViewTopic.PHP?f = 15&t = 72&P = 4269
Я знаю, что кто -то исследует, как обойти проблему общих ресурсов, но я не думаю, что они когда -либо разместили решение
Смотрите эту ветку
ViewTopic.PHP?f = 15&t = 72&P = 4269
victor_pv
Солнце 16 августа 2015 2:19
Rogerclark написал:Разве нет проблемы с USB и CAN Comming некоторых ресурсов?
Я знаю, что кто -то исследует, как обойти проблему общих ресурсов, но я не думаю, что они когда -либо разместили решение
Смотрите эту ветку
ViewTopic.PHP?f = 15&t = 72&P = 4269
Я знаю, что кто -то исследует, как обойти проблему общих ресурсов, но я не думаю, что они когда -либо разместили решение
Смотрите эту ветку
ViewTopic.PHP?f = 15&t = 72&P = 4269
Пеппев
Солнце 16 августа 2015 г., 4:18
Мое оборудование - это Exsternal MCP2515 модуль, он работает, если я объявляю класс внутри настройки и цикла, он не работает, если я объявляю класс как глобальный.
Эскиз:
Эскиз:
/ demo: CAN-BUS Shield, receive data with interrupt mode
// when in interrupt mode, the data coming can't be too fast, must >20ms, or else you can use check mode
// loovee, 2014-6-13
#include
#include "mcp_can.h"
// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const byte SPI_CS_PIN = 31;
// Set CS pin
SPIClass SPI_3(2);
unsigned char flagRecv = 0;
unsigned char len = 0;
unsigned char buf[8];
char str[20];
void setup()
{
Serial.begin(115200);
pinMode(33, OUTPUT);
digitalWrite(33, HIGH);
delay(25000);
digitalWrite(33, LOW);
delay(1000);
digitalWrite(33, HIGH);
MCP_CAN CAN(SPI_CS_PIN);
START_INIT:
if (CAN_OK == CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
attachInterrupt(0, MCP2515_ISR, FALLING); // start interrupt
}
void MCP2515_ISR()
{
flagRecv = 1;
}
void loop()
{
MCP_CAN CAN(SPI_CS_PIN);
INT8U ret;
digitalWrite(SPI_CS_PIN, LOW);
SPI_3.transfer(0x02);
SPI_3.transfer(0x0D);
SPI_3.transfer(0x00);
digitalWrite(SPI_CS_PIN, HIGH);
delay(100);
for (int i = 0; i < 150; i++) {
digitalWrite(SPI_CS_PIN, LOW);
SPI_3.transfer(0x03);
SPI_3.transfer(i);
ret = SPI_3.transfer(0x00);
digitalWrite(SPI_CS_PIN, HIGH);
Serial.print(i, HEX);
Serial.print(" ");
Serial.println(ret, BIN);
delay(100);
}
if (flagRecv)
{ // check if get data
flagRecv = 0; // clear flag
// iterate over all pending messages
// If either the bus is saturated or the MCU is busy,
// both RX buffers may be in use and reading a single
// message does not clear the IRQ conditon.
while (CAN_MSGAVAIL == CAN.checkReceive())
{
// read data, len: data length, buf: data buf
CAN.readMsgBuf(&len, buf);
// print the data
for (int i = 0; i < len; i++)
{
Serial.print(buf[i]); Serial.print("\t");
}
Serial.println();
}
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
Mrburnette
Солнце 16 августа 2015 г. 14:41
Пеппев написал:Мое оборудование - это Exsternal MCP2515 модуль, он работает, если я объявляю класс внутри настройки и цикла, он не работает, если я объявляю класс как глобальный.
<...>
<...>
ZMEMW16
Солнце 16 августа 2015 г. 15:46
flagrecv должен быть объявлен нестабильным.
Я только что заказываю пару модулей CAN :-)
Стивен
Я только что заказываю пару модулей CAN :-)
Стивен
Пеппев
Солнце 16 августа 2015 г. 15:52
ZMEMW16 написал:flagrecv должен быть объявлен нестабильным.
Я только что заказываю пару модулей CAN :-)
Стивен
Я только что заказываю пару модулей CAN :-)
Стивен
victor_pv
Солнце 16 августа 2015 г., 17:11
Пеппев написал:Мое оборудование - это Exsternal MCP2515 модуль, он работает, если я объявляю класс внутри настройки и цикла, он не работает, если я объявляю класс как глобальный.
Эскиз:
Эскиз:
/ demo: CAN-BUS Shield, receive data with interrupt mode
// when in interrupt mode, the data coming can't be too fast, must >20ms, or else you can use check mode
// loovee, 2014-6-13
#include
#include "mcp_can.h"
// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const byte SPI_CS_PIN = 31;
// Set CS pin
SPIClass SPI_3(2);
unsigned char flagRecv = 0;
unsigned char len = 0;
unsigned char buf[8];
char str[20];
void setup()
{
Serial.begin(115200);
pinMode(33, OUTPUT);
digitalWrite(33, HIGH);
delay(25000);
digitalWrite(33, LOW);
delay(1000);
digitalWrite(33, HIGH);
MCP_CAN CAN(SPI_CS_PIN);
START_INIT:
if (CAN_OK == CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
attachInterrupt(0, MCP2515_ISR, FALLING); // start interrupt
}
void MCP2515_ISR()
{
flagRecv = 1;
}
void loop()
{
MCP_CAN CAN(SPI_CS_PIN);
INT8U ret;
digitalWrite(SPI_CS_PIN, LOW);
SPI_3.transfer(0x02);
SPI_3.transfer(0x0D);
SPI_3.transfer(0x00);
digitalWrite(SPI_CS_PIN, HIGH);
delay(100);
for (int i = 0; i < 150; i++) {
digitalWrite(SPI_CS_PIN, LOW);
SPI_3.transfer(0x03);
SPI_3.transfer(i);
ret = SPI_3.transfer(0x00);
digitalWrite(SPI_CS_PIN, HIGH);
Serial.print(i, HEX);
Serial.print(" ");
Serial.println(ret, BIN);
delay(100);
}
if (flagRecv)
{ // check if get data
flagRecv = 0; // clear flag
// iterate over all pending messages
// If either the bus is saturated or the MCU is busy,
// both RX buffers may be in use and reading a single
// message does not clear the IRQ conditon.
while (CAN_MSGAVAIL == CAN.checkReceive())
{
// read data, len: data length, buf: data buf
CAN.readMsgBuf(&len, buf);
// print the data
for (int i = 0; i < len; i++)
{
Serial.print(buf[i]); Serial.print("\t");
}
Serial.println();
}
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
ZMEMW16
Sun 16 августа 2015 г., 17:49
Пеппев написал:ZMEMW16 написал:flagrecv должен быть объявлен нестабильным.
Я только что заказываю пару модулей CAN :-)
Стивен
Я только что заказываю пару модулей CAN :-)
Стивен
Пеппев
Солнце 16 августа 2015 г. 18:06
victor_pv написал:
Ваша библиотека, вероятно, пытается что -то сделать с булавками IO (я думаю) во время декларации.
В этом есть несколько потоков, но в основном происходит то, что конструктор вашего объекта работает перед инициализацией io. Таким образом, после того, как ваши объекты установили то или иное в порту iO, подпрограмма инициализации IO Libmaple работает и сбрасывает все настройки портов.
Переместите любую операцию IO PIN -штифта за пределами конструктора, или вам придется дважды выполнять установку PIN -iO.
Попробуйте сделать так, как LCD библиотеки. Они объявляют объект вне настройки или цикла, но не выполняют никакой установки PIN -кода до TFT.begin () называется внутри петли. В этот момент рутина Libmaple Init уже запускается и не сбросит настройки IO.
Ваша библиотека, вероятно, пытается что -то сделать с булавками IO (я думаю) во время декларации.
В этом есть несколько потоков, но в основном происходит то, что конструктор вашего объекта работает перед инициализацией io. Таким образом, после того, как ваши объекты установили то или иное в порту iO, подпрограмма инициализации IO Libmaple работает и сбрасывает все настройки портов.
Переместите любую операцию IO PIN -штифта за пределами конструктора, или вам придется дважды выполнять установку PIN -iO.
Попробуйте сделать так, как LCD библиотеки. Они объявляют объект вне настройки или цикла, но не выполняют никакой установки PIN -кода до TFT.begin () называется внутри петли. В этот момент рутина Libmaple Init уже запускается и не сбросит настройки IO.
victor_pv
Солнце 16 августа 2015 г., 8:08 вечера
Пеппев написал:victor_pv написал:
Ваша библиотека, вероятно, пытается что -то сделать с булавками IO (я думаю) во время декларации.
В этом есть несколько потоков, но в основном происходит то, что конструктор вашего объекта работает перед инициализацией io. Таким образом, после того, как ваши объекты установили то или иное в порту iO, подпрограмма инициализации IO Libmaple работает и сбрасывает все настройки портов.
Переместите любую операцию IO PIN -штифта за пределами конструктора, или вам придется дважды выполнять установку PIN -iO.
Попробуйте сделать так, как LCD библиотеки. Они объявляют объект вне настройки или цикла, но не выполняют никакой установки PIN -кода до TFT.begin () называется внутри петли. В этот момент рутина Libmaple Init уже запускается и не сбросит настройки IO.
Ваша библиотека, вероятно, пытается что -то сделать с булавками IO (я думаю) во время декларации.
В этом есть несколько потоков, но в основном происходит то, что конструктор вашего объекта работает перед инициализацией io. Таким образом, после того, как ваши объекты установили то или иное в порту iO, подпрограмма инициализации IO Libmaple работает и сбрасывает все настройки портов.
Переместите любую операцию IO PIN -штифта за пределами конструктора, или вам придется дважды выполнять установку PIN -iO.
Попробуйте сделать так, как LCD библиотеки. Они объявляют объект вне настройки или цикла, но не выполняют никакой установки PIN -кода до TFT.begin () называется внутри петли. В этот момент рутина Libmaple Init уже запускается и не сбросит настройки IO.