RFID-RC522 сбой мой код

DMD
Пт 26 мая 2017 г. 11:36
Всем привет.

Я использую синюю таблетку.

Я настроил базовый пример RFID с использованием MFRC522. Тест с Arduino Uno, и это сработало. Я проверил это с синей таблеткой STM32, и это тоже сработало.

Когда я добавил другие компоненты (отображение 7 сегментов, зуммер, светодиоды, переключатели ... и увеличил код), он перестал работать.

Я разобрался и начал с других компонентов, проверяя все и пишу код по мере необходимости.
Когда я добавляю модуль RFID RC522, STM32 разрушается. Это даже не инициализируется. (Я положил светодиод, который показывает, когда он начинается).

Я попытался обновить библиотеку RFID. Я скачал его с того же репозитория и ухудшил. Допустил ошибки, сказав, что было необходимо иметь C ++ 11.

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

Я использую плагин (vmicro) для Visual Studio и Arduino IDE 1.8.2.

(Я попытался скомпилировать с помощью двух, проблемы одинаковы).

Может кто -нибудь мне помочь?

Rogerclark
Пт 26 мая 2017 г., 23:42
Вчера в Master Repo был добавлен GNU ++ 11 11

DMD
Солнце 28 мая 2017 г. 9:07 вечера
Rogerclark написал:Вчера в Master Repo был добавлен GNU ++ 11 11

Rogerclark
Солнце 28 мая 2017 г., 21:27
Не все библиотеки совместимы с оборудованием STM32 или ядром Libmaple.

Похоже, вам может понадобиться внести изменения в библиотеку.

КСТАТИ. Работает ли библиотека на досках Arduino Arm, таких как Due и Zero ?

DMD
Солнце 28 мая 2017 г. 9:41 вечера
Rogerclark написал:Не все библиотеки совместимы с оборудованием STM32 или ядром Libmaple.

Похоже, вам может понадобиться внести изменения в библиотеку.

КСТАТИ. Работает ли библиотека на досках Arduino Arm, таких как Due и Zero ?

Rogerclark
Солнце 28 мая 2017 г. 22:08
Вы можете увидеть, компилируется ли он для должного или нуля, так как в настоящее время он не компилируется на STM32.

Re: Работа 2 года назад.

Почему бы просто не загрузить старую версию из GitHub, если она работала для вас, и если вы хотите помочь автору сделать ее совместимым с STM32, то попробуйте несколько новых версий (разные коммиты GitHub) и определить, какое изменение сломало его.

Zoomx
Пн 29 мая 2017 г. 9:18 утра
DMD написал: Когда я добавляю модуль RFID RC522, STM32 разрушается. Это даже не инициализируется. (Я положил светодиод, который показывает, когда он начинается).

DMD
Пн 29 мая 2017 г. 16:12
Rogerclark написал:Вы можете увидеть, компилируется ли он для должного или нуля, так как в настоящее время он не компилируется на STM32.

Re: Работа 2 года назад.

Почему бы просто не загрузить старую версию из GitHub, если она работала для вас, и если вы хотите помочь автору сделать ее совместимым с STM32, то попробуйте несколько новых версий (разные коммиты GitHub) и определить, какое изменение сломало его.

DMD
Пн 29 мая 2017 г. 16:14
Zoomx написал: Может быть, ваш модуль издает много шума, что ваша плата STM32 не любит.
Может быть.

AG123
Пн 29 мая 2017 г. 18:17
Вы используете эту библиотеку?
https: // github.com/miguelbalboa/rfid #define SERIAL_ENABLED 1 #define LCD_ENABLED 1 #if LCD_ENABLED #include LiquidCrystal lcd(PB15, PB14, PB13, PB12, PB11, PB10); #endif volatile int state = LOW; const int ZCD_Pin = PB1; int led_Pin = PB0; // PWM-capable pin void setup() { pinMode(led_Pin, OUTPUT); // setup the pin as PWM // turn the LED on (HIGH is the voltage level) #endif attachInterrupt(ZCD_Pin, zcd, FALLING); lcd.setCursor(0, 0); Timer1.pause(); Timer1.setPrescaleFactor(7200); Timer1.setOverflow(1000); Timer1.setChannel1Mode(TIMER_OUTPUT_COMPARE); Timer1.setCompare(TIMER_CH1, 1); Timer1.attachCompare1Interrupt(handler_led); Timer1.refresh(); } void loop() { } void zcd() { digitalWrite(led_Pin, LOW); Timer1.resume(); } void handler_led() { digitalWrite(led_Pin, HIGH); Timer1.pause(); Timer1.refresh(); }

DMD
Пн 29 мая 2017 г. 20:28
AG123 написал:Вы используете эту библиотеку?
https: // github.com/miguelbalboa/rfid HardwareTimer timer1(1);

AG123
Пн 29 мая 2017 г. 20:55
Предполагая, что Visual Studio использует один и тот же компилятор GCC/G ++, в конце концов, казалось бы, что флаги компиляции могут быть разными E.глин. что есть больше предупреждающих флагов, использующих в Visual Studio (возможно -Wall?) или в этом отношении, если это на самом деле другой компилятор, чем компилятор, дает больше предупреждений или, возможно, запускается с разными флагами.

Предупреждения компиляции не требуют необходимого привести к киоскам, e.глин. Если у вас заканчивается память на синей таблетке, в компиляции могут быть буквально никаких предупреждений или ошибок. Но все же это может сбое, если больше нет памяти.
Кроме того, есть слишком много причин для киоска может быть какой -то жесткой виной? Может ли эскиз застрять в петле, ожидая данных, которые никогда не появятся (это довольно вероятно)? или может ли эскиз запустить инструкцию ожидания, в которой ожидаемые прерывания никогда не появляются? эн.глин. У вас есть несколько кодов, которые проверяют условие, затем запустите WFI (подождите прерывания), и прерывание произошло между чеком и WFI. Поэтому, когда процессор запускает WFI, он просто продолжает спать в ожидании прерывания, которое уже прошло (условия гонки случаются)

Мои обычные способы, которыми я пытаюсь диагностировать, - это *мигает светодиод *, вы могли бы буквально иметь функцию, которая по -разному мигает в зависимости от параметра.
Это дало бы вам намеки на то, где он замерзает. эн.глин. Если светодиод вообще не моргнул, возможно, эскиз просто разбился перед каким -либо заявлением
Помимо этого есть сериал.print (), чтобы попытаться диагностировать проблему, и если это все еще не достигнет нижней части, может потребоваться запуск отладки, тогда

всего 2 цента,
Надеюсь, это поможет

DMD
Пн 29 мая 2017 г. 11:46 вечера
AG123 написал:Предполагая, что Visual Studio использует один и тот же компилятор GCC/G ++, в конце концов, казалось бы, что флаги компиляции могут быть разными E.глин. что есть больше предупреждающих флагов, использующих в Visual Studio (возможно -Wall?) или в этом отношении, если это на самом деле другой компилятор, чем компилятор, дает больше предупреждений или, возможно, запускается с разными флагами.

Предупреждения компиляции не требуют необходимого привести к киоскам, e.глин. Если у вас заканчивается память на синей таблетке, в компиляции могут быть буквально никаких предупреждений или ошибок. Но все же это может сбое, если больше нет памяти.
Кроме того, есть слишком много причин для киоска может быть какой -то жесткой виной? Может ли эскиз застрять в петле, ожидая данных, которые никогда не появятся (это довольно вероятно)? или может ли эскиз запустить инструкцию ожидания, в которой ожидаемые прерывания никогда не появляются? эн.глин. У вас есть несколько кодов, которые проверяют условие, затем запустите WFI (подождите прерывания), и прерывание произошло между чеком и WFI. Поэтому, когда процессор запускает WFI, он просто продолжает спать в ожидании прерывания, которое уже прошло (условия гонки случаются)

Мои обычные способы, которыми я пытаюсь диагностировать, - это *мигает светодиод *, вы могли бы буквально иметь функцию, которая по -разному мигает в зависимости от параметра.
Это дало бы вам намеки на то, где он замерзает. эн.глин. Если светодиод вообще не моргнул, возможно, эскиз просто разбился перед каким -либо заявлением
Помимо этого есть сериал.print (), чтобы попытаться диагностировать проблему, и если это все еще не достигнет нижней части, может потребоваться запуск отладки, тогда

всего 2 цента,
Надеюсь, это поможет

AG123
Вторник 30 мая 2017 г. 12:06
HardwareTimer Timer1(1);

Rogerclark
Вторник 30 мая 2017 г. 2:06 утра
Похоже, класс SPI может быть правильно инициализирован в Visual Studio

Хотя есть несколько человек, которые используют ядро ​​Libmaple с Visual Studio, ядро ​​(Libmaple) предназначено только для работы с Arduino IDE, а затем только конкретные версии IDE.

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

На данный момент у вас слишком много не коренных.
Я бы порекомендовал вам использовать Arduino IDE, либо вы обратитесь к компании, которая создает плагин Visual Studio и т. Д., И попросите их помочь.

Стивестронг
Вторник 30 мая 2017 г. 8:16 утра
Эти предупреждения не влияют на функциональность SPI.
Что именно означает «авария»? DMD написал:_currentsetting->bitorder = bitorder; //<<<<<<<<<<<<<<<<<<<<< Сбой здесь!!!!!!!!

Zoomx
Вторник 30 мая 2017 г. 13:36
DMD написал: Можете ли вы привести мне несколько примеров (или лучше объяснить) об этом?

DMD
Вторник 30 мая 2017 г. 16:46
Rogerclark написал:Похоже, класс SPI может быть правильно инициализирован в Visual Studio

Хотя есть несколько человек, которые используют ядро ​​Libmaple с Visual Studio, ядро ​​(Libmaple) предназначено только для работы с Arduino IDE, а затем только конкретные версии IDE.

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

На данный момент у вас слишком много не коренных.
Я бы порекомендовал вам использовать Arduino IDE, либо вы обратитесь к компании, которая создает плагин Visual Studio и т. Д., И попросите их помочь.

DMD
Вторник 30 мая 2017 г. 16:53
Стивестронг написал:Эти предупреждения не влияют на функциональность SPI.
Что именно означает «авария»? DMD написал:_currentsetting->bitorder = bitorder; //<<<<<<<<<<<<<<<<<<<<< Сбой здесь!!!!!!!!

DMD
Вторник 30 мая 2017 г., 17:06
Zoomx написал:DMD написал: Можете ли вы привести мне несколько примеров (или лучше объяснить) об этом?

DMD
Вторник 30 мая 2017 г., 17:13
AG123 написал:// ZERO CROSSING DETECTOR AND TIMER EXAMPLE HardwareTimer myTimer(1); // We use the TIMER1 const int ZCD_Pin = PB1; // Input from Zero Crossing Detector's output int led_Pin = PB0; // LED driven by zcd() and handler_led() void zcd() { digitalWrite(led_Pin, LOW); myTimer.resume(); } void handler_led() { digitalWrite(led_Pin, HIGH); myTimer.refresh(); } void setup() { pinMode(led_Pin, OUTPUT); // setup the pin as output pinMode(ZCD_Pin, INPUT); // ZCD signal input attachInterrupt(ZCD_Pin, zcd, FALLING); myTimer.pause(); myTimer.setPeriod(5 * 1000); myTimer.setChannel1Mode(TIMER_OUTPUT_COMPARE); myTimer.setCompare(TIMER_CH1, 1); myTimer.attachCompare1Interrupt(handler_led); myTimer.refresh(); myTimer.resume(); } void loop() { }

Стивестронг
Вторник 30 мая 2017 г., 17:27
Нет. AMAP предназначен для открытия файлов карт (поиск на форуме, как генерировать файлы карты).

Я сдаюсь, потому что действительно кажется, что ваша проблема связана с использованным плагином (Vmicro) для Visual Studio, и я не могу вам там помочь.

DMD
Вторник 30 мая 2017 г. 18:01
Стивестронг написал:Нет. AMAP предназначен для открытия файлов карт (поиск на форуме, как генерировать файлы карты).

Я сдаюсь, потому что действительно кажется, что ваша проблема связана с использованным плагином (Vmicro) для Visual Studio, и я не могу вам там помочь.

DMD
Вторник 30 мая 2017 г. 18:45
AG123 написал:void handler_led() { digitalWrite(led_Pin, HIGH); //myTimer.refresh(); }

Стивестронг
Вторник 30 мая 2017 г. 20:59
Под Arduino Ide я мог бы проверить и отлаживать ваш код, если вы поделитесь им.

DMD
Вторник 30 мая 2017 г. 11:58
Стивестронг написал:Под Arduino Ide я мог бы проверить и отлаживать ваш код, если вы поделитесь им.

DMD
Ср 31 мая 2017 г. 12:07
Как я уже сказал, старая библиотека работала.
В соответствии с датой кода, который я создал, скорее всего, это версия 1.1.8 Доступно здесь.

Https: // github.com/miguelbalboa/rfid/re ... fter = 1.1.9

Может, другие тоже работают.
Мне нужно проверить.

Я искал причину, по которой один сработал, а другой - нет, но я не мог найти.

Стивестронг
Ср 31 мая 2017 г. 8:36 утра
Пожалуйста, поделитесь все Ваш код (включая библиотеку, не работающую), в противном случае я не могу вам помочь.
Самый простой способ - прикрепить zip -файл к вашему сообщению, включая полный пакет.

Zoomx
Ср 31 мая 2017 г. 10:32
Кажется, что вы принимаете неправильную булавку на STM32, а иногда на мега есть шум, как я вижу на среднем изображении.

Но отсюда очень сложно увидеть :)

AG123
Ср 31 мая 2017 г. 12:40
Существует поговорка, что Бог помогает тем, кто помогает себе, это довольно уместно, на самом деле мало замены, будучи первым, ближе всего к проблеме. Причина в том, что кто -то другой использует другую среду, составляющую один и тот же код, он может просто работать для него/ее, но в силу удачи/судьбы и т. Д., Возможно, у вас есть особая комбинация, которая не работает.

Остальные из нас могут дать только советы/подсказки о том, что мы думаем, основываясь на нашем собственном ограниченном опыте, что может облегчить вашу ситуацию, но в конце концов у нас тоже не будет ответов :ржу не могу:

DMD
Чт, 01 июня 2017 г. 14:53
Стивестронг написал:Пожалуйста, поделитесь все Ваш код (включая библиотеку, не работающую), в противном случае я не могу вам помочь.
Самый простой способ - прикрепить zip -файл к вашему сообщению, включая полный пакет.

DMD
Чт, 01 июня 2017 г. 14:57
Zoomx написал:Кажется, что вы принимаете неправильную булавку на STM32, а иногда на мега есть шум, как я вижу на среднем изображении.

Но отсюда очень сложно увидеть :)

DMD
Чт, 01 июня 2017 г. 15:21
AG123 написал:Существует поговорка, что Бог помогает тем, кто помогает себе, это довольно уместно, на самом деле мало замены, будучи первым, ближе всего к проблеме. Причина в том, что кто -то другой использует другую среду, составляющую один и тот же код, он может просто работать для него/ее, но в силу удачи/судьбы и т. Д., Возможно, у вас есть особая комбинация, которая не работает.

Остальные из нас могут дать только советы/подсказки о том, что мы думаем, основываясь на нашем собственном ограниченном опыте, что может облегчить вашу ситуацию, но в конце концов у нас тоже не будет ответов :ржу не могу:

AG123
Чт, 01 июня 2017 г. 16:49
Дополнительный намек, вполне вероятно.
Если отладка нет, сделайте void zcd() { digitalWrite(led_Pin, LOW); myTimer.refresh(); // here we reset count to 0 (?) myTimer.resume(); // here we starting the counting from zero } void handler_led() { digitalWrite(led_Pin, HIGH); myTimer.pause(); // here we finished at 5000 so we can pause }

ZMEMW16
Чт, 01 июня 2017 г., 17:41
https: // www.Ардуино.cc/en/serial/print void zcd() { digitalWrite(led_Pin, LOW); myTimer.refresh(); // here we reset count to 0 (?) myTimer.resume(); // here we starting the counting } void handler_led() { digitalWrite(led_Pin, HIGH); myTimer.pause(); // here we finished at 5000 so we can pause }

Неровная