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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

axillent писал(а):Собираю библиотеку универсальную под avr8/stm8/stm32.
Какой ужас!!! :facepalm:
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

axillent писал(а):Собираю библиотеку универсальную под avr8/stm8/stm32.
Как-то это смахивает на не очень продуманное решение. Мало того, что это неоправдано-большое количество писанины, так из-за архитектурных отличий многие алгоритмы могут получится уж сильно не оптимальными для одной или другой платформы.
Реклама
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

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

Сообщение axillent »

a5021 писал(а):так из-за архитектурных отличий многие алгоритмы могут получится уж сильно не оптимальными для одной или другой платформы.
2+2 будет по разному считаться?
общее в библиотеке будет уровень приложения, на этом уровне логика простая никак не завязанная на конкретную архитектуру
минимальное задействие физических интерфейсов выделено в отдельный уровень где под каждую архитектуру/МК своя писанина
но по теме я ответ уже получил, больше тему здесь предлагаю не развивать
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

axillent писал(а):2+2 будет по разному считаться?
Мне показалось, что вы не за "2+2" переживали, когда насчет дифайнов с инклюдами спрашивали. Чтобы оптимально использовать ресурсы разных платформ, в какой-нибудь динамической индикации, например, вообще ведь ни одной общей строчки может не оказаться. Алгоритм разный получится. Механизм.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
JustRom
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Сб фев 06, 2016 14:26:07

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

Сообщение JustRom »

Разбираюсь с таймерами STM8, но т.к. я пока еще нуб, то видимо делаю что-то не так...

В общем, есть МК STM8L151K6, на его ножку (PD0) поступают импульсы. Необходимо проверить само наличие импульсов на ножке (которые могут быть разной длительности, но сама длительность или частота, в данном случае, не интересуют). Пытаюсь настроить второй канал таймера (TIM3_CH2) на захват по заднему фронту, с попаданием в прерывание. Но видимо что-то не учитываю.

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

void init(void){
  
  GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Fast);
  //Настройка ножки PD0 как входа таймера TIM3_CH2
  GPIO_Init(GPIOD, GPIO_Pin_0, GPIO_Mode_In_PU_No_IT);
  
  //Настройка тактирования таймера
  CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE);
  //Настройка TIM3_CH2 в режиме захвата-сравнения по заднему фронту
  TIM3_TimeBaseInit(TIM3_Prescaler_64, TIM3_CounterMode_Up, 0xFFFF);
  TIM3_ICInit(TIM3_Channel_2, TIM3_ICPolarity_Falling, TIM3_ICSelection_DirectTI, TIM3_ICPSC_DIV1, 10);
  TIM3_SelectInputTrigger(TIM3_TRGSelection_TI1FP1);
  TIM3_SelectSlaveMode(TIM3_SlaveMode_Reset);
  //разрешаем прерывания
  TIM3_ClearFlag(TIM3_FLAG_CC2);
  TIM3_ITConfig(TIM3_IT_CC2, ENABLE);
  TIM3_Cmd(ENABLE);

}

#pragma vector=0x18
__interrupt void TIM3_CAP_COM_IRQHandler(void){
    GPIOB->ODR = 1;
    TIM3_ClearFlag(TIM3_FLAG_CC2);
}
Суть проблемы в том, что в прерывание попасть не получается. Видимо ошибся с настройкой таймера, но не могу понять где именно. Заранее спасибо за помощь!
Реклама
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Убогая попытка решения задачи... аля ПЫХ-АВР... Если я всё правильно понял... то настройте один канал таймера на захват со сбросом... пример настройки есть в PWM Input... другой канал настройте на сравнение... с временем больше самого длинного возможного периода... Тогда у вас будет всего одно прерывание... по отсутствию импульсов... а не дрочня с прерываниями на каждом импульсе...
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
alexey.m
Родился
Сообщения: 4
Зарегистрирован: Ср фев 24, 2016 08:24:34

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

Сообщение alexey.m »

Добрый день!
Подскажите, пожалуйста: имеется устройство, на плате которого стоит STM8L151c8t6. Требуется попытаться сохранить с него прошивку и записать ее на аналогичное устройство (обновить). Какое минимальное оборудование для этого потребуется? Достаточного ли такого свистка http://roboparts.ru/products/st-link-v2 ? Или что-то такое http://www.avrki.ru/articles/content/stlink/ или http://www.chipdip.ru/product/st-link-v2/ ?
Аватара пользователя
Gurvinok
Нашел транзистор. Понюхал.
Сообщения: 198
Зарегистрирован: Вт ноя 07, 2006 00:09:58
Откуда: Москва
Контактная информация:

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

Сообщение Gurvinok »

Первый не знаю, а вот последние два подойдут.
Я не волшебник, я только лечусь
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Не факт, что там нет защиты от считывания.
Аватара пользователя
Gurvinok
Нашел транзистор. Понюхал.
Сообщения: 198
Зарегистрирован: Вт ноя 07, 2006 00:09:58
Откуда: Москва
Контактная информация:

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

Сообщение Gurvinok »

А вопрос стоял о возможности технически считать прошивку. Если данный МК залочен, то уже никакими силами ее оттуда не вытащить. Конечно есть один способ, но его цена будет выше чем оплата программера который напишет новую прошивку с нуля.
Я не волшебник, я только лечусь
alexey.m
Родился
Сообщения: 4
Зарегистрирован: Ср фев 24, 2016 08:24:34

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

Сообщение alexey.m »

Предполагается опытным путем проверить возможность считывания)
alexey.m
Родился
Сообщения: 4
Зарегистрирован: Ср фев 24, 2016 08:24:34

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

Сообщение alexey.m »

Добрый день! Еще вопрос в догонку, а можно ли использовать STM8SVL discovery http://www.chipdip.ru/product/stm8svldiscovery/ для STM8L с моими целями (прошивка-чтение) ?
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 953
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

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

Сообщение GARMIN »

Да, там уже разъём есть. Только отломай программатор.
esisl
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Ср мар 02, 2016 09:07:19

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

Сообщение esisl »

Коллеги.
Не озарите отблеском мудрости?

Хочу программный эмулятор STM8
А то прикупил на мизер... ээ на алиэкспрессе 003их, а оно мало того, что теперь программатора жду, так ещё и число прошивок сильно ограничено :(
Нашёл модель для протеуса, но там эмулятора нет.
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 953
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

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

Сообщение GARMIN »

IAR прекрасно эмулирует STM8.
esisl
Первый раз сказал Мяу!
Сообщения: 25
Зарегистрирован: Ср мар 02, 2016 09:07:19

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

Сообщение esisl »

GARMIN писал(а):IAR прекрасно эмулирует STM8.
Ага! Спасибо.
alexey.m
Родился
Сообщения: 4
Зарегистрирован: Ср фев 24, 2016 08:24:34

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

Сообщение alexey.m »

GARMIN писал(а):Да, там уже разъём есть. Только отломай программатор.
Я читал, по-моему, на этом форуме что хоть он для STM8S, но должен подойти и для STM8L . Но смутило, что в документации написано типа "use only with STM8S series" . У STM8L же напряжение питания ниже, нужно, видимо, и этот момент учесть?
Не подскажете каким софтом проще всего воспользоваться для проверки возможности считать прошивку? А то я новичек в этом деле, уже голова пухнет от чтения. Простого FAQа/мануала не нашел..
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

esisl писал(а):А то прикупил на мизер... ээ на алиэкспрессе 003их, а оно мало того, что теперь программатора жду, так ещё и число прошивок сильно ограничено :(
Не забивайте голову ерундой. Реальное число прошивок, много больше указанных цифр в даташите.
Нашёл модель для протеуса, но там эмулятора нет.
Сам Labcenter эмуляторов для stm8 не делал, а кто-то другой вряд ли за это возьмется.
polyester
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пн май 02, 2011 20:17:19
Откуда: Средняя Волга

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

Сообщение polyester »

Чего-то посмотрел на STM8, вот, думал, замена мегам :)) А посмотрел поближе - какой же это геморрой. Да хоть бесплатно они пусть будут. При таких заумностях и кривых средах под них - легче на мегах делать. Вот чего только стоит это - запись в EEPROM к примеру в IAR:
мега
__EEPUT(0x40,status.byte);


stm8
char *adress = (char *) 0x4000;
if (FLASH_IAPSR_DUL == 0)
{
FLASH_DUKR = 0xae;
FLASH_DUKR = 0x56;
while (FLASH_IAPSR_DUL == 0)
{
}
}
*address = status.byte;
FLASH_IAPSR_DUL = 0;

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

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

Сообщение oleg110592 »

eeprom в stm8 можно организовать просто (код для IARа - имхо самая правильная среда для stm8 и avr) :

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

typedef struct Par_t
{
    uint16_t temperature;
    uint16_t time;
    uint8_t gain;    
}Par_t;

#pragma location=0x4000
__no_init Par_t Par;
#pragma required=Par
чтение очень просто, занимает намного меньше чем в АВР - просто пересылка из области eeprom в память, все находится в едином адресном пространстве:

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

uint16_t temperature, time;

temperature = Par.temperature;
time = Par.time;
в листинге всего то две команды:

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

LDW X, L:0x4000
LDW L:temperature, X
...
LDW X, L:0x4002
LDW L:time, X

запись тоже несложно:

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

mcu_eeprom_unlock();
Par.temperature = 560;
Par.time = time;
FLASH->IAPSR &= ~FLASH_IAPSR_DUL; //EEPROM lock

void mcu_eeprom_unlock(void) //Разблокировать EEPROM
{
    FLASH->DUKR = ((unsigned char)0xAE);
    FLASH->DUKR = ((unsigned char)0x56);
    while (!(FLASH->IAPSR & FLASH_IAPSR_DUL));
}
случайным процессом испортить eeprom stm8 практически невозможно, вот в АВР, бывало раньше, по адресу 0 eeprom портилась регулярно

А что за "морока с инитом другой периферии" - имхо периферия stm8 весьма проста, после прочтения документации, чуть поднавороченней чем в АВР, зато и возможностей намного больше. А программатор - отладчик копеечный? А цена в минимум в в 2 раза дешевле чем аналогичный АВР. После stm8 на avr и смотреть не хочется.
Ответить

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