Тема: Усилитель
Показать сообщение отдельно
Старый 23.07.2017, 01:19   #264
sheff
Пользователь
 
Регистрация: 02.03.2015
Сообщений: 59
По умолчанию Re: Усилитель

Спасибо всем за ответы

На безрыбье поделюсь наблюдениями
Приехало ко мне некое количество контроллеров.
Даже две посылки, после того как моя предыдущая потерялась у финнов (ждал 3 мес, а надо было после трех недель поднимать вопрос ), itead выслали повторно и я еще через пару дней купил у них же еще немного, доплатив за доставку Airmail. В итоге, обе посылки пришли одновременно, так что не платите лишнего Три недели и там и там. Но я не об этом.

Я подключил 6 плат, а чип у itead такой же как и у olimexino - RBT6.
Прошил их кодом Михаила до редакции AVi.
Замигали они синхронно.
И только через несколько часов из 6 плат две-три "оторвались от коллектива" и стали чуть-чуть (на 1-3 секунды) отставать или спешить, не помню, но то что они в точности повторяли рисунок вспышек остальных - это точно.

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

Три платки оставляю непрошитыми, три платки - прошил.
Рисунок миганий совершенно одинаков. И у пофиксенных и у непофиксенных.

Иду по ссылке AVi на страницу спецификации на Maple Mini (STM32F103RCBT6).
Нахожу на том же сайте аналогичную страничку для рекомендованной Михаилом полной Maple:
http://docs.leaflabs.com/static.leaf...are/maple.html
По табличке выясняется, что нулевой пин может быть аналоговым, как, впрочем, и третий, т.е. оба варианта рабочие, и менять код для STM32F103RBT6 не надо.

Теперь надо «врубиться», это правильный рисунок миганий или нет.
Вроде как работа программы должна зависеть от некой температуры.

Я спрашивал здесь сообщением выше, где же термодатчик, но что то желающих ответить не нашлось
Гугл тоже не помог, я так и не понял, есть ли термометр на плате

Я далек от программирования STM32, поэтому я просто халявно проглядел глазами код, и что-то не нашел тех или иных строк, которые сопоставляли бы встроенный незнамо куда термодатчик с нулевым пином или третьим (мы же его поменяли, но не сказали - "термометр, перепрыгни" )

Ладно, может я просто в этой системе не понимаю ничего, может по умолчанию термометр сам липнет на все свободные пины? А может там "магическая привязка"?

Вы будете "ржать", но я принес фен (да, самому смешно), нагрел одну платку с 25 до 45, разумеется, ничего не поменялось Нагрел вторую, которая analogRead(3), безрезультатно. Мигают так же синхронно. А как иначе то Но как бы жизнь на ММ/ОМ/QM приучила к чудесам, а вдруг?

Ладно, ок. Идем дальше.

У меня 6 плат подключено. В два USB блока питания, на каждом по три разъема.
Причем, что интересно, на одном БП стабильный синхрон, на другом - совсем небольшой рассинхрон в сравнении с первым БП.

Менял платки, думал - просто экземпляры разные... нет, дело не в них.
Менял местами БП, думал, они виноваты... нет, дело не в них.

Методом тыка выяснилось, что виноват... кабель питания USB.
Там, где все синхронно, я использовал 30-сантиметровые, толстые, с приличным экраном, кабеля.
Там где был незначительный рассинхрон в 1-3 секунды по прошествии нескольких часов, были 75-сантиметровые, тонкие, с тонкими разъемами, кабеля.

Я так понимаю, что если к порту ничего не подключено, там электрические наводки выдают случайное число по analogRead().
Причем, в каком диапазоне это происходит - я не знаю.
На АЦП то есть 1024 значения, как я понимаю, но для этого надо, чтобы и напряжение менялось, например, от 0 до 5 вольт. А какой разброс значений дают помехи – это большой вопрос...
Нам, чтобы получить реальный "случайный процесс", нужно назначить пину термометр, да еще скорректировать его значения так, чтобы даже комнатная температура давала большой разброс на АЦП...

Либо просто "забить", ибо, если работает у Михаила, значит, работает и у нас. Тем более, что ряд псевдослучайных чисел в контроллере достаточно длинный. Впрочем, есть вероятность, что на компьютере Михаила по умолчанию сконфигурировано, что на нулевой пин вешается термометр

Короче, топаю в дата-шит, а там написано:
The temperature sensor is internally connected to the ADC12_IN16 input channel
Это даташит по STM32F103x8 / STM32F103xB. Я подробно не читал, но могу предположить, что термометр есть на всех F103
Топаем снова в описание платы, там в табличке Master Pin Map написано, что на D17 как раз и висит CH12:
http://docs.leaflabs.com/static.leaf...are/maple.html
К сожалению, я поменял пин на 17 (там где мы меняли 0 на 3), но это не помогло
Плата мигала также как и ее коллеги
В принципе, я должен был увидеть сразу же результат, так как АЦП 10битный, если вообще не 12битный, но я все же феном прошелся, и безуспешно.

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

Поставил вместо 17 пина наугад девятый, который нельзя перевести в аналоговый, чтобы разыграть ситуацию в как 242 сообщении. Думаю, вы уже догадались, что плата весело и жизнерадостно мигала также как и другие
У maplemini на STM32F103RCBT6 – я не знаю, какой пин отвечает за термометр. ADC12 там нет, а datasheet я не нашел.

Короче, до настоящего момента ВСЕ мои телодвижения ничего не изменили.
Поэтому как именно форумчане чувствовали что-то при замене «0» на «3» на плате - я пока этого понять не могу, платы ведут себя совершенно одинаково.

Короче, это все мне надоело, примеров чтения с внутреннего термометра я влет не нашел, так что тупо поступил следующим образом. Так как помехи на портах небольшие, а на хорошей платке за 20 евро может их вообще по минимуму, то я просто тупо увеличил в 100 раз значение, приходящее с АЦП свободного порта: randomSeed(analogRead(0)*100); И платки начали мигать совершенно несинхронно. Насколько это правильно – не знаю, буду рад, если кто-нибудь все же считает эти долбаные значения с термометра.
sheff вне форума   Ответить с цитированием