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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 7114
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Еще пара вопросов появились. Как я выяснил методом тыка, отладка в железе работает только в конфигурации "Release", а не "Debug", как казалось бы и должно быть. Для чего тогда Debug? Для отладки в симуляторе?

Второе. Пошаговая отладка в IAR работает нормально, программа-мигалка блинкает если прогонять программу по шагам нажатием кнопки "Step over". При нажатии на кнопку "Go" ничего не происходит, светодиод постоянно светиться и не мигает... Хотя, если много раз нажимать последовательно "Go" и "Break" видно, как стрелочка в окне кода останавливается на рандомных строчках программы в цикле while в блоке main, и светодиод после остановки программы либо светиться, либо нет, в зависимости от того на какой строчке произошла остановка.

И, светодиод во время выполнения отладки не мигает, но светиться как-то тускло, а когда останавливаешь зажигается немного ярче. Похоже что он мигает, но с очень большой частотой. Такое впечатление, что отладчик игнорирует задержки. Один раз мне удалось тыканьем в кнопки заставить светодиод мигать в режиме отладки, но не помню как я этого добился.

Микроконтроллер STM8S103F3P, код мигалки под спойлером взят из интернета.
Спойлер#include <stdint.h>

#define __IO volatile

typedef struct GPIO_struct
{
__IO uint8_t ODR;
__IO uint8_t IDR;
__IO uint8_t DDR;
__IO uint8_t CR1;
__IO uint8_t CR2;
}
GPIO_TypeDef;

#define GPIOB_BaseAddress 0x5005
#define GPIOB ((GPIO_TypeDef *) GPIOB_BaseAddress)

static void delay(uint32_t t)
{
while(t--) {}
}

int main(void)
{
GPIOB->DDR |= (1 << 5);
GPIOB->ODR |= (1 << 5);
while(1)
{
GPIOB->ODR |= (1 << 5);
delay(100000UL);
GPIOB->ODR &= ~(1 << 5);
delay(100000UL);
}
}
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Держит паяльник хвостом
Аватара пользователя
Сообщения: 961
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда

Сообщение GARMIN »

Проверьте настройки в обоих конфигурациях, они независимые. Отладка прекрасно работает в обоих случаях.
Задержки может игнорировать из-за оптимизации компилятора. Иои уберите оптимизацию, или используйте volatile переменную в функции задержки.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7114
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Квалификатор volatile не помог, а после настроек оптимизации задержки стали работать, а светодиодик моргать. На самом высоком уровне оптимизации МК отказывался отрабатывать задержки при оптимизации по скорости. Ну да ладно, работает при оптимизации по размеру, и хорошо. Для меня обычно важнее бывает утрамбовать прошивку по размеру, чем оптимизировать ее по скорости выполнения. GARMIN, спасибо.

P.S. кстати, задержки не только в отладке не работали. И без отладки прошивка не хотела работать как нужно.
Астролябия-сама меряет, было бы что мерять!!!
Держит паяльник хвостом
Аватара пользователя
Сообщения: 961
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда

Сообщение GARMIN »

Просто задержки делаются совсем по другому.
С миллисекундным таймером и без циклов ожидания.
Тогда другие функции будут работать во время ожидания таймера в одной.
А у вас полная блокировка процессора на время ожидания.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 7114
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Ну да, delay - несомненное зло. Но сейчас я курю stm8 с самого начала, и мне бы чего побыстрее, на скорую руку, чтобы освоиться со средой программирования, программатором, самим микроконтроллером и его начальной инициализацией. До таймеров когда еще доберусь. Кстати, оптимизация по скорости выполнения скорее всего устранила задержки решив, что они зря жрут машинные циклы :)))
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Asmodey, может поможет: куча моих сниппетов на STM8.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7114
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Eddy_Em, а можно чуть более подробную информацию по этому проекту https://github.com/eddyem/STM8_samples/ ... r/Makefile ? Это генератор шума или генератор функций? Управляется по uart или можно кнопки, энкодеры и дисплей прикрутить. Контроллер как я понял STM8S105?
Астролябия-сама меряет, было бы что мерять!!!
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Asmodey, это шим-генератор всяких разных сигналов. Я думал было игрушку сделать музыкальную, но забил.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7114
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

А она умеет что-то делать в уже имеющемся виде? Хотелось бы разобрать какой-нибудь готовый проект для лучшего усваивания инфы по stm8, и вот этот Ваш приглянулся :)
Астролябия-сама меряет, было бы что мерять!!!
Родился
Сообщения: 2
Зарегистрирован: Чт июн 16, 2016 03:10:05

Сообщение nanocat »

Кто-нибудь сталкивался с невозможностью прошивки STM8 с aliexpress?
Заказал с aliexpress 10 штук STM8S105K4T6. Запаял в плату и не прошивается. Программатор просто не может связаться с микрокнтроллером.
Запаял вместо него другой STM8S105K4T6, но приобретенный в ЧипДипе. И этот чип видится и перепрошивается. Запаял прежний и опять не работает!

Есть у меня еще китайская плата с тем же STM8S105K4T6. Решил с ней поработать. Подключился к ней - все работает. Выпаял из платы чип, запаял несколько из купленной партии с алэкспресса. И ни один не работает!
По схемотехнике абсолютно точно все в порядке. Напряжения в норме на Vcap конденсатор 1 мкф.

В начале этой темы DrWatson отписался
1) "Чистый" микроконтроллер всегда стартует с загрузчика.
Может у новых МК отключен swim?
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

[uquote="nanocat",url="/forum/viewtopic.php?p=3730892#p3730892"]Напряжения в норме на Vcap конденсатор 1мкф[/uquote]
на Vcap напряжение 1.8В ?
на всякий, утилитка командной строки для прошивки stm8 под виндовс:
https://github.com/sensics/IR-Board-Pro ... /stm8flash
не самая свежая - опция -u может не работать, примеры командной строки для stm8s003f3:

Код: Выделить всё

stm8flash -cstlinkv2 -pstm8s003?3 -u
stm8flash -cstlinkv2 -pstm8s003?3 -s flash -w tru-la-la.hex
stm8flash -cstlinkv2 -pstm8s003?3 -s eeprom -w tru-la-la_ee.bin
stm8flash -cstlinkv2 -pstm8s003?3 -s opt -w rop.bin
исходники утилиты и информация:
https://github.com/vdudouyt/stm8flash
Родился
Сообщения: 2
Зарегистрирован: Чт июн 16, 2016 03:10:05

Сообщение nanocat »

[uquote="oleg110592",url="/forum/viewtopic.php?p=3730918#p3730918"]на Vcap напряжение 1.8В ?[/uquote]Да. В том то и дело, что в одной и той же обвязке stm8 из ЧипДип работают, а те что с aliexpress не работают
[uquote="oleg110592",url="/forum/viewtopic.php?p=3730918#p3730918"]на всякий, утилитка командной строки для прошивки stm8 под виндовс:[/uquote]То же не помогает. Кстати, как можно натянуть на эту программу графический интерфейс? Или это в двух словах не объяснить?
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Попробуйте нажать кнопку RESET или что-там есть, дать команду прошиться и тут же RSET отпустить. У меня как-то 103 так заработал, может случайно. Возможно в китайских МК прошивка сразу после старта отключает SWIM.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Asmodey писал(а):А она умеет что-то делать в уже имеющемся виде?
Я уже не помню. Но, судя по командам, вот что:
p - пищать/не пищать,
f - задать частоту,
t - генерировать пилу,
s - синусоида,
e - экспонента,
l - логарифм,
r - псевдослучайный шум.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

[uquote="nanocat",url="/forum/viewtopic.php?p=3730955#p3730955"]В том то и дело, что в одной и той же обвязке stm8 .... те что с aliexpress не работают[/uquote]
нога reset stm8 обычно подключена при прошивке к программатору. Единственное осталось это Option bytes - возможно там включен:
OPT4
EXTCLK: External clock selection
0: External crystal connected to OSCIN/OSCOUT
1: External clock signal on OSCIN
можно попробовать подать внешний тактовый сигнал на OSCIN - надо собрать простейший генератор на 74HC14
Изображение
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

oleg110592 писал(а):Единственное осталось это Option bytes - возможно там включен:
Камень все равно на HSI запускается. И чтобы перейти на внешний, надо соответствующие действия сделать с регистрами отвечающие за тактирование камня.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

[uquote="Z_h_e",url="/forum/viewtopic.php?p=3731001#p3731001"]Камень все равно на HSI запускается[/uquote]
и если тут же после запуска програмно переключить на внешний HSE и если нет физически кварца по идее зависнет на ожидании флага - в этом случае программатор сможет ли достучаться - лично не пробовал.
Например для 8-ми нога STM8S001J3, где ресета нет - есть рекомендации:
СпойлерИзображение
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

oleg110592 писал(а):и если тут же после запуска програмно переключить на внешний HSE и если нет физически кварца по идее зависнет на ожидании флага
Наверное тут зависит что быстрее отработает или вход в режим программирования или вшитая программа что-то сделает.
oleg110592 писал(а):Например для 8-ми нога STM8S001J3, где ресета нет - есть рекомендации:
Я пользуюсь таким камнем, вставил 5сек задержку старта, как в рекомендации. Однако это связано с тем , что нет лапы ресет и можно предположить, что любой другой камень с наличием внешнего резета должен программироваться при любой прошивке. Видимо надо SWIM подробно изучать. :)
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Друг Кота
Аватара пользователя
Сообщения: 7114
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Такая дилемма у меня... Что выбрать, IAR EW for STM8, или ST Visual Developer? Внешне и функционально они друг от друга не сильно различаются. Хотелось бы сразу выяснить, у которого подводных камней меньше. В частности, у кого из них компилятор имеет меньше расхождений с общепринятыми правилами программирования на Си? Меньше фирменной отсебятины, больше следования стандартам.
Астролябия-сама меряет, было бы что мерять!!!
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

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

Asmodey, я использую SDCC или COSMIC.
Здесь сравнение компиляторов.
Ответить

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