Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Real Time Counter (RTC) проблема

1853  1 2 все
  moose коренной житель18.03.20 12:04
NEW 18.03.20 12:04 
в ответ moose 13.03.20 21:07

может кто с такой проблемой поможет. чип - nRF51 (Nordic Semiconductor). я его радио не использую вообще, просто был под рукой и мало в system off потребляет. к тому же - супер-документирован. единственное, процессор М0, но обходимся.


проблема такая. конфигурирую для gpio:

input

buffer connect

pulldown

sense high

port enable


хочу его через этот пин будить после WFE. в качестве сенсоров хочу вот эти штучки использовать



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

причем я это уже проделывал когда-то, но не могу найти, как я тогда сконфигурировал пин. кажется, так же, но почему-то не работает : (


#21 
VSN прохожий19.03.20 19:31
NEW 19.03.20 19:31 
в ответ moose 18.03.20 12:04

Думаю, что пин сконфигурирован на выход. Или какая-то периферия автоматом переключает пин на выход. Надо замерить ток сработки от источника. Если он равен единицы-десятки мА, то это выход.

#22 
  moose коренной житель19.03.20 20:14
NEW 19.03.20 20:14 
в ответ VSN 19.03.20 19:31

не думаю, что на выход. было бы слишком хорошо.

потому что, касаясь туда плюсом источника питания, все срабатывает правильно. такое впечатление, что дивайс-источник пина "недодрайвивает". хотя раньше все было как надо. сегодня сваял файл, который ничего больше не делает, кроме как ждет сигнала на пине и зажигает светодиод. опять же все красиво, если подать "сигнал" с батареи. сенсор отдельно от всего работает без проблем. включенный в эту схему - никак. когда разберусь - обязательно сообщу, что я напартачил. но любые подсказки/догадки будут полезны! поэтому - спасибо!

#23 
VSN прохожий19.03.20 23:08
NEW 19.03.20 23:08 
в ответ moose 19.03.20 20:14

Если уверены в регистре DIR, то следует понять тип выхода датчика. Чаще всего он бывает Открытый Коллектор, т.е. NPN типа. А это значит, что вход надо делать PULL UP, и проверять минусом источника.

#24 
  moose коренной житель20.03.20 11:14
NEW 20.03.20 11:14 
в ответ VSN 19.03.20 23:08, Последний раз изменено 20.03.20 13:35 (moose)

думаю, там биполярного на платке датчика ничего нет, все mosfet. но дело не в том. датчик (оба: и движения, и близости) работают так, что в отсутствие сигнала на выходе земля, а при активном сигнале - высокий уровень. и они автономно так и работают. а когда подключаешь а пину, на нем всегда нулевой потенциал. там даже пулл-резистор не нужен, т.к. выход датчика никогда не "плавает", там всегда четко или ноль или высокий.


да, еще интересный момент. на платке этого touch-key светодиодик имеется, который загорается, если к нему палец или что-то поднести. стоит только посадить его на пин - светодиодик гаснет.

#25 
  moose коренной житель20.03.20 20:27
NEW 20.03.20 20:27 
в ответ moose 20.03.20 11:14

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


но зато новая проблема : ) даже две.


проблема - нехилое потребление тока этими датчиками. движения потребляет еще терпимо, но ему (тому что на картинке) не хватает силы качнуть пин. датчик от панасоника работает чудесно. то стоит десятку. жлобно, но что поделаешь.

тач-сенсор работает чудесно, но жрет в стэндбае 1 мА, хотя по документу чипа, там применяемого, должно быть не более 3 или 5 мкА. попробую на плате поколдовать, обрезать эту светодиодную цепь, больше там ничего вообще не вижу. какая-то емкость еще. но емкость ток, насколько знаю, не потребляет.

#26 
  moose коренной житель12.04.20 17:22
NEW 12.04.20 17:22 
в ответ moose 20.03.20 20:27

chip: blue pill stm32f103.

on board rtc. пытаюсь получить прерывание от него раз в секунду. для контроля переключаю его светодиод (gpio 13). мигает однако раз в десять чаще, чем раз в секунду. prescaler установил на 0x7FFF, наибольшее что можно записать в его RTC_PRLL регистр. и так это соответствует описанию. в дибаггере вижу, что значение counter'а (RTC_CNTL) меняется где-то каждую секунду, но прерввания генерируются гораздо чаще.

если у кого идеи имеются - пожалуйста сюда.

#27 
Wanderer_ завсегдатай13.04.20 00:21
NEW 13.04.20 00:21 
в ответ moose 12.04.20 17:22
on board rtc. пытаюсь получить прерывание от него раз в секунду. для контроля переключаю его светодиод

Частота входная (input clock frequency) какая?

Должна быть 32,768kHz ,чтобы получить период в одну секунду.

#28 
  moose коренной житель13.04.20 10:26
NEW 13.04.20 10:26 
в ответ Wanderer_ 13.04.20 00:21

такой кварц там и стоит. все сделал "по учебнику", уже пробовал больший прискэйлэр задавать в разы, все равно мигает как бешеный

#29 
  moose коренной житель13.04.20 16:31
NEW 13.04.20 16:31 
в ответ moose 13.04.20 10:26

нашел. в который раз убеждаюсь: чудес не бывает, нужно просто быть внимательнее : )

#30 
Wanderer_ завсегдатай13.04.20 18:56
NEW 13.04.20 18:56 
в ответ moose 13.04.20 10:26
такой кварц там и стоит. все сделал "по учебнику", уже пробовал больший прискэйлэр задавать в разы, все равно мигает как бешеный

Там вроде два кварца, Не тот использовали?

#31 
  moose коренной житель13.04.20 21:05
NEW 13.04.20 21:05 
в ответ Wanderer_ 13.04.20 18:56

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

#32 
1 2 все