Фоно
Пн 12 сентября 2016 г., 19:44
Привет,
Ардуино 1.6.9 IDE установлен в Windows 10.
Я вставил в эскиз несколько сериалов.Печать операторов для мониторинга прогресса обработки в функции настройки.
Вот выдержка кода:
#Define Serial Serial
void setup () {
// режим PIN и тому подобное....
#ifdef serial
Сериал.начало (115200);
Задержка (2000);
Сериал.println ("отладка отладки" Activee ");
#еще
CanSetup ();
#endif
Ethernet.начать (Mac, ip);
#ifdef serial
Сериал.println ("инициализация клиента Ethernet");
#endif
// Инициализация de l'i2c
Maitrei2c.начинать() ;
#ifdef serial
задержка (100);
Сериал.print ("инициализация i2c");
if (mpu6050_init ()) // Инициализация du gyroscope
Сериал.println ("Reussie");
еще
Сериал.println ("echouee");
#еще
Mpu6050_init (); // Инициализация дю -гироскопа
#endif
// и т. д.
}
Когда начинается эскиз, только первые два отпечатка показывают в окне монитора, затем IDE висит. Если я попытаюсь закрыть окно монитора, оно не так, и IDE больше не отвечает, пока я не нажму кнопку сброса на плате Olimexion STM32.
Любая идея?
Это не происходит, если я использую физический последовательный порт на доске Olimexino.
Ардуино 1.6.9 IDE установлен в Windows 10.
Я вставил в эскиз несколько сериалов.Печать операторов для мониторинга прогресса обработки в функции настройки.
Вот выдержка кода:
#Define Serial Serial
void setup () {
// режим PIN и тому подобное....
#ifdef serial
Сериал.начало (115200);
Задержка (2000);
Сериал.println ("отладка отладки" Activee ");
#еще
CanSetup ();
#endif
Ethernet.начать (Mac, ip);
#ifdef serial
Сериал.println ("инициализация клиента Ethernet");
#endif
// Инициализация de l'i2c
Maitrei2c.начинать() ;
#ifdef serial
задержка (100);
Сериал.print ("инициализация i2c");
if (mpu6050_init ()) // Инициализация du gyroscope
Сериал.println ("Reussie");
еще
Сериал.println ("echouee");
#еще
Mpu6050_init (); // Инициализация дю -гироскопа
#endif
// и т. д.
}
Когда начинается эскиз, только первые два отпечатка показывают в окне монитора, затем IDE висит. Если я попытаюсь закрыть окно монитора, оно не так, и IDE больше не отвечает, пока я не нажму кнопку сброса на плате Olimexion STM32.
Любая идея?
Это не происходит, если я использую физический последовательный порт на доске Olimexino.
Martinayotte
Пн 12 сентября 2016 г., 8:05 вечера
Вы имеете в виду, что первые серийные отпечатки перед I2C.begin () работают, но не тот, который после ?
Ваш maitrei2c, вероятно, не работает и не висит. Это прозвище для библиотеки проводов STM32 ?
У вас есть подтягивания на вашем автобусе i2c ?
Ваш maitrei2c, вероятно, не работает и не висит. Это прозвище для библиотеки проводов STM32 ?
У вас есть подтягивания на вашем автобусе i2c ?
Фоно
Пн 12 сентября 2016 г., 21:09
На самом деле я пытаюсь использовать библиотеку Hardwire, с:
#включать <Хардвор.час>
// .........
Hardwire maitrei2c (1, i2c_fast_mode);
Но пока без успеха.
Я понимаю, что вы предлагаете: инициализация I2C приведет к тому, что система будет зависать. Чтобы проверить это, я изменил код:
Сериал.println ("инициализация i2c");
задержка (1000);
Maitrei2c.начинать() ;
if (mpu6050_init ()) // Инициализация du gyroscope
Сериал.println ("Reussie");
еще
Сериал.println ("echouee");
Так что, каким бы ни был результат инициализации I2C, первый отпечаток обычно работает. Но это не.
#включать <Хардвор.час>
// .........
Hardwire maitrei2c (1, i2c_fast_mode);
Но пока без успеха.
Я понимаю, что вы предлагаете: инициализация I2C приведет к тому, что система будет зависать. Чтобы проверить это, я изменил код:
Сериал.println ("инициализация i2c");
задержка (1000);
Maitrei2c.начинать() ;
if (mpu6050_init ()) // Инициализация du gyroscope
Сериал.println ("Reussie");
еще
Сериал.println ("echouee");
Так что, каким бы ни был результат инициализации I2C, первый отпечаток обычно работает. Но это не.
Фоно
Пн 12 сентября 2016 г., 21:14
Кроме того, если я изменю код выше, как это:
#ifdef serial
Сериал.начало (9600);
Задержка (2000);
Сериал.println ("отладка отладки" Activee ");
#еще
CanSetup ();
#endif
Ethernet.начать (Mac, ip);
#ifdef serial
Сериал.print ("инициализация клиента Ethernet");
Сериал.print ("инициализация клиента Ethernet 2,");
Сериал.println ("инициализация клиента Ethernet 3");
#endif
Только первый Println и первое печатное шоу на серийном мониторе, и он висит после запятой:
Отладка отладки активно
Инициализация клиента Ethernet,
#ifdef serial
Сериал.начало (9600);
Задержка (2000);
Сериал.println ("отладка отладки" Activee ");
#еще
CanSetup ();
#endif
Ethernet.начать (Mac, ip);
#ifdef serial
Сериал.print ("инициализация клиента Ethernet");
Сериал.print ("инициализация клиента Ethernet 2,");
Сериал.println ("инициализация клиента Ethernet 3");
#endif
Только первый Println и первое печатное шоу на серийном мониторе, и он висит после запятой:
Отладка отладки активно
Инициализация клиента Ethernet,
Martinayotte
Пн 12 сентября 2016 г., 21:24
Я едва мог в это поверить ...
Несколько последовательных серий.print () и он висит после второго ?
Я никогда не видел этого ...
Ваша установка довольно странная !
Вы пробовали другое программное обеспечение для последовательной связи ?
Несколько последовательных серий.print () и он висит после второго ?
Я никогда не видел этого ...
Ваша установка довольно странная !
Вы пробовали другое программное обеспечение для последовательной связи ?
Rogerclark
Пн 12 сентября 2016 г., 21:56
Интересно, является ли это бипродуктом буферизации NEE TX ?
Martinayotte
Пн 12 сентября 2016 г., 22:03
Это возможно, я еще не объединил его в среде.
Но согласно приведенному выше коду, он будет зависеть с 58 символами ...
@Phono, не могли бы вы попытаться распечатать один очень длинный отпечаток, например, чтобы увидеть, повесить, в определенной позиции ?
Но согласно приведенному выше коду, он будет зависеть с 58 символами ...
@Phono, не могли бы вы попытаться распечатать один очень длинный отпечаток, например, чтобы увидеть, повесить, в определенной позиции ?
Serial.println("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789")
Эдогальдо
Вторник 13 сентября 2016 г. 6:45
Привет, фоно, пара вопросов:
- Вы используете сериал по USART1 (с использованием USB2Serial Plet) или Serialusb (прямое соединение с USB доски)
- Какую доску вы используете?
Фоно
Вторник 13 сентября 2016 г. 6:51
Следуя вашему совету, я изменил код следующим образом:
#ifdef serial
Сериал.начало (9600);
Задержка (2000);
Сериал.Println ("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
Сериал.println ("отладка отладки" Activee ");
#еще
CanSetup ();
#endif
Ethernet.начать (Mac, ip);
#ifdef serial
Сериал.print ("инициализация клиента Ethernet");
Сериал.print ("инициализация клиента Ethernet 2,");
Сериал.println ("инициализация клиента Ethernet 3");
#endif
Я получаю следующую распечатку:
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Отладка отладки активно
Инициализация клиента Ethernet,
Примечание: есть место после последней запятой.
Это делает то же самое, если я изменюсь
Сериал.print ("инициализация клиента Ethernet");
к печати.
Я проверил, связано ли это с серийным монитором. Для этого я запустил Teraterm и настроил его для порта, в котором находится плата Maple (COM4). Я получаю точно такую же распечатку, что и выше.
Поэтому я полагаю, что проблема стоит в USB -части ядра STM32.
#ifdef serial
Сериал.начало (9600);
Задержка (2000);
Сериал.Println ("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789");
Сериал.println ("отладка отладки" Activee ");
#еще
CanSetup ();
#endif
Ethernet.начать (Mac, ip);
#ifdef serial
Сериал.print ("инициализация клиента Ethernet");
Сериал.print ("инициализация клиента Ethernet 2,");
Сериал.println ("инициализация клиента Ethernet 3");
#endif
Я получаю следующую распечатку:
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
Отладка отладки активно
Инициализация клиента Ethernet,
Примечание: есть место после последней запятой.
Это делает то же самое, если я изменюсь
Сериал.print ("инициализация клиента Ethernet");
к печати.
Я проверил, связано ли это с серийным монитором. Для этого я запустил Teraterm и настроил его для порта, в котором находится плата Maple (COM4). Я получаю точно такую же распечатку, что и выше.
Поэтому я полагаю, что проблема стоит в USB -части ядра STM32.
Эдогальдо
Вторник 13 сентября 2016 г., 7:12 утра
Привет, фоно, несколько вопросов:
- Какую доску вы используете?
- Вы используете сериал по USART1 (с использованием USB2Serial Plet) или Serialusb (прямое соединение с USB доски)?
- Если вы сделаете очень простой эскиз, как:
begin() { Serial.begin(9600); delay(2000); Serial.println("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"); Serial.println("Impression debug activee") ; Serial.print("Initialisation Client Ethernet, ") ; Serial.print("Initialisation Client Ethernet 2, ") ; Serial.println("Initialisation Client Ethernet 3") ; }
Стивестронг
Вторник 13 сентября 2016 г. 8:50 утра
Я подозреваю, что Ethernet lib. Какой контроллер Ethernet используется? ENC28 или другой тип?
Фоно
Вторник 13 сентября 2016 г., 21:02
Я использую кленовую плату Olimex STM32.
Я подключаюсь на сериале, то есть встроенный USB-сериал канал.
Я добавил щит W5200 от Seeed.
Подозрение на Ethernet.Заявление begin () было правильным. Если я перемесчу его в другое место, проблема исчезает.
В настоящее время я тестирую библиотеку Ethernet, которую я изменил, чтобы быть Freertos Aware. К сожалению, это сработало довольно хорошо назад, но теперь я застрял с регрессией, которую я не могу найти до сих пор.
Я дам вам знать, когда я добьюсь успеха, потому что я предоставлю вам эту библиотеку для возможного включения в пакет STM32.
Спасибо за вашу помощь, часто задавая неправильные вопросы, понесите правильные ответы.
Я подключаюсь на сериале, то есть встроенный USB-сериал канал.
Я добавил щит W5200 от Seeed.
Подозрение на Ethernet.Заявление begin () было правильным. Если я перемесчу его в другое место, проблема исчезает.
В настоящее время я тестирую библиотеку Ethernet, которую я изменил, чтобы быть Freertos Aware. К сожалению, это сработало довольно хорошо назад, но теперь я застрял с регрессией, которую я не могу найти до сих пор.
Я дам вам знать, когда я добьюсь успеха, потому что я предоставлю вам эту библиотеку для возможного включения в пакет STM32.
Спасибо за вашу помощь, часто задавая неправильные вопросы, понесите правильные ответы.
Фоно
Пт 16 сентября 2016 г., 7:05 утра
Я решил проблему. Тем не менее, я не знаю, что случилось и почему сейчас лучше.
Проблема возникла из двух инициализаций:
- Ethernet.начинать()
- TWOWIRE :: Begin ().
В обоих случаях, поместив эти утверждения в функцию Setup (), до создания задач и запуска планировщика, привести к неприятностям.
Я поставил их в начале двух разных задач, до того, как (правдивый) заявление, и сейчас нет проблем.
Что касается библиотеки Ethernet, это может иметь смысл, так как я изменил ее, чтобы задержка () была заменена vtaskdelay () при использовании в многозадачной среде, хотя я тщательно проверял, что begin () не вызывает задержку ().
Для TwoWire :: Begin () Я нахожусь в конце моего остроумия, так как эта функция делает очень мало:
void twowire :: begin (uint8 self_addr) {
tx_buf_idx = 0;
tx_buf_overflow = false;
rx_buf_idx = 0;
rx_buf_len = 0;
Pinmode (это->scl_pin, output_open_drain);
Pinmode (это->sda_pin, output_open_drain);
set_scl (High);
set_sda (High);
}
Конечно, проволочный объект был правильно определен:
TwoWire maitrei2c (i2c_scl, i2c_sda);
Я попытался вставить в настройку () последние четыре утверждения напрямую, и не возникли проблем:
pinmode (i2c_scl, output_open_drain);
pinmode (i2c_sda, output_open_drain);
Двойной.set_scl (High);
Двойной.set_sda (High);
Эффект размещения maitrei2c.Begin () в Setup () был тем, что одна из двух моих задач, которые обрабатывают щит Ethernet.
В частности, одна задача подключается к внешнему TCP -серверу, а другая задача - веб -сервер. Это был веб -сервер, который не отвечал бы на попытки подключения из моего браузера, хотя задача, которая выполняет его все еще выполняется.
Я рад, что сейчас работает, но все еще нервничает в том, в чем была проблема, и как управлять, чтобы она не показывалась позже позже?
Проблема возникла из двух инициализаций:
- Ethernet.начинать()
- TWOWIRE :: Begin ().
В обоих случаях, поместив эти утверждения в функцию Setup (), до создания задач и запуска планировщика, привести к неприятностям.
Я поставил их в начале двух разных задач, до того, как (правдивый) заявление, и сейчас нет проблем.
Что касается библиотеки Ethernet, это может иметь смысл, так как я изменил ее, чтобы задержка () была заменена vtaskdelay () при использовании в многозадачной среде, хотя я тщательно проверял, что begin () не вызывает задержку ().
Для TwoWire :: Begin () Я нахожусь в конце моего остроумия, так как эта функция делает очень мало:
void twowire :: begin (uint8 self_addr) {
tx_buf_idx = 0;
tx_buf_overflow = false;
rx_buf_idx = 0;
rx_buf_len = 0;
Pinmode (это->scl_pin, output_open_drain);
Pinmode (это->sda_pin, output_open_drain);
set_scl (High);
set_sda (High);
}
Конечно, проволочный объект был правильно определен:
TwoWire maitrei2c (i2c_scl, i2c_sda);
Я попытался вставить в настройку () последние четыре утверждения напрямую, и не возникли проблем:
pinmode (i2c_scl, output_open_drain);
pinmode (i2c_sda, output_open_drain);
Двойной.set_scl (High);
Двойной.set_sda (High);
Эффект размещения maitrei2c.Begin () в Setup () был тем, что одна из двух моих задач, которые обрабатывают щит Ethernet.
В частности, одна задача подключается к внешнему TCP -серверу, а другая задача - веб -сервер. Это был веб -сервер, который не отвечал бы на попытки подключения из моего браузера, хотя задача, которая выполняет его все еще выполняется.
Я рад, что сейчас работает, но все еще нервничает в том, в чем была проблема, и как управлять, чтобы она не показывалась позже позже?