Программирование STM8
- Сообщения: 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 КБ) 235 скачиваний
- Сообщения: 3795
- Зарегистрирован: Ср дек 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. Недостаточная пауза для стабилизации перед началом конвертации
Пока хватит?
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4166546#p4166546"]kvn234, 1. Требуется калибровка из-за наличия ошибки смещения.
2. Нестабильность частоты тактового генератора
3. Слишком высокая частота семплирования
4. Недостаточная пауза для стабилизации перед началом конвертации
Пока хватит?[/uquote]
1. Причем тут ошибка смещения. Проблема в том , что показания скачут, а не имеют ошибку смещения.
2. Поменял контроллер - проблема осталась. Да и USART работает без сбоев (принимаю на комп).
3. Частота RC генератора 16МГц. Затем стоит делитель на 8. Итого 2МГц.
4. Посмотрите мое сообщение. Я привел функции инициализации и чтения по ним видно что частоты минимальные, а задержки максимальные. Я так же в цикл вносил задержки, но положительного эффекта не получил.
2. Нестабильность частоты тактового генератора
3. Слишком высокая частота семплирования
4. Недостаточная пауза для стабилизации перед началом конвертации
Пока хватит?[/uquote]
1. Причем тут ошибка смещения. Проблема в том , что показания скачут, а не имеют ошибку смещения.
2. Поменял контроллер - проблема осталась. Да и USART работает без сбоев (принимаю на комп).
3. Частота RC генератора 16МГц. Затем стоит делитель на 8. Итого 2МГц.
4. Посмотрите мое сообщение. Я привел функции инициализации и чтения по ним видно что частоты минимальные, а задержки максимальные. Я так же в цикл вносил задержки, но положительного эффекта не получил.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4166546#p4166546"]kvn234, 1. Требуется калибровка из-за наличия ошибки смещения.[/uquote]
Если Вы не путаете с STM32, хотелось бы посмотреть на функцию калибровки.
Если Вы не путаете с STM32, хотелось бы посмотреть на функцию калибровки.
kvn234, Я же явно с самого начала озвучил, какой документ почитать. В нем калибровка так же описана. И есть ссылки на исходники.
- Сообщения: 1856
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="kvn234",url="/forum/viewtopic.php?p=4166557#p4166557"]2. Поменял контроллер - проблема осталась. Да и USART работает без сбоев (принимаю на комп).[/uquote]Попробуйте почитать температурный сенсор. Если с него показания получаются стабильные (как и с Vref), то возможно что-то не так с питанием или разводкой внешних каналов.
[uquote="jcxz",url="/forum/viewtopic.php?p=4167412#p4167412"][uquote="kvn234",url="/forum/viewtopic.php?p=4166557#p4166557"]2. Поменял контроллер - проблема осталась. Да и USART работает без сбоев (принимаю на комп).[/uquote]Попробуйте почитать температурный сенсор. Если с него показания получаются стабильные (как и с Vref), то возможно что-то не так с питанием[/uquote]
Но если показания Vref стабильные, разве это не говорит о стабильности питания?
Добавлено after 8 minutes 38 seconds:
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167378#p4167378"]kvn234, Я же явно с самого начала озвучил, какой документ почитать. В нем калибровка так же описана. И есть ссылки на исходники.[/uquote]
Вы теоретик или у Вас есть исходники функций? В интернете много информации но не всегда знаешь где искать нужную. Прочитал данную тему 90% общих рассуждений и сообщений "кто круче".
Но если показания Vref стабильные, разве это не говорит о стабильности питания?
Добавлено after 8 minutes 38 seconds:
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167378#p4167378"]kvn234, Я же явно с самого начала озвучил, какой документ почитать. В нем калибровка так же описана. И есть ссылки на исходники.[/uquote]
Вы теоретик или у Вас есть исходники функций? В интернете много информации но не всегда знаешь где искать нужную. Прочитал данную тему 90% общих рассуждений и сообщений "кто круче".
kvn234, я, по Вашему, что-ли должен открывать AN3137 и исходники, на которые он ссылается, и копировать избранное оттуда на этот форум, только потому, что Вам самому лениво?
Пока Вы не поймете, что здесь никто Вам ничего не должен, пользы от общения на этом форуме не получите. Лично я считаю бессмысленным обсуждать ADC в STM8L с человеком, категорически отказывающимся прочитать документ производителя именно об ошибках преобразования ADC в STM8L и о способах их минимизации. Причем ссылки на все исходники этот документ содержит.
Пока Вы не поймете, что здесь никто Вам ничего не должен, пользы от общения на этом форуме не получите. Лично я считаю бессмысленным обсуждать ADC в STM8L с человеком, категорически отказывающимся прочитать документ производителя именно об ошибках преобразования ADC в STM8L и о способах их минимизации. Причем ссылки на все исходники этот документ содержит.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167561#p4167561"]kvn234, я, по Вашему, что-ли должен открывать AN3137 и исходники, на которые он ссылается, и копировать избранное оттуда на этот форум, только потому, что Вам самому лениво?[/uquote]
Можно дать ссылку на конкретную страницу.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167561#p4167561"]kvn234,Пока Вы не поймете, что здесь никто Вам ничего не должен, пользы от общения на этом форуме не получите.[/uquote]
Если бы Вы прочитали мое сообщение, а не торопились показать свою крутизну, Вы бы поняли, что вопрос был не о точности измерений, а об их нестабильности. И я привел исходники не очень большие.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167561#p4167561"]kvn234 Лично я считаю бессмысленным обсуждать ADC в STM8L с человеком, категорически отказывающимся прочитать документ производителя именно об ошибках преобразования ADC в STM8L и о способах их минимизации.[/uquote]
С чего Вы взяли, что я не читал данный документ?
Я Вас не просил отвечать. Я хочу получить ответы от человека который сталкивался с данной проблемой и нашел решение.
А такие теоретики засрали весь форум.
Можно дать ссылку на конкретную страницу.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167561#p4167561"]kvn234,Пока Вы не поймете, что здесь никто Вам ничего не должен, пользы от общения на этом форуме не получите.[/uquote]
Если бы Вы прочитали мое сообщение, а не торопились показать свою крутизну, Вы бы поняли, что вопрос был не о точности измерений, а об их нестабильности. И я привел исходники не очень большие.
[uquote="ПростоНуб",url="/forum/viewtopic.php?p=4167561#p4167561"]kvn234 Лично я считаю бессмысленным обсуждать ADC в STM8L с человеком, категорически отказывающимся прочитать документ производителя именно об ошибках преобразования ADC в STM8L и о способах их минимизации.[/uquote]
С чего Вы взяли, что я не читал данный документ?
Я Вас не просил отвечать. Я хочу получить ответы от человека который сталкивался с данной проблемой и нашел решение.
А такие теоретики засрали весь форум.
Последний раз редактировалось kvn234 Вт янв 25, 2022 11:28:46, всего редактировалось 1 раз.


