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

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

Сообщение HHIMERA »

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

Сообщение a5021 »

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

Сообщение axillent »

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

Сообщение a5021 »

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

Сообщение 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);
}
Суть проблемы в том, что в прерывание попасть не получается. Видимо ошибся с настройкой таймера, но не могу понять где именно. Заранее спасибо за помощь!
Реклама
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

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

Сообщение 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/ ?
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 198
Зарегистрирован: Вт ноя 07, 2006 00:09:58
Откуда: Москва

Сообщение Gurvinok »

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

Сообщение a5021 »

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

Сообщение Gurvinok »

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

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

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

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

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

Сообщение GARMIN »

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

Сообщение esisl »

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

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

Сообщение GARMIN »

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

Сообщение esisl »

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

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

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

Сообщение a5021 »

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

Сообщение 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.... :(
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение 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 и смотреть не хочется.
Ответить

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