Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

kvn234, Вас в гугле забанили?
https://www.google.com/search?client=fi ... d&q=AN3137
Не открывается?
Реклама
Мучитель микросхем
Сообщения: 418
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Сообщение kvn234 »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167582#p4167582"]kvn234, Вас в гугле забанили?
https://www.google.com/search?client=fi ... d&q=AN3137
Не открывается?[/uquote]

Кроме ссылке на AN3137, ни какой конкретике.
Посмотрите мои исходники (если Вы разбираетесь в программировании STM8), что там не так.
Реклама
Мудрый кот
Сообщения: 1856
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="kvn234",url="/forum/viewtopic.php?p=4167546#p4167546"]Но если показания Vref стабильные, разве это не говорит о стабильности питания?[/uquote]Нет не говорит. У вас один канал - стабилен, другие - нет. Т.е. - возможно проблема с коммутацией каналов в последовательности преобразований разных каналов.
Я предлагаю проверить случай с несколькими каналами, только внутренними (чтобы дополнительно отсечь проблемы с ногами).
Так же можно изменить порядок последовательности каналов; проверить стабильность при чтении только одного канала и т.д.

Добавлено after 5 minutes 33 seconds:
[uquote="kvn234",url="/forum/viewtopic.php?p=4167546#p4167546"]В интернете много информации но не всегда знаешь где искать нужную. Прочитал данную тему 90% общих рассуждений и сообщений "кто круче".[/uquote]Не надо копаться в той куче. Для программирования STM8L151 достаточно 2-х документов: "datasheet STM8L151" и "reference manual RM0031". Ну иногда ещё может errata.
Мучитель микросхем
Сообщения: 418
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Сообщение kvn234 »

[uquote="jcxz",url="/forum/viewtopic.php?p=4167643#p4167643"][uquote="kvn234",url="/forum/viewtopic.php?p=4167546#p4167546"]Но если показания Vref стабильные, разве это не говорит о стабильности питания?[/uquote]Нет не говорит. У вас один канал - стабилен, другие - нет. Т.е. - возможно проблема с коммутацией каналов в последовательности преобразований разных каналов.[/uquote]

reference manual RM0031 читал.
Как я понимаю.
У ADC нет отдельного питания и питание подается с ножки питания микроконтроллера(МК).
В МК имеется ИОН к которому можно подключить внутренний канал ADC_IN VREFINT (Vref).
При изготовлении МК в VREFINT_Factory_CONV byte ((uint8_t *)0x4910) записывается значение ADC при подключении ИОН при подачи питания на МК 3000мв +- допуск.
Соответственно измеряя Vref и зная VREFINT_Factory_CONV мы можем вычислить напряжение питания и если измерения Vref стабильны то можно сделать вывод о стабильности питания.

А в чем могут быть проблемы с MUX. Что внутренний, что внешние каналы заведены на один MUX. И я не случайно указал, что 4 внешних канал подключены к батарейке. Это чтобы не было разговора о необходимости подключения к источнику с малым выходным сопротивлением.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

kvn234, Да скачайте, наконец, исходники. предоставляемые производителем. Вот если с ними ситуацию не удастся исправить - тогда уже спрашивайте здесь.
Реклама
Мучитель микросхем
Сообщения: 418
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Сообщение kvn234 »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167714#p4167714"]kvn234, Да скачайте, наконец, исходники. предоставляемые производителем. Вот если с ними ситуацию не удастся исправить - тогда уже спрашивайте здесь.[/uquote]

Скачал, что дальше? Что касается моего вопроса о не стабильности измерений?
Там столько наворочено, какое отношение к моему вопросу имеет LCD?
Если Вы разбираетесь в вопросах программирования STM8 укажите какой кусок исходника мне посмотреть.

Может Вы, чтобы заболтать вопрос, посоветуйте мне скачать и проанализировать исходники Windows или еще чего ни будь.

Я уже писал, какие у Вас замечания к моим функциям?
Реклама
Мудрый кот
Сообщения: 1856
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="kvn234",url="/forum/viewtopic.php?p=4167735#p4167735"]Я уже писал, какие у Вас замечания к моим функциям?[/uquote]Функции написаны красиво - спору нет. Только толку от них столько же, что от исходников винды, на которые вы ссылаетесь.
Мучитель микросхем
Сообщения: 418
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Сообщение kvn234 »

[uquote="jcxz",url="/forum/viewtopic.php?p=4167739#p4167739"][uquote="kvn234",url="/forum/viewtopic.php?p=4167735#p4167735"]Я уже писал, какие у Вас замечания к моим функциям?[/uquote]Функции написаны красиво - спору нет. Только толку от них столько же, что от исходников винды, на которые вы ссылаетесь.[/uquote]
В чем красота? Насколько я разобрался в регистрах ADC это необходимые функции для инициализации и одиночного чтения.
Я их привел не для того чтобы кто то восхищался красотой, а привел критические замечания или предложения.
Возможно я что то упустил и показания скачут. Вначале хотелось получить более или менее стабильные показания, ну а затем применить обработку среднее, медианное ...
Мне бы хотелось получить ответ от человека практически применившего 12 разрядное ADC STM8L151, насколько стабильны показания и имеет ли смысл использовать данный ADC, а не упражняться в словоблудии и кто круче.

Прорабатываю вариант использования STM8L151 с 12разрядными ADC и DAC в универсальном зарядном устройстве.
Имеются два ЗУ одно с INA226 ATMega32 второе с ADS1115 ATMega 328 NANO и внешнее DAC.
Хочу попробовать упростить и сделать на STM8L151 с 12разрядными ADC и DAC или аналогичном STM32.

ЗЫ Зарядка универсальная. В памяти может хранить до 32 алгоритма и при необходимости загружать любые алгоритмы зарядки. Ведется запись зарядки напряжение, ток, температура в течении недели.
Процесс зарядки можно контролировать по WiFi (время, напряжение, токи, температура (в виде графиков и значений), емкость , положение коммутаций). Ну и т.д
Мудрый кот
Сообщения: 1856
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="kvn234",url="/forum/viewtopic.php?p=4167783#p4167783"]Я их привел не для того чтобы кто то восхищался красотой, а привел критические замечания или предложения.[/uquote]Какие "практические замечания" вы ожидаете услышать, не приведя код инициализации? Здесь нет ясновидящих, кто угадает что там внутри ваших красивых функций.

[uquote="kvn234",url="/forum/viewtopic.php?p=4167783#p4167783"]Мне бы хотелось получить ответ от человека практически применившего 12 разрядное ADC STM8L151, насколько стабильны показания и имеет ли смысл использовать данный ADC, а не упражняться в словоблудии и кто круче.[/uquote]Словоблудием занимаетесь здесь вы, написав кучу сообщений, но так и не приведя инициализации АЦП.
С STM8L151 не вы первый занимаетесь. У меня проект на нём уже больше года вполне себе нормально работает. Правда там используются только 2 канала АЦП: Vrefint и термодатчик. Проблем не замечал - показания стабильны. Более того - показания термодатчика отличаются всего на пару десятых градуса от другого термометра, находящегося в этом же помещении.
Но опять-же - советы посмотреть работу термодатчика совместно с Vrefint, вы проигнорили. И кто после этого словоблудит?
Мучитель микросхем
Сообщения: 418
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Сообщение kvn234 »

[uquote="jcxz",url="/forum/viewtopic.php?p=4167879#p4167879"][uquote="kvn234",url="/forum/viewtopic.php?p=4167783#p4167783"]Я их привел не для того чтобы кто то восхищался красотой, а привел критические замечания или предложения.[/uquote]Какие "практические замечания" вы ожидаете услышать, не приведя код инициализации? Здесь нет ясновидящих, кто угадает что там внутри ваших красивых функций.[/uquote]

Вы не ясновидящей, а вообще не видящей.

Под spoiler находилась функция init_adc. Вы не видите, что это инициализация ADC.

void init_adc(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);

ADC_DeInit(ADC1);

Vrefint = *Factory_VREFINT;
Vrefint += 0x600;

ADC_Init(ADC1, ADC_ConversionMode_Single, ADC_Resolution_12Bit,ADC_Prescaler_2);
ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels, ADC_SamplingTime_384Cycles);

/* Disable the specified ADC DMA request */
ADC1->SQR[0] |= ADC_SQR1_DMAOFF;

ADC1->CR1 |= ADC_CR1_ADON;
}

Если Вы работали с ADC STM8L Вы должны были это понять или нужно было комментировать каждую строчку.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

kvn234, комментировать не нужно, а, для примера, указать включен ли триггер Шмитта на используемом входе или явно его выключить в коде стоило бы.
Мучитель микросхем
Сообщения: 418
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Сообщение kvn234 »

[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167996#p4167996"]kvn234, комментировать не нужно, а, для примера, указать включен ли триггер Шмитта на используемом входе или явно его выключить в коде стоило бы.[/uquote]

Триггер Шмитта выключался в функции чтения. Но сейчас я выключение триггера Шмитта перенес в инициализацию.

Но это как я и предполагал не повлияло на стабильность измерений.

void init_adc(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);

ADC_DeInit(ADC1);

Vrefint = *Factory_VREFINT;
Vrefint += 0x600;

ADC_Init(ADC1, ADC_ConversionMode_Single, ADC_Resolution_12Bit,ADC_Prescaler_2);
ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels, ADC_SamplingTime_384Cycles);

/* Disable the specified ADC DMA request */
ADC1->SQR[0] |= ADC_SQR1_DMAOFF;

ADC_SchmittTriggerConfig(ADC1, ADC_Channel_0, DISABLE);
ADC_SchmittTriggerConfig(ADC1, ADC_Channel_1, DISABLE);
ADC_SchmittTriggerConfig(ADC1, ADC_Channel_2, DISABLE);
ADC_SchmittTriggerConfig(ADC1, ADC_Channel_4, DISABLE);

ADC_VrefintCmd(ENABLE);

ADC1->CR1 |= ADC_CR1_ADON;
}


uint16_t GetChannel(ADC_Channel_TypeDef Channel)
{
uint32_t res;

ADC_ChannelCmd(ADC1, Channel, ENABLE);

ADC1->CR1 |= ADC_CR1_START;

while (!(ADC1->SR & ADC_FLAG_EOC));

res = ADC_GetConversionValue(ADC1);

ADC_ChannelCmd(ADC1, Channel, DISABLE);

return (uint16_t)res;
}

Когда мы наконец разобрались где находились функции, не могли ли Вы высказать конкретные замечания по функциям.
Что нужно учесть в инициализации ADC или чтении?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18816
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Я дико извиняюсь: а когда ацп измеряет Vref, что служит опорным? Я как бы предполагаю, что измерение опорного относительно самого себя всегда будет идеальным по определению... Или нет?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Опорным является питание контроллера. У контроллера есть калибровочная константа, которая содержит измеренное Vref при известном напряжении питания. Эта константа позволяет вычислить реальное напряжение питания из измеренного Vref. Далее это вычисленное значение используют как точное значение опорного АЦП.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18816
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Сообщения: 418
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Сообщение kvn234 »

[uquote="jcxz",url="/forum/viewtopic.php?p=4167879#p4167879"][uquote="kvn234",url="/forum/viewtopic.php?p=4167783#p4167783"]Я их привел не для того чтобы кто то восхищался красотой, а привел критические замечания или предложения.[/uquote]Какие "практические замечания" вы ожидаете услышать, не приведя код инициализации? Здесь нет ясновидящих, кто угадает что там внутри ваших красивых функций.[/uquote]

Вы прозрели или нет?

Если нет, объясняю как пользоваться спойлером.

Заходите на страницу 105.
Находите мое сообщение.
Под таблицей есть 2 кнопки с надписью "Показать".
Подводите курсор мышки под первую и нажимаете левую кнопку мыши и Вы прозреваете. Перед Вами раскрываются две функции - одна инициализации другая считывания канала ADC.
Вторая кнопка с надписью "Показать" работает аналогично.
Надеюсь подробно описывать не надо.

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

[uquote="jcxz",url="/forum/viewtopic.php?p=4167879#p4167879"]Но опять-же - советы посмотреть работу термодатчика совместно с Vrefint, вы проигнорили.[/uquote]

Канал Vref нужен был для проверки стабильности напряжения питания.
И причем тут канал термодатчика? Давайте сдуру подключим еще десяток каналов. Что это даст?
Все каналы заведены на один мультиплексор.
Чувствуются глубокие знания и логика.
Мудрый кот
Сообщения: 1856
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="kvn234",url="/forum/viewtopic.php?p=4167959#p4167959"]Вы не ясновидящей, а вообще не видящей.
Под spoiler находилась функция init_adc. Вы не видите, что это инициализация ADC.[/uquote]Да, похоже тяжёлый случай и медицина здесь бессильна.... :dont_know:

Я не умею угадывать что там у вас внутри всех этих:
[uquote="kvn234",url="/forum/viewtopic.php?p=4167959#p4167959"]ADC_Init(ADC1, ADC_ConversionMode_Single, ADC_Resolution_12Bit,ADC_Prescaler_2);
ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels, ADC_SamplingTime_384Cycles);[/uquote]
Если Вы ждёте ясновидящего, умеющего узреть содержимое всех этих ваших функций, и что они пишут в регистры конфигурации АЦП - продолжайте в том же духе. Не буду более мешать. А я не ясновидящий.

[uquote="kvn234",url="/forum/viewtopic.php?p=4167959#p4167959"]Если Вы работали с ADC STM8L Вы должны были это понять или нужно было комментировать каждую строчку.[/uquote]
Ну да конечно - работали с STM8L здесь похоже только Вы. Только странно почему даже его простейший DMA с АЦП запустить не смогли. Такой-то гуру и не смог... :)))

Добавлено after 6 minutes 45 seconds:
[uquote="kvn234",url="/forum/viewtopic.php?p=4168246#p4168246"]Вы прозрели или нет?
Если нет, объясняю как пользоваться спойлером.[/uquote]С этого момента можете пользоваться спойлером или чем угодно самостоятельно, в гордом одиночестве.
Потому как похоже Вы здесь единственный гуру. И никто и в подмётки не годится Вам. Правда почему-то не умеющий запустить простейшего АЦП и DMA на простейшем МК. :)))
Продолжайте в том же духе.
А у нас наши проекты на STM8L и так прекрасно работают.

Добавлено after 3 minutes 22 seconds:
[uquote="kvn234",url="/forum/viewtopic.php?p=4168246#p4168246"]И причем тут канал термодатчика? Давайте сдуру подключим еще десяток каналов. Что это даст?
Все каналы заведены на один мультиплексор.
Чувствуются глубокие знания и логика.[/uquote]Не понятно зачем тогда вы вообще сюда пришли, если все вокруг вас тут дураки и все советы вы игнорируете. Зачем тогда спрашиваете совета у дураков? Копайтесь в своём ... сами.

Адьё!
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Можно попробовать частоту тактирования АЦП увеличить, вплоть до 16МГц и посмотреть разницу.
Еще можно максимально укоротить провода от батарейки, или вместо батарейки, подать разделенное питание на входа АЦП, делитель сделать прямо возле МК и тоже поглядеть разницу.

Еще один момент п.14.3.4 RM. Может я его неправильно понял, но понял это так, что если время между соседними конвертациями больше tIDLE, то АЦП следует переводить в power-off. А tIDLE, согласно DS колеблется от 1сек до до 2мс.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Мучитель микросхем
Сообщения: 418
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Сообщение kvn234 »

[uquote="jcxz",url="/forum/viewtopic.php?p=4168439#p4168439"][uquote="kvn234",url="/forum/viewtopic.php?p=4167959#p4167959"]Я не умею угадывать что там у вас внутри всех этих:
[uquote="kvn234",url="/forum/viewtopic.php?p=4167959#p4167959"]ADC_Init(ADC1, ADC_ConversionMode_Single, ADC_Resolution_12Bit,ADC_Prescaler_2);
ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels, ADC_SamplingTime_384Cycles);[/uquote]
Если Вы ждёте ясновидящего, умеющего узреть содержимое всех этих ваших функций, и что они пишут в регистры конфигурации АЦП - продолжайте в том же духе. Не буду более мешать. А я не ясновидящий.[/uquote][/uquote]

Если Вы имеете опыт программирования STM8L то должны были знать что эти функции из STM8L15x-16x-05x-AL31-L_StdPeriph_Lib от STMicroelectronics, а если не знаете, то нечего давать советы. Скачайте и посмотрите, что внутри. Там установка регистров.

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

А спрашиваю я не у Вас а у специалистов имеющий опыт работы с STM8L, и прежде чем писать ответ на вопрос нужно внимательно читать, что хотят узнать и если не понимаете о чем идет речь лучше помолчать.

Да я имею большой опыт в электронике (лет 50) и в программировании (начинал с синклера), а написал сюда чтобы получить совет от специалиста, стоит ли связываться с ADC STM8L или искать другие варианты.

А не читать глупости о человека который не знает стандартные функции.

Добавлено after 18 minutes 58 seconds:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=4168454#p4168454"]Можно попробовать частоту тактирования АЦП увеличить, вплоть до 16МГц и посмотреть разницу.
Еще можно максимально укоротить провода от батарейки,[/uquote]

Я уже укоротил, стало получше. Но я решил вариант внешнего ADC и DAC будет лучше.

[uquote="Z_h_e",url="/forum/viewtopic.php?p=4168454#p4168454"]Еще один момент п.14.3.4 RM. Может я его неправильно понял, но понял это так, что если время между соседними конвертациями больше tIDLE, то АЦП следует переводить в power-off. А tIDLE, согласно DS колеблется от 1сек до до 2мс.[/uquote]

Насчет 2мс не читал. В основном пишут в районе секунды.

У меня цикл одной передачи несколько мс. Так, что это не тот случай.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

kvn234 писал(а):Насчет 2мс не читал. В основном пишут в районе секунды.
Надо на DS ориентироваться, это значение сильно плавает от температуры камня.

Добавлено after 1 minute 19 seconds:
kvn234 писал(а):Я уже укоротил, стало получше.
Может все-таки проблема в схеме тоды?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

Вернуться в «Разные вопросы по МК»