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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Сообщение Pnjom-Penb »

А при чем здесь йяр или студия? :shock: Ни тот, ни другая понятия не имеют, как можно протелепатить тип м/к. Тем более, что это невозможно никак.
Реклама
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Какие глубокие познания!!!

Хватит флудить. FAKIR.
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

axillent писал(а):скажите, в IAR есть ли возможность в коде определить тип МК под который идет компилирование?
Тип МК задается в свойствах проекта, а не в коде. Там же можно задавать глобальные дифайны, по которым уже строить условную компиляцию кода.
Держит паяльник хвостом
Аватара пользователя
Сообщения: 960
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда

Сообщение GARMIN »

Изображение
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

a5021 писал(а): Тип МК задается в свойствах проекта, а не в коде. Там же можно задавать глобальные дифайны
где задается тимп МК мне известно
в атмел студии тип МК тоже задается в свойствах проекта
однако после определения типа МК студия автоматически передает препроцессору специально определенные дефайны по которым в коде можно узнать тип МК
например так:

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

#if defined(__AVR_ATmega128A__)
есть ли подобное (автоматическое и стандартное) в STM8?
Реклама
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

Pnjom-Penb писал(а):Ни тот, ни другая понятия не имеют, как можно протелепатить тип м/к. Тем более, что это невозможно никак.
вы ни там ни там не работали? зачем гадаете?
в студии тип МК задается в свойствах проекта после чего определить в коде тип МК пустяшное дело
Реклама
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Сообщение Pnjom-Penb »

axillent писал(а):в студии тип МК задается в свойствах проекта после чего определить в коде тип МК пустяшное дело
Вот именно! Тип МК - задается! То есть, не ЙАР (которых, кстати, разных - вагон и маленькая тележка), а именно вы задаете тип мк. Надеюсь, не нужно пояснять, как определить опции компилятора/линкера, с которыми они запускаются из IDE? :)
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

Pnjom-Penb писал(а):Вот именно!
это не имеет отношения к моему вопросу
мне нужно в коде при условной компиляции знать тип МК, я нигде не писал, что тип должен угадываться, мне нужен стандартный механизм как у атмела
но похоже такого нет
в отличии от атмела у которого для любого МК достаточно указать тип МК в опциях проекта, а потом работает универсальная строка кода

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

#include <avr/io.h>
для STM8 в IAR нужно не только указать тип МК в опциях проекта, но и включить хидер под конкретное семейство, например:

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

#include <iostm8s103f3.h> 
в лучшем случае я могу сослаться на дефайн который определяется в этом специфичном хидере, например __IOSTM8S103F3_H__
тогда после 1. указания типа МК в проекте 2. включения нужного хидера для семейства 3. смогу понять в условной компиляции какое семейство
ну или ручками задавать свой дефайн

смотрю документацию на програмирование Си для STM8 в IAR, тоже не вижу никаких стандартных дефайнов
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

В AVR тип контроллера тоже не задаётся, он жестко прописан в соответствующем хидере. И если его не подключить, узнать тип контроллера будет проблематично.

с STM такой финт не прокатывает, поскольку подход несколько другой - ядро отделено от периферии и выбираются раздельно, и если вам надо что-то условно компилировать то привязываться к конкретному контроллеру не имеет смысла - либо будет что-то зависеть только от конкретного семейства, либо от конкретной периферии - к этому и надо цепляться а не к конкретной модели контроллера.
Контактная информация:
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Сообщение Pnjom-Penb »

axillent писал(а):для STM8 в IAR нужно не только
Это первое упоминание о том, какой именно ЙАР имелся ввиду. Для IAR-AVR существуют "io<CPU>.h" файлы с макросами типа "__IOM1281_H", а в IAR-STM8 - "iostm8<CPU>.h" и макросы типа "__IOSTM8S103F2_H__". В любом случае, эти инклуды задаются вручную, а в проекте запросто м.б. указано "STM8 - unspecified". Какого-то способа, работающего одинаково во всех ЙАРах не встречал, потому и намекнул, что задается не ЙАРом (а рабочим окружением). :dont_know:

"Потому и не кусают" ©
Держит паяльник хвостом
Аватара пользователя
Сообщения: 960
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда

Сообщение GARMIN »

Изображение
Контактная информация:
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

Сообщение Pnjom-Penb »

И когда в опциях проекта задан, как в примере GARMIN'а, дефайн "STM8S103", это сразу же можно увидеть и в строке запуска компилятора, где появляется ключ "-D STM8S103", о чем вчера и было сказано.
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Сообщение axillent »

Alexeyslav писал(а):В AVR тип контроллера тоже не задаётся, он жестко прописан в соответствующем хидере. И если его не подключить, узнать тип контроллера будет проблематично.
Все наоборот. Я об этом выше уже два раза написал. Сначала выставляется руками тип в проекте, потом руками включается io.h именно этот, а не под конкретный МК
И дальше внутри по условной компиляции все автоматом подтянется под нужный МК
Т.е. Определить ручками МК нужно только в свойствах проекта, в любых других местах определить можно автоматически

Я не просто так на студию сослался. Так сложилось, что использую и avr и стал осваивать stm. Собираю библиотеку универсальную под avr8/stm8/stm32. Там планирую описывать преднастроенные драйверы некоторых переферий. Но это можно делать только в привязке к конкретному МК. С атмелом просто ставлю условия с дефайнами определяющими тип мк. А вот с stm8 по итогу обсуждения здесь выходит проще в исходнике ручками свой дефайн указывать
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

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

Сообщение a5021 »

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

Сообщение axillent »

a5021 писал(а):так из-за архитектурных отличий многие алгоритмы могут получится уж сильно не оптимальными для одной или другой платформы.
2+2 будет по разному считаться?
общее в библиотеке будет уровень приложения, на этом уровне логика простая никак не завязанная на конкретную архитектуру
минимальное задействие физических интерфейсов выделено в отдельный уровень где под каждую архитектуру/МК своя писанина
но по теме я ответ уже получил, больше тему здесь предлагаю не развивать
Друг Кота
Сообщения: 6457
Зарегистрирован: Пт сен 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/ ?
Ответить

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