Программирование STM8
- Сообщения: 351
- Зарегистрирован: Чт май 20, 2021 13:33:05
А возможно сделать прерывание на заданное число импульсов от энкодера ? Без учета направления.
- Реклама
- Сообщения: 6513
- Зарегистрирован: Сб янв 28, 2006 22:47:24
Сделать предварительную запись в счетчик некоторого значения, по достижению которого сгенерируется определенное прерывание.
Прерывание прерыванием, а стоит ли возится с STM8, если их дальнейшее производство под бааальшим вопросом?
Прерывание прерыванием, а стоит ли возится с STM8, если их дальнейшее производство под бааальшим вопросом?
Астролябия-сама меряет, было бы что мерять!!!
- Сообщения: 351
- Зарегистрирован: Чт май 20, 2021 13:33:05
Мне это подойдет, но я рассчитывал на что-то более "высокотехнологичное"Asmodey писал(а):Сделать предварительную запись
Типа, задал крайние значения , и при их достижении - прерывания.
У меня валяется пара китайских платок , не выбрасывать же их.Asmodey писал(а):стоит ли возится с STM8
В принципе, и жизнь на Земле под большим вопросом.
А у вас это достоверная информация , или по линии ОБС?
Проблемы со всей электроникой , в январе я купил на Али 5 6-ногих АВР-ок за 150р , а сейчас они 900.
У асмодея не может быть недостоверной информации.
Он обладает тайными знаниями,сами знаете откуда он.
Другое дело,служит силам зла...
Он обладает тайными знаниями,сами знаете откуда он.
Другое дело,служит силам зла...
- Сообщения: 8
- Зарегистрирован: Сб сен 11, 2021 07:42:29
Приветствую всех!
Помогите выйти на контакт, для написания прошивки на мк STM8S003F3P6.
Задача: фоновая подсветка здания RGBW-фонарями. Всё работает, но нужна программа для прошивки контроллеров, которые уже стоят в платах управления. Тк мк защищён от копирования, нужна сама прошивка.
Алгоритм следующий: при включении фонаря попеременно переключаются все четыре цвета(для проверки целостности лед-диодов и работы каждого цвета в отдельности), затем по-кругу плавное увеличение-уменьшение свечения.
При подаче управления от внешнего контроллера
по протоколу DMX512 начинает работать программа прописанная на устройстве управления.
Если сигнал управлени отсутствует/пропал, то прошивка на STM8S003F3P6 включает свой алгоритм работы, а именно, цвета замерли которые были активны на момент пропадания внешнего сигнала и дальше по кругу плавное увеличение-уменьшение свечения.
Если сможете вытащить прошивку с мк, то задача вообще упрощена будет. Платы управления уже собраны, заводские с пинами для подключения программатора, мудрить ничего не нужно особо.
Вся работа будет оплачена, главное результат!!!
Дальнейшее обсуждение в личке.
Помогите выйти на контакт, для написания прошивки на мк STM8S003F3P6.
Задача: фоновая подсветка здания RGBW-фонарями. Всё работает, но нужна программа для прошивки контроллеров, которые уже стоят в платах управления. Тк мк защищён от копирования, нужна сама прошивка.
Алгоритм следующий: при включении фонаря попеременно переключаются все четыре цвета(для проверки целостности лед-диодов и работы каждого цвета в отдельности), затем по-кругу плавное увеличение-уменьшение свечения.
При подаче управления от внешнего контроллера
по протоколу DMX512 начинает работать программа прописанная на устройстве управления.
Если сигнал управлени отсутствует/пропал, то прошивка на STM8S003F3P6 включает свой алгоритм работы, а именно, цвета замерли которые были активны на момент пропадания внешнего сигнала и дальше по кругу плавное увеличение-уменьшение свечения.
Если сможете вытащить прошивку с мк, то задача вообще упрощена будет. Платы управления уже собраны, заводские с пинами для подключения программатора, мудрить ничего не нужно особо.
Вся работа будет оплачена, главное результат!!!
Дальнейшее обсуждение в личке.
Последний раз редактировалось Assatm Сб сен 11, 2021 14:27:33, всего редактировалось 1 раз.
- Реклама
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Сообщения: 6513
- Зарегистрирован: Сб янв 28, 2006 22:47:24
[uquote="muravei_",url="/forum/viewtopic.php?p=4082991#p4082991"]А у вас это достоверная информация[/uquote]
Какая информация?
Какая информация?
Астролябия-сама меряет, было бы что мерять!!!
- Сообщения: 1
- Зарегистрирован: Вт сен 14, 2021 05:29:16
Народ, кто имел опыт программирования STM8 на ассемблере под IAR? Если с сегментацией в STVD все понятно, т.к. есть нормальное описание, то IARовская SECTION это какой-то темный лес, даже после прочтения IAR Assembler Reference Guide. Никаких явных предопределений в IAR тоже не нашел, но это не проблема, отберу у STVD и подшаманю. Самая главная проблема - правильно разбить код на сегменты, ORG не работает гад.
- Сообщения: 4
- Зарегистрирован: Вс сен 19, 2021 14:58:21
Здравствуйте. Имеется такая схема ,потерял термодатчик. Подскажите марку этого термодатчика. Спасибо.
- Вложения
-
- nkggq2jfx.png
- (22 КБ) 215 скачиваний
- Сообщения: 3784
- Зарегистрирован: Ср дек 24, 2008 09:58:58
[uquote="isorport",url="/forum/viewtopic.php?p=4091041#p4091041"]кто имел опыт программирования STM8 на ассемблере под IAR?[/uquote]Я разработал тестовый проект для STM8 на ассемблере под IAR лет 10 назад. С тех пор прошло много времени и я с этими МК дел более не имел и практически всё забыл. Однако, проект остался, если интересно, могу прислать в ЛС. Там, в частности, можно посмотреть как сегменты определены.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
[uquote="GrV864",url="/forum/viewtopic.php?p=4093655#p4093655"]Подскажите марку этого термодатчика[/uquote]
Эта универсальная плата индикации в прибор на динрейку, датчики подключаются разнообразные (зависит от прошивки) - DS18B20, KTY84, термопара, HIH...
Эта универсальная плата индикации в прибор на динрейку, датчики подключаются разнообразные (зависит от прошивки) - DS18B20, KTY84, термопара, HIH...
Спойлер

- Сообщения: 4
- Зарегистрирован: Вс сен 19, 2021 14:58:21
[uquote="oleg110592",url="/forum/viewtopic.php?p=4093950#p4093950"][uquote="GrV864",url="/forum/viewtopic.php?p=4093655#p4093655"]Подскажите марку этого термодатчика[/uquote]
Эта универсальная плата индикации в прибор на динрейку, датчики подключаются разнообразные (зависит от прошивки) - DS18B20, KTY84, термопара, HIH...
[/uquote]
А как узнать какая прошивка ,и какой прописан,я так понимаю не реально? Подключил ds18b20, так пока пальцем не дотронишься к ноге vdd работает,отпускаешь ошибка. У меня это терморегулятор Dalas 40 A.
Эта универсальная плата индикации в прибор на динрейку, датчики подключаются разнообразные (зависит от прошивки) - DS18B20, KTY84, термопара, HIH...
Спойлер

А как узнать какая прошивка ,и какой прописан,я так понимаю не реально? Подключил ds18b20, так пока пальцем не дотронишься к ноге vdd работает,отпускаешь ошибка. У меня это терморегулятор Dalas 40 A.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Схема в режиме ”паразитного питания” позволяет подключить термодатчик к микроконтроллеру всего двумя проводами

з.ы. резистор уже внутри прибора

з.ы. резистор уже внутри прибора
- Сообщения: 4
- Зарегистрирован: Вс сен 19, 2021 14:58:21
[uquote="oleg110592",url="/forum/viewtopic.php?p=4094192#p4094192"]Схема в режиме ”паразитного питания” позволяет подключить термодатчик к микроконтроллеру всего двумя проводами

з.ы. резистор уже внутри прибора[/uquote]
Почему тогда не работает. Пишет ерор.

з.ы. резистор уже внутри прибора[/uquote]
Почему тогда не работает. Пишет ерор.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
по картинкам через гуглопоиск "Dalas 40 A" по двум проводам, датчик в термоусадке (может там резистор размещают, под термоусадкой).
На сколько помню именно у этого производителя была проблема с дс18б20 - попались без паразитного питания. Ставил диод и конденсатор

з.ы. это вообще то офтоп в теме - надо модератора просить удалить
На сколько помню именно у этого производителя была проблема с дс18б20 - попались без паразитного питания. Ставил диод и конденсатор

з.ы. это вообще то офтоп в теме - надо модератора просить удалить
- Сообщения: 4
- Зарегистрирован: Вс сен 19, 2021 14:58:21
[uquote="oleg110592",url="/forum/viewtopic.php?p=4094208#p4094208"]по картинкам через гуглопоиск "Dalas 40 A" по двум проводам, датчик в термоусадке (может там резистор размещают, под термоусадкой).
На сколько помню именно у этого производителя была проблема с дс18б20 - попались без паразитного питания. Ставил диод и конденсатор

з.ы. это вообще то офтоп в теме - надо модератора просить удалить[/uquote]
Резистора под термоусадкой не было,он у меня как то отпадал,я его прираивал. Там было три ножки,одна из них обломана. На две провода.
На сколько помню именно у этого производителя была проблема с дс18б20 - попались без паразитного питания. Ставил диод и конденсатор

з.ы. это вообще то офтоп в теме - надо модератора просить удалить[/uquote]
Резистора под термоусадкой не было,он у меня как то отпадал,я его прираивал. Там было три ножки,одна из них обломана. На две провода.
Приветствую всех!
Пытаюсь разобраться с ADC STM8L151.
Пробовал выполнить чтение 4х каналов с использованием DMA, были проблемы с синхронизацией - решил.
Но смущает низкая точность измерения 12 разрядного ADC. Решил проверить в режиме одиночного преобразования 4х каналов.
Входы 4х каналов соединены и на них подано напряжение с батарейки. При этом наблюдаются значительные расхождения между каналами и показания скачут.
Напряжение питания стабилизировано и меняется незначительно, что видно по измерениям канала внутреннего ИОН.

{
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;
}
//------------------------------------------------------------------------------------
uint16_t GetChannel(ADC_Channel_TypeDef Channel)
{
uint32_t res;
uint16_t i;
ADC_ChannelCmd(ADC1, Channel, ENABLE);
ADC_SchmittTriggerConfig(ADC1, Channel, DISABLE);
for(i=0x00ff; i ; i--);
ADC1->CR1 |= ADC_CR1_START;
while (!(ADC1->SR & ADC_FLAG_EOC));
res = ADC_GetConversionValue(ADC1);
ADC_ChannelCmd(ADC1, Channel, DISABLE);
return (uint16_t)res;
}
Каналы записываются в массив и передаются на компьютер.
{
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();
Еще один момент. Если убрать повторное считывание 0 канала, то считываются данные с ADC_Channel_Vrefint.
Подскажите где у меня ошибка, не верится чтобы 12 разрядный ADC выдавал такие погрешности.
Или возможно дефектный микроконтроллер.
Опыт программирования AVR имею, с STM8 много не работал.
Пытаюсь разобраться с ADC STM8L151.
Пробовал выполнить чтение 4х каналов с использованием DMA, были проблемы с синхронизацией - решил.
Но смущает низкая точность измерения 12 разрядного ADC. Решил проверить в режиме одиночного преобразования 4х каналов.
Входы 4х каналов соединены и на них подано напряжение с батарейки. При этом наблюдаются значительные расхождения между каналами и показания скачут.
Напряжение питания стабилизировано и меняется незначительно, что видно по измерениям канала внутреннего ИОН.

Спойлер
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;
}
//------------------------------------------------------------------------------------
uint16_t GetChannel(ADC_Channel_TypeDef Channel)
{
uint32_t res;
uint16_t i;
ADC_ChannelCmd(ADC1, Channel, ENABLE);
ADC_SchmittTriggerConfig(ADC1, Channel, DISABLE);
for(i=0x00ff; i ; i--);
ADC1->CR1 |= ADC_CR1_START;
while (!(ADC1->SR & ADC_FLAG_EOC));
res = ADC_GetConversionValue(ADC1);
ADC_ChannelCmd(ADC1, Channel, DISABLE);
return (uint16_t)res;
}
Спойлер
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();
Подскажите где у меня ошибка, не верится чтобы 12 разрядный ADC выдавал такие погрешности.
Или возможно дефектный микроконтроллер.
Опыт программирования AVR имею, с STM8 много не работал.
kvn234, Я бы начал с внимательного чтения AN3137, так как причин такого поведения может быть очень много.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4166446#p4166446"]kvn234, Я бы начал с внимательного чтения AN3137, так как причин такого поведения может быть очень много.[/uquote]
Для примера назовите 1-2 причины.
С учетом следующего:
- напряжение питания стабильное о чем говорит стабильные показания channel VREFINT (ADCRef);
- по короткому проводу на все 4 канала подано напряжения от одной батарейки при этом показания на четырех каналах разные и скачут не синхронно в разные стороны
Для примера назовите 1-2 причины.
С учетом следующего:
- напряжение питания стабильное о чем говорит стабильные показания channel VREFINT (ADCRef);
- по короткому проводу на все 4 канала подано напряжения от одной батарейки при этом показания на четырех каналах разные и скачут не синхронно в разные стороны
kvn234, 1. Требуется калибровка из-за наличия ошибки смещения.
2. Нестабильность частоты тактового генератора
3. Слишком высокая частота семплирования
4. Недостаточная пауза для стабилизации перед началом конвертации
Пока хватит?
2. Нестабильность частоты тактового генератора
3. Слишком высокая частота семплирования
4. Недостаточная пауза для стабилизации перед началом конвертации
Пока хватит?


