[Решенные] проблемы в рутине прерывания таймера

Сказки фон Мил
Пн 30 октября 2017 г., 19:27
Мойн Мойн,
ich habe da ein kleines Проблема. Index wird in der handler_servos nicht 0. sie fängt scheinbar Immer bei 1 an.
iche sehe da aber keinen fehler.
У меня есть небольшая проблема. Индекс не получает 0 в handler_servos, он всегда начинается с 1.
Но я не вижу никаких ошибок.
ModemManager: Couldn't create modem for device at '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1': Failed to find primary AT port

Стивестронг
Вт 31 октября 2017 г. 8:24
Я переместил тему, так как речь шла не о PRS, ошибках, ни об улучшениях.

Вам не хватает стандартной начальной и окончательной части: ModemManager: Couldn't create modem for device at '/sys/devices/pci0000:00/0000:00:14.0/usb1/1-1': Failed to find primary AT port

Сказки фон Мил
Ср. 01 ноября 2017 г. 11:54
Спасибо, что переместили сообщение.
таймер2.пауза & резюме не решает проблему, но, к сожалению,.

Стивестронг
Ср. 01 ноября 2017 г. 15:09
Вы должны сказать нам, что именно должен делать эскиз.

Кстати:
- Вы должны запустить таймер, в противном случае прерывание не будет работать или, может быть, один раз, поэтому индекс не будет увеличиваться более одного раза.
- Вы не должны использовать прерывание канала 1, вы можете использовать прерывание события обновления счетчика: ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0004", ENV{ID_MM_DEVICE_IGNORE}="1"

Сказки фон Мил
Ср. 01 ноября 2017 г. 16:47
Мойн Мойн,

Я запрограммировал тот же процесс в Arduino Nano. Там программное обеспечение работает без ошибок. Индекс переменной обрабатывается от 0 до indexmax.
Но для STM32 индекс переменной используется только от 1 до indexmax.

Timer2 начинается правильно, но когда index == indexmax это должен быть index = 0, но это 1.
Это выход STM32
https: // www.Dropbox.com/s/y93ga186qai31 ... 6.JPG?dl = 0
И этот arduino nano
https: // www.Dropbox.com/s/q8f0pscddlf4e ... 8.JPG?dl = 0

Rogerclark
Ср. 01 ноября 2017 г., 21:07
Пожалуйста, объясните, чего вы пытаетесь достичь.

Обратный инженерный код, код ELSES очень тяжелый и трудоемкий, и никто не имеет много свободного времени в настоящее время, поэтому, если вы не облегчаете жизнь людей, они вряд ли смогут помочь

Zoomx
Чт, 02 ноября 2017 г. 9:38 утра
Я понимаю, что после SPI_MODE3 | SPI_CR1_BIDIMOD

Сказки фон Мил
Чт, 02 ноября 2017 г. 13:40
Мойн Мойн,
Я изменил процедуру так: SPI.beginTransactionSlave(SPISettings(20000, MSBFIRST , SPI_MODE3 | SPI_CR1_BIDIMODE, DATA_SIZE_8BIT));

Стивестронг
Чт, 02 ноября 2017 г. 14:13
[Сказки фон Мил - Чт, 02 ноября 2017 г. 13:40] - это не решение.
Чтобы узнать решение, мы должны сначала сначала теперь, чего вы хотите достичь.

Вы хотите контролировать сервоприводы? Использование одного таймера?
Как должны выглядеть сигналы управления? Как на картинке Arduino Nano, опубликованного выше? Есть только 2 сигнала.
Вы хотите контролировать больше сервоприводов? Сколько?
Вы ограничены выводом сигналов на выводах, которые вы объявлены в своем программном обеспечении или можете их изменить?
Потому что есть некоторые булавки, которые выходные сигналы сигнализируют непосредственно из таймеров, поэтому не нужно переключать некоторые другие булавки.
Должны ли контрольные сигналы коррелировать в фазе? В противном случае можно было бы использовать до 4 таймеров, генерирующих сигналы ШИМ с различным рабочим циклом.

Какую доску вы используете?
Какое ядро ​​вы используете? (Как вы установили программное обеспечение STM32?)
Вы используете Arduino IDE?

Сказки фон Мил
Чт, 02 ноября 2017 г. 18:09
Мойн Мойн,
Вы хотите контролировать сервоприводы? Использование одного таймера? Да
Как должны выглядеть сигналы управления? Как на картинке Arduino Nano, опубликованного выше? Есть только 2 сигнала. Да
Вы хотите контролировать больше сервоприводов? Сколько? Да, 11 для роботерурдов и ног
Вы ограничены выводом сигналов на выводах, которые вы объявлены в своем программном обеспечении или можете их изменить? Я могу изменить эту булавку
Потому что есть некоторые булавки, которые выходные сигналы сигнализируют непосредственно из таймеров, поэтому не нужно переключать некоторые другие булавки. Я знаю это
Должны ли контрольные сигналы коррелировать в фазе? В противном случае можно было бы использовать до 4 таймеров, генерирующих сигналы ШИМ с различным рабочим циклом. Я знаю это

Какую доску вы используете? Stm32-Maple Mini
Какое ядро ​​вы используете? (Как вы установили программное обеспечение STM32?) STM32F103C8T6 Оптимизировать Aller Version Testet
Вы используете Arduino IDE? Да, v.1.8.4

Этот проект работает с одним нано на руку или ногу. Я пытаюсь перенести это в STM32.
Но STM32 делает Crazzy Things.

Стивестронг
Чт, 02 ноября 2017 г., 18:30
Проверьте это.
Я протестировал это, и, кажется, работает.
Вам не хватало функции обновления таймера. /* Example of calling an assmebler function from C, based on * code examples by Harald Kipp * http://www.ethernut.de/en/documents/arm-inline-asm.html */ unsigned long ByteSwap(unsigned long val) { asm volatile ( "eor r3, %1, %1, ror #16\n\t" "bic r3, r3, #0x00FF0000\n\t" "mov %0, %1, ror #8\n\t" "eor %0, %0, r3, lsr #8" : "=r" (val) : "0"(val) : "r3" ); return val; } void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: Serial.println(ByteSwap((unsigned long)0x12345678),HEX); delay(1000); }

Сказки фон Мил
Чт, 02 ноября 2017 г. 18:52
Мойн Мойн,
Спасибо, теперь это работает
В чем разница между таймером2.резюме и таймер2.обновлять?
Есть ли вики для таймеров?

Стивестронг
Чт, 02 ноября 2017 г., 19:00
Вот официальная документация: http: // docs.Leaflabs.com/static.Leaflab ... Дваретимер

Пожалуйста, отметьте тему как [решены], если теперь все в порядке.

Кстати, все ваши переменные - тип «int», что означает 32 -битный подписанный.
Вы уверены, что вы хотите? Я предлагаю использовать «uint8_t» или «uint16_t», где когда -либо есть смысл, просто чтобы сигнализировать их пределы.
Кроме того, нет необходимости делать все переменные «нестабильными», потому что они используются только в ISR.
Массив W [], который, я думаю, изменит значения в основном цикле, также может оставаться нелетучим.
STM32_MultiservoControl.Ино
(1.98 киб) скачано 145 раз