Программирование STM8
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Программирование STM8
Опорным является питание контроллера. У контроллера есть калибровочная константа, которая содержит измеренное Vref при известном напряжении питания. Эта константа позволяет вычислить реальное напряжение питания из измеренного Vref. Далее это вычисленное значение используют как точное значение опорного АЦП.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Программирование STM8
Благодарю за ответ
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
-
kvn234
- Потрогал лапой паяльник
- Сообщения: 330
- Зарегистрирован: Вс апр 17, 2011 09:51:26
- Откуда: Тула
Re: Программирование STM8
[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 нужен был для проверки стабильности напряжения питания.
И причем тут канал термодатчика? Давайте сдуру подключим еще десяток каналов. Что это даст?
Все каналы заведены на один мультиплексор.
Чувствуются глубокие знания и логика.
Вы прозрели или нет?
Если нет, объясняю как пользоваться спойлером.
Заходите на страницу 105.
Находите мое сообщение.
Под таблицей есть 2 кнопки с надписью "Показать".
Подводите курсор мышки под первую и нажимаете левую кнопку мыши и Вы прозреваете. Перед Вами раскрываются две функции - одна инициализации другая считывания канала ADC.
Вторая кнопка с надписью "Показать" работает аналогично.
Надеюсь подробно описывать не надо.
Прежде чем писать об ясновидиние разобрались бы как пишутся и читаются сообщения на сайте.
[uquote="jcxz",url="/forum/viewtopic.php?p=4167879#p4167879"]Но опять-же - советы посмотреть работу термодатчика совместно с Vrefint, вы проигнорили.[/uquote]
Канал Vref нужен был для проверки стабильности напряжения питания.
И причем тут канал термодатчика? Давайте сдуру подключим еще десяток каналов. Что это даст?
Все каналы заведены на один мультиплексор.
Чувствуются глубокие знания и логика.
Re: Программирование STM8
[uquote="kvn234",url="/forum/viewtopic.php?p=4167959#p4167959"]Вы не ясновидящей, а вообще не видящей.
Под spoiler находилась функция init_adc. Вы не видите, что это инициализация ADC.[/uquote]Да, похоже тяжёлый случай и медицина здесь бессильна....
Я не умею угадывать что там у вас внутри всех этих:
[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]Не понятно зачем тогда вы вообще сюда пришли, если все вокруг вас тут дураки и все советы вы игнорируете. Зачем тогда спрашиваете совета у дураков? Копайтесь в своём ... сами.
Адьё!
Под spoiler находилась функция init_adc. Вы не видите, что это инициализация ADC.[/uquote]Да, похоже тяжёлый случай и медицина здесь бессильна....
Я не умею угадывать что там у вас внутри всех этих:
[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]Не понятно зачем тогда вы вообще сюда пришли, если все вокруг вас тут дураки и все советы вы игнорируете. Зачем тогда спрашиваете совета у дураков? Копайтесь в своём ... сами.
Адьё!
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Программирование STM8
Можно попробовать частоту тактирования АЦП увеличить, вплоть до 16МГц и посмотреть разницу.
Еще можно максимально укоротить провода от батарейки, или вместо батарейки, подать разделенное питание на входа АЦП, делитель сделать прямо возле МК и тоже поглядеть разницу.
Еще один момент п.14.3.4 RM. Может я его неправильно понял, но понял это так, что если время между соседними конвертациями больше tIDLE, то АЦП следует переводить в power-off. А tIDLE, согласно DS колеблется от 1сек до до 2мс.
Еще можно максимально укоротить провода от батарейки, или вместо батарейки, подать разделенное питание на входа АЦП, делитель сделать прямо возле МК и тоже поглядеть разницу.
Еще один момент п.14.3.4 RM. Может я его неправильно понял, но понял это так, что если время между соседними конвертациями больше tIDLE, то АЦП следует переводить в power-off. А tIDLE, согласно DS колеблется от 1сек до до 2мс.
-
kvn234
- Потрогал лапой паяльник
- Сообщения: 330
- Зарегистрирован: Вс апр 17, 2011 09:51:26
- Откуда: Тула
Re: Программирование STM8
[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мс не читал. В основном пишут в районе секунды.
У меня цикл одной передачи несколько мс. Так, что это не тот случай.
[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мс не читал. В основном пишут в районе секунды.
У меня цикл одной передачи несколько мс. Так, что это не тот случай.
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Программирование STM8
Надо на DS ориентироваться, это значение сильно плавает от температуры камня.kvn234 писал(а):Насчет 2мс не читал. В основном пишут в районе секунды.
Добавлено after 1 minute 19 seconds:
Может все-таки проблема в схеме тоды?kvn234 писал(а):Я уже укоротил, стало получше.
-
kvn234
- Потрогал лапой паяльник
- Сообщения: 330
- Зарегистрирован: Вс апр 17, 2011 09:51:26
- Откуда: Тула
Re: Программирование STM8
[uquote="Z_h_e",url="/forum/viewtopic.php?p=4168530#p4168530"]
Добавлено after 1 minute 19 seconds:
Схемы как таковой нет. STM8L в панельки и подключен к ST_Link и через модуль ft232 к USB.
Просто хотел протестировать ADC.
Вопросы снимаю. Меня ADC STM8L не устраивает.
Для я уменьшения пульсаций и повышения стабильности измерений буду делать выносной модуль с ADC и DAC со связью по I2C.
Надо на DS ориентироваться, это значение сильно плавает от температуры камня.kvn234 писал(а):Насчет 2мс не читал. В основном пишут в районе секунды.
Добавлено after 1 minute 19 seconds:
Может все-таки проблема в схеме тоды?[/uquote]kvn234 писал(а):Я уже укоротил, стало получше.
Схемы как таковой нет. STM8L в панельки и подключен к ST_Link и через модуль ft232 к USB.
Просто хотел протестировать ADC.
Вопросы снимаю. Меня ADC STM8L не устраивает.
Для я уменьшения пульсаций и повышения стабильности измерений буду делать выносной модуль с ADC и DAC со связью по I2C.
Re: Программирование STM8
Одно время тоже ковырялся с АЦП на STM8L151C8
максимум что мне удалось добиться:
здесь SYSCLK=2MHz, используется одиночное преобразование, которое выполняется в WAIT режиме. Из периферии включено только АЦП, РТС, парочка UART'ов.
Питалово от МК. Думаю, что если бы сделал нормальное питание аналоговой части, то результат был бы лучше
блок инициалтзации АЦП, если возникнут вопросы:
максимум что мне удалось добиться:
Спойлер
Код: Выделить всё
17:13:37.795 -> adc value: 2947
17:13:48.386 -> adc value: 2949
17:13:58.950 -> adc value: 2947
17:14:09.537 -> adc value: 2947
17:14:20.111 -> adc value: 2946
17:14:30.697 -> adc value: 2949
17:14:41.267 -> adc value: 2947
17:14:51.853 -> adc value: 2947
17:15:02.423 -> adc value: 2945
17:15:13.015 -> adc value: 2949
17:15:23.587 -> adc value: 2947
17:15:34.165 -> adc value: 2947
17:15:44.741 -> adc value: 2947
17:15:55.323 -> adc value: 2947
17:16:05.898 -> adc value: 2943
17:16:16.482 -> adc value: 2946
17:16:27.022 -> adc value: 2947
17:16:37.601 -> adc value: 2946
17:16:48.204 -> adc value: 2947
17:16:58.760 -> adc value: 2953
17:17:09.345 -> adc value: 2949
17:17:19.914 -> adc value: 2947
17:17:30.466 -> adc value: 2947
17:17:41.059 -> adc value: 2945
17:17:51.606 -> adc value: 2945
17:18:02.178 -> adc value: 2946
17:18:12.766 -> adc value: 2948
17:18:23.338 -> adc value: 2945
17:18:33.922 -> adc value: 2947
17:18:44.496 -> adc value: 2947
17:18:55.049 -> adc value: 2943
17:19:05.621 -> adc value: 2947
17:19:16.205 -> adc value: 2949
17:19:26.775 -> adc value: 2949
17:19:37.352 -> adc value: 2945
17:19:47.919 -> adc value: 2947Питалово от МК. Думаю, что если бы сделал нормальное питание аналоговой части, то результат был бы лучше
блок инициалтзации АЦП, если возникнут вопросы:
Код: Выделить всё
79 //===== ADC Setup =============
80 adc_value=0;
81 ADC1_CR1=0x08; // 12-bit resolution. enable interrupt
82 ADC1_CR2=0x87; // set PRESC = CLK/2, SMTP = 7 (384 Cycles)
83 ADC1_CR3=0; // reset all flags
84 ADC1_CR1 |= 0x01; // set ADON, enable ADC
85 ADC1_SQR1=0x80; // Disable DMA
86 ADC1_SQR2=0;
87 ADC1_SQR3=0;
88 ADC1_SQR4=(1<<2); // Select Channel =2
89 ADC1_TRIGR4=(1<<2); // Diasable Schmitt Trigger for Channel =2-
kvn234
- Потрогал лапой паяльник
- Сообщения: 330
- Зарегистрирован: Вс апр 17, 2011 09:51:26
- Откуда: Тула
Re: Программирование STM8
[uquote="JackSmith",url="/forum/viewtopic.php?p=4177733#p4177733"]здесь SYSCLK=2MHz, используется одиночное преобразование. Из периферии включено только АЦП, РТС, парочка UART'ов.
Питалово от МК. Думаю, что если бы сделал нормальное питание аналоговой части, то результат был бы лучше[/uquote]
Из периферии включено только АЦП и UART.
У меня цикл одной передачи несколько мс.
Пробовал одиночное преобразование и в цикле через DMA.
Считывал 4 канала и ADC_Channel_Vrefint для контроля стабильности питания.
Как видно скачки ADCRef незначительные (что говорит о стабильности питания).
Четыре входа ADC0, ADC1, ADC2 и ADC4 соединены и подключены к батарейки.
При этом наблюдаю скачки и разные показания по каналам(см. таблица на 105 стр.).
Меня это не устраивает, буду использовать INA226, да и ресурсов у STM8 маловато.
Питалово от МК. Думаю, что если бы сделал нормальное питание аналоговой части, то результат был бы лучше[/uquote]
Из периферии включено только АЦП и UART.
У меня цикл одной передачи несколько мс.
Код: Выделить всё
while (1)
{
buf_dma_adc [0] = GetChannel(ADC_Channel_0);
buf_dma_adc [0] = GetChannel(ADC_Channel_0);
buf_dma_adc [1] = GetChannel(ADC_Channel_1);
buf_dma_adc [2] = GetChannel(ADC_Channel_2);
buf_dma_adc [3] = GetChannel(ADC_Channel_4);
buf_dma_adc [4] = GetChannel(ADC_Channel_Vrefint);
out_usart();
}
Считывал 4 канала и ADC_Channel_Vrefint для контроля стабильности питания.
Как видно скачки ADCRef незначительные (что говорит о стабильности питания).
Четыре входа ADC0, ADC1, ADC2 и ADC4 соединены и подключены к батарейки.
При этом наблюдаю скачки и разные показания по каналам(см. таблица на 105 стр.).
Меня это не устраивает, буду использовать INA226, да и ресурсов у STM8 маловато.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Программирование STM8
kvn234, в одном китайском "вольтметре" на STM8 я обнаружил интересное подключение: в качестве опоры они измеряли падение напряжения на диоде. Соответственно, на эту опору и корректировали измерения. У STM32 удобней: там внутренняя опора есть.
Re: Программирование STM8
[uquote="kvn234",url="/forum/viewtopic.php?p=4178101#p4178101"]да и ресурсов у STM8 маловато.[/uquote]
это не баг, это фича. L серия предназначена для устройств с автономным питанием, поэтому периферия там урезана по максимуму. сравните с MSP430 там вообще все очень по спартански. зато чипы работают от батарейки годами.
это не баг, это фича. L серия предназначена для устройств с автономным питанием, поэтому периферия там урезана по максимуму. сравните с MSP430 там вообще все очень по спартански. зато чипы работают от батарейки годами.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Программирование STM8
А вот интересно: насколько больше STM32L жрет, чем STM8L? А то, может, ну их нафиг, эти восьмибитки?
Re: Программирование STM8
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4178230#p4178230"]А вот интересно: насколько больше STM32L жрет, чем STM8L?[/uquote]
я не думаю, что большая разница будет. у меня stm8l151 в active-halt режиме потреблял 2.3 мкА. по даташиту на STM32L151x6/8, потребление в Standby режиме с РТС - 1.1 мкА. Даже в два раза меньше
я не думаю, что большая разница будет. у меня stm8l151 в active-halt режиме потреблял 2.3 мкА. по даташиту на STM32L151x6/8, потребление в Standby режиме с РТС - 1.1 мкА. Даже в два раза меньше
-
kvn234
- Потрогал лапой паяльник
- Сообщения: 330
- Зарегистрирован: Вс апр 17, 2011 09:51:26
- Откуда: Тула
Re: Программирование STM8
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4178187#p4178187"]Соответственно, на эту опору и корректировали измерения.[/uquote]
Корректировка измерений это следующий этап.
Сейчас меня больше не устраивает нестабильность измерений и разница между каналами.
Корректировка измерений это следующий этап.
Сейчас меня больше не устраивает нестабильность измерений и разница между каналами.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Программирование STM8
kvn234, а напряжение питания при этом стабильно? Температура чипа невысокая?
Re: Программирование STM8
[uquote="JackSmith",url="/forum/viewtopic.php?p=4178222#p4178222"]MSP430 там вообще все очень по спартански. зато чипы работают от батарейки годами.[/uquote]да. и есть версии с минимальным напряжение 0.9 В
-
kvn234
- Потрогал лапой паяльник
- Сообщения: 330
- Зарегистрирован: Вс апр 17, 2011 09:51:26
- Откуда: Тула
Re: Программирование STM8
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4178319#p4178319"]kvn234, а напряжение питания при этом стабильно? Температура чипа невысокая?[/uquote]
Температура комнатная.
Для измерения опорного напряжения ADC, оно же напряжения питания в каждом цикли вместе с измерением 4х внешних каналов измерялся канал ADC_Channel_Vrefint.
В дальнейшем предполагалось рассчитать напряжение питания(опорное) для данного цикла и входное напряжение по каждому каналу.
Я уже писал о стабильности измерений по каналу ADC_Channel_Vrefint (см. стр.105 колонка ADCRef), это говорит о стабильности питания.
Измерения и передача по USART циклическая, несколько десятков раз в секунду (точно не скажу, схему разобрал).
Я для передачи USART использовал кольцевой буфер и прерывание. Т.е. передача шла одновременно с измерениями по внешним каналам. Возможно это повлияло на нестабильность показаний.
Температура комнатная.
Для измерения опорного напряжения ADC, оно же напряжения питания в каждом цикли вместе с измерением 4х внешних каналов измерялся канал ADC_Channel_Vrefint.
В дальнейшем предполагалось рассчитать напряжение питания(опорное) для данного цикла и входное напряжение по каждому каналу.
Я уже писал о стабильности измерений по каналу ADC_Channel_Vrefint (см. стр.105 колонка ADCRef), это говорит о стабильности питания.
Измерения и передача по USART циклическая, несколько десятков раз в секунду (точно не скажу, схему разобрал).
Я для передачи USART использовал кольцевой буфер и прерывание. Т.е. передача шла одновременно с измерениями по внешним каналам. Возможно это повлияло на нестабильность показаний.
Спойлер
Код: Выделить всё
while (1)
{
buf_dma_adc [0] = GetChannel(ADC_Channel_0);
buf_dma_adc [1] = GetChannel(ADC_Channel_1);
buf_dma_adc [2] = GetChannel(ADC_Channel_2);
buf_dma_adc [3] = GetChannel(ADC_Channel_4);
buf_dma_adc [4] = GetChannel(ADC_Channel_Vrefint);
out_usart();
}
Код: Выделить всё
void out_usart(void)
{
uint8_t i;
uint8_t crc=':';
uart_putc((uint8_t)crc); //начало
uart_putc(13);crc+=13; //длина посылки (без CRC)
uart_putc(1); crc+=1; //код посылки
for(i=0;i<5;i++)
{
uart_putc((uint8_t)buf_dma_adc[i]); crc+=(uint8_t)buf_dma_adc[i];
uart_putc((uint16_t)buf_dma_adc[i]>>8); crc+=((uint16_t)buf_dma_adc[i]>>8);
}
uart_putc((uint8_t)crc);
}
Код: Выделить всё
#define TX_BUFFER_SIZE 16
volatile uint8_t tx_buffer[TX_BUFFER_SIZE];
volatile uint8_t tx_wr_index=0, tx_rd_index=0, tx_counter=0;
@far @interrupt void handler_usart1_tx(void)
{
if (tx_counter )
{
--tx_counter;
USART1->DR = tx_buffer[tx_rd_index++];
tx_rd_index &= (TX_BUFFER_SIZE - 1);
}
else USART1->CR2 &= ~(1 << 7);// при пустом буфере отключить прерывание
}
void uart_putc( char c )
{
while (tx_counter == TX_BUFFER_SIZE);
if (tx_counter || (USART1->CR2 & (1 << 7)))
{
disableInterrupts();
tx_buffer[tx_wr_index++] = c;
tx_wr_index &= (TX_BUFFER_SIZE-1);
++tx_counter;
enableInterrupts();
}
else
{
USART1->DR = c;
}
USART1->CR2 |= (1 << 7);//Разрешить прерывания
}Re: Программирование STM8
[uquote="JackSmith",url="/forum/viewtopic.php?p=4178263#p4178263"]я не думаю, что большая разница будет. у меня stm8l151 в active-halt режиме потреблял 2.3 мкА. по даташиту на STM32L151x6/8, потребление в Standby режиме с РТС - 1.1 мкА. Даже в два раза меньше
[/uquote]
У меня вся схема (STM8L151 + nRF24L01+) в том же режиме сна = 0.9...1.0 мкА. Она же в "low power run"/"low power wait" на минимальной частоте = ~5мкА.
При Uпит = ~2.4V.
У меня вся схема (STM8L151 + nRF24L01+) в том же режиме сна = 0.9...1.0 мкА. Она же в "low power run"/"low power wait" на минимальной частоте = ~5мкА.
При Uпит = ~2.4V.
Re: Программирование STM8
[uquote="jcxz",url="/forum/viewtopic.php?p=4178823#p4178823"]У меня вся схема (STM8L151 + nRF24L01+) в том же режиме сна = 0.9...1.0 мкА. Она же в "low power run"/"low power wait" на минимальной частоте = ~5мкА.
При Uпит = ~2.4V.[/uquote]
у меня вольтаж 3.3 Вольт. 2.3 мкА это средняя цифра за 60 сек. там еще один раз МК просыпался, снимал данные с АЦП, передавал на UART и снова засыпал. Как то так:

В low power wait с тактированием от LSE 38 кГц вышло 3мкА. low power run - 4.7мкА.
При Uпит = ~2.4V.[/uquote]
у меня вольтаж 3.3 Вольт. 2.3 мкА это средняя цифра за 60 сек. там еще один раз МК просыпался, снимал данные с АЦП, передавал на UART и снова засыпал. Как то так:

В low power wait с тактированием от LSE 38 кГц вышло 3мкА. low power run - 4.7мкА.
