Keroronsk
31.05.2017
15:26:43
и лежит в систем мемори, как и штатый бутлодер
Serg
31.05.2017
16:11:45
Injected current может возникнуть когда ток потечет через защитный диод?
непонятно когда возникнет этот Injected current больше 0, при входном больше 5В на сколько?
Google
Firelander
31.05.2017
17:08:36
Может имеется ввиду когда потенциал опускается ниже нуля
Serg
31.05.2017
17:30:54
Injected current on five-volt tolerant I/O: -5/0
ниже 0 - это до -5 мА
а выше чего нельзя?
Dmitry
31.05.2017
19:31:49
То есть, когда вывод тянет вниз
Martin
01.06.2017
06:22:29
процессор stm32f105, поднят USB CDC Vitrual com port, возможно ли эмулировать на нем сигнал наличия несущей DCD?
Danil
01.06.2017
06:39:47
дык это зависит от реализации софта в стм и в драйвере VCP. сам класс CDC поддерживает все сигналы же
Martin
01.06.2017
06:51:17
я нагуглил SERIAL_STATE нотификация
она типо реализует сигнал DCD
а в каком месте и вообще как я должен эту нотификацию реализовать
kiltum
01.06.2017
07:54:56
Если не ошибаюсь, там прямо в коде драйвера стоят функции-заглушки. Рядом с функцией установки скорости порта. Точнее не посмотрю - не за компом.
Martin
01.06.2017
08:00:13
В виндовом inf?
Google
Martin
01.06.2017
08:00:25
Или в коде мк?
Danil
01.06.2017
08:34:01
в коде МК вы должны обрабатывать посылки от драйвера ПК для доп сигналов и реализовывать например дрыгание пинов соответственно. В драйвере на ПК должны быть функции, реализующие пепедачу и запрос от МК состояния доп сигналов Сом-порта
Т. е. из приложения на винде дергается напримеи DTR или читается DCD. Драйвер формирует запрос на МК, а софт в МК реализует эти сигналы в железе уже
http://janaxelson.com/usb_virtual_com_port.htm
тут есть про реализацию. SET_CONTROL_LINE_STATE и SERIAL_STATE
это то что тебе нужно как раз
Martin
01.06.2017
08:45:02
DTR есть set_control_line_state запрос, я его ловлю и обрабатываю
а вот serial_state где я должен посылать
Danil
01.06.2017
08:45:46
CD идет в SERIAL_STATE запросе
запрос от драйвера, отвечает МК
Martin
01.06.2017
08:47:59
дело в том что в документации на SET_CONTROL_LINE_STATE и SERIAL_STATE одинаковый байт запроса 0x20
Danil
01.06.2017
08:48:02
в дефолтном приере VCP все это не реализовано. Только прием и передача вроде. Даже скорости и четность не обрабатываются. Но если устройство не адаптер USB-RS-232 то это и не нужно же
Martin
01.06.2017
08:48:28
скорость и четность обрабатывается
Danil
01.06.2017
08:48:34
по ссылке выше нет 0x20 и 0х22
ну когда обмен терминируется внутри МК, то смысла в скорости и четности нет, как впрочем и в обработке доп сигналов. Только если делаешь адаптер (но нахуя, когда есть готовые ftdi и prolific) или делаешь эмуляцию старого железа под старый же софт - это всегда попоболь х2
Ibh
02.06.2017
19:33:25
http://www.ti.com/lit/an/swra351a/swra351a.pdf #Antenna_Selection_Quick_Guide годный листик с выбором PCB антен
Proton
03.06.2017
09:57:18
Всем приветы!!
Может кто сталкивался с проблемками на внешних прерываниях. У меня камни STM32F103RB и STM32F103C8, хочу запилить внешние прерывания, но что-то не работает, даже в обработчик прерывания не впадает. Код тут https://hastebin.com/oyagetizep.php
Danil
03.06.2017
10:26:43
Смотрите примеры которые идут с SPL или HAL - там все просто как 2х2. На внешние пины есть несколько обработчиков по группам пинов. Грабли в том, что нельзя если настроить прерывания на одинаковые пины разных портов, например РА1 и РВ1, то вызыватся будет одно и то же прерывание и определять какой пин сработал надо будет вручную.
Вадно включить и сконфигурировать NVIC на преривание EXTI
Google
Danil
03.06.2017
10:27:28
и так же само прерывание тоже включить
Maxim
03.06.2017
10:28:36
Proton
03.06.2017
10:28:44
Я всё это знаю, так и сделал, но не хочу делать через SPL или HAL. Есть идеи по моему коду?
Danil
03.06.2017
10:28:55
не только в стм кстати
Proton
03.06.2017
10:31:15
Я и доки перечитал, и статьи, и форумы. Код перед вами, он не работает. Конфигурировал на разные порты и пины, но увы
Maxim
03.06.2017
10:32:09
Не работает - это просто контроллер игнорит прерывание, или виснет/падает в HardFault после него?
Danil
03.06.2017
10:32:37
некогда читать твой код, да и с мобилы неудобно
делай дебаг по шагам. ставь бряк в обработчике прерывания. если сваливается в хардфолт, то вполне вероятно неправильно назван обработчик прерывания - какими библиотеками пользуешься? cmsis, spl, hal, opencm3?
Proton
03.06.2017
10:34:42
Danil
03.06.2017
10:35:28
Тогда скорее всего неправильно заводишь NVIC, или таки не включил прерывание на пин
Maxim
03.06.2017
10:35:33
Если это плюсы, кстати, то проблема может быть в отсутствии extern "C" у обработчиков
Danil
03.06.2017
10:36:40
внешние прерывания у стм32 самые простые же
Proton
03.06.2017
10:36:48
Это обычный С, что неправильного в заведении NVIC?
Да я не спорю, что простые, но не работают
Danil
03.06.2017
10:37:27
тактирование портовл или AFIO забыл
Богдан
03.06.2017
10:37:54
Proton
03.06.2017
10:40:03
Вы сами у себя отнимаете время вместо того, чтобы пройти по ссылке и увеличить код.
В мэйне я объявил функцию конфигурации прерывания.
Danil
03.06.2017
10:45:23
Тут тебе как бэ никто ничего не должен - тебе намекнули куда копать, а ты тут требуешь чтобы твой код читали. Не дохуяли вам надо, сударь?
Proton
03.06.2017
10:48:27
Я не требую и попрошу без мата, вам я не хамил, мьсе. Мы здесь собрались для обсуждения и взаимопомощи, я понимаю, что мне никто ничего не должен, но я люблю разговоры по факту, а не пальцем в небо. Я не просто выдрал откуда-то код и задаю вопрос, я над ним и документацией по этой теме сидел неделю, так что извольте дать дельный совет, если вы знаете, куда копать, если не знаете, не засоряйте эфир. Спасибо за внимание.
Google
Богдан
03.06.2017
10:52:00
Я не требую и попрошу без мата, вам я не хамил, мьсе. Мы здесь собрались для обсуждения и взаимопомощи, я понимаю, что мне никто ничего не должен, но я люблю разговоры по факту, а не пальцем в небо. Я не просто выдрал откуда-то код и задаю вопрос, я над ним и документацией по этой теме сидел неделю, так что извольте дать дельный совет, если вы знаете, куда копать, если не знаете, не засоряйте эфир. Спасибо за внимание.
Тебе дали дельный совет - открывай пример от spl, hal по использованию внешнего прерывания, смотри какие функции вызываются, смотри в какие регистры в них пишутся и сопоставь со своим кодом. Я бы поступил именно так. Это быстро, несложно - осталось только попробовать.
Danil
03.06.2017
10:52:45
дали уже три совета: #1 запустить отладку; #2 проверить правильность имени обработчика прерываний; #3 проверить правильность инициализации прерывания на пинах - ориентируясь на примеры SPL или HAL, т. к. внутри там внезапно чистый CMSIS и запись в регистры.
Maxim
03.06.2017
10:53:41
#4 проверить тактирование
Proton
03.06.2017
10:55:30
#1 Я бы это давно уже сделал, но IAR сбрасывает мои брекпоинты по каким-то своим мировоззрениям
#2 Проверил
#3 Сверялся с SPL
#4 Проверено другими интерфейсами, конкретно прерывания не пашут
Богдан
03.06.2017
10:58:37
Еще как минимум стоит проверить - а попадает ли на пин само внешнее воздействие? Физический контакт, верный пин
Proton
03.06.2017
11:13:17
Я это руками делаю.
Как я уже писал, проверял на разных портах и пинах. Обычная реакция в while(1) есть, а через прерывание - нет
Danil
03.06.2017
11:15:45
значит не работает NVIC
Proton
03.06.2017
11:26:59
Почему? )
Danil
03.06.2017
11:38:11
потому что без NVIC ни одно прерывание не сработает, а если он включен и нет обработчика, то упадет в хардфолт или ресет
Proton
03.06.2017
11:41:02
// Разрешаем прерывания
uint32_t prioritygroup = NVIC_GetPriorityGrouping();
uint32_t priority = NVIC_EncodePriority(prioritygroup, 1, 0 );
NVIC_SetPriority(EXTI9_5_IRQn, priority);
NVIC_EnableIRQ(EXTI9_5_IRQn);
// Разрешаем глобальные прерывания
__enable_irq();
Вроде всё кошерно..
Да и даже без мудрёной очереди приоритетов результат тот же
Th0r
03.06.2017
11:42:42
Proton
03.06.2017
11:43:58
Не
Всё сбрасываю цивильно
Я не попадаю в обработчик прерывания
Богдан
03.06.2017
11:58:32
А как ты понимаешь что не попадаешь в обработчик?
metaclass
03.06.2017
11:58:39
имя разработчика с weak прототипом в либе совпадает?
опечаток нет?
Богдан
03.06.2017
11:59:27
Google
metaclass
03.06.2017
11:59:29
такс, кажется нет.
да
я уже посмотрел
Proton
03.06.2017
12:01:43
Я в обработчике зажигаю светодиоды. Точнее они должны гореть, но увы. Осциллограф подключал, никаких скачков на тех пинах даже нет
metaclass
03.06.2017
12:02:12
клок для gpio поразрешал же?
т.е. если из мейна зажечь диод - он включается?
Богдан
03.06.2017
12:02:57
Proton
03.06.2017
12:04:18
В мэйне я настраиваю пины, они работают отлично без прерывания.
Danil
03.06.2017
12:07:00
другие прерывания работают вообще? таймер например заведи
Proton
03.06.2017
12:19:45
Эх
metaclass
03.06.2017
12:21:16
надо посмотреть на живом контроллере. с ходу непонятно.
правда у меня libopencm3 вместо cmsis и прочего :)
Богдан
03.06.2017
12:25:16
metaclass
03.06.2017
12:25:48
надо глянуть, с виду отличается.
такс, на exti0 все работает
надо попробовать переселить на этот exti9
а там вообще если input_float - внешняя ж подтяжка нужна?
да все работает собственно.
повесил на exti9_5 переключение частоты таймера-мигалки