Программирование STM8
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
А при чем здесь йяр или студия?
Ни тот, ни другая понятия не имеют, как можно протелепатить тип м/к. Тем более, что это невозможно никак.
- Реклама
Какие глубокие познания!!!
Хватит флудить. FAKIR.
Хватит флудить. FAKIR.
"Я не даю готовых решений, я заставляю думать!"(С)
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Тип МК задается в свойствах проекта, а не в коде. Там же можно задавать глобальные дифайны, по которым уже строить условную компиляцию кода.axillent писал(а):скажите, в IAR есть ли возможность в коде определить тип МК под который идет компилирование?
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
где задается тимп МК мне известноa5021 писал(а): Тип МК задается в свойствах проекта, а не в коде. Там же можно задавать глобальные дифайны
в атмел студии тип МК тоже задается в свойствах проекта
однако после определения типа МК студия автоматически передает препроцессору специально определенные дефайны по которым в коде можно узнать тип МК
например так:
Код: Выделить всё
#if defined(__AVR_ATmega128A__)- Реклама
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
вы ни там ни там не работали? зачем гадаете?Pnjom-Penb писал(а):Ни тот, ни другая понятия не имеют, как можно протелепатить тип м/к. Тем более, что это невозможно никак.
в студии тип МК задается в свойствах проекта после чего определить в коде тип МК пустяшное дело
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Вот именно! Тип МК - задается! То есть, не ЙАР (которых, кстати, разных - вагон и маленькая тележка), а именно вы задаете тип мк. Надеюсь, не нужно пояснять, как определить опции компилятора/линкера, с которыми они запускаются из IDE?axillent писал(а):в студии тип МК задается в свойствах проекта после чего определить в коде тип МК пустяшное дело
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
это не имеет отношения к моему вопросуPnjom-Penb писал(а):Вот именно!
мне нужно в коде при условной компиляции знать тип МК, я нигде не писал, что тип должен угадываться, мне нужен стандартный механизм как у атмела
но похоже такого нет
в отличии от атмела у которого для любого МК достаточно указать тип МК в опциях проекта, а потом работает универсальная строка кода
Код: Выделить всё
#include <avr/io.h>Код: Выделить всё
#include <iostm8s103f3.h> тогда после 1. указания типа МК в проекте 2. включения нужного хидера для семейства 3. смогу понять в условной компиляции какое семейство
ну или ручками задавать свой дефайн
смотрю документацию на програмирование Си для STM8 в IAR, тоже не вижу никаких стандартных дефайнов
В AVR тип контроллера тоже не задаётся, он жестко прописан в соответствующем хидере. И если его не подключить, узнать тип контроллера будет проблематично.
с STM такой финт не прокатывает, поскольку подход несколько другой - ядро отделено от периферии и выбираются раздельно, и если вам надо что-то условно компилировать то привязываться к конкретному контроллеру не имеет смысла - либо будет что-то зависеть только от конкретного семейства, либо от конкретной периферии - к этому и надо цепляться а не к конкретной модели контроллера.
с STM такой финт не прокатывает, поскольку подход несколько другой - ядро отделено от периферии и выбираются раздельно, и если вам надо что-то условно компилировать то привязываться к конкретному контроллеру не имеет смысла - либо будет что-то зависеть только от конкретного семейства, либо от конкретной периферии - к этому и надо цепляться а не к конкретной модели контроллера.
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
Это первое упоминание о том, какой именно ЙАР имелся ввиду. Для IAR-AVR существуют "io<CPU>.h" файлы с макросами типа "__IOM1281_H", а в IAR-STM8 - "iostm8<CPU>.h" и макросы типа "__IOSTM8S103F2_H__". В любом случае, эти инклуды задаются вручную, а в проекте запросто м.б. указано "STM8 - unspecified". Какого-то способа, работающего одинаково во всех ЙАРах не встречал, потому и намекнул, что задается не ЙАРом (а рабочим окружением).axillent писал(а):для STM8 в IAR нужно не только
"Потому и не кусают" ©
- Сообщения: 469
- Зарегистрирован: Вс авг 30, 2015 03:52:59
И когда в опциях проекта задан, как в примере GARMIN'а, дефайн "STM8S103", это сразу же можно увидеть и в строке запуска компилятора, где появляется ключ "-D STM8S103", о чем вчера и было сказано.
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
Все наоборот. Я об этом выше уже два раза написал. Сначала выставляется руками тип в проекте, потом руками включается io.h именно этот, а не под конкретный МКAlexeyslav писал(а):В AVR тип контроллера тоже не задаётся, он жестко прописан в соответствующем хидере. И если его не подключить, узнать тип контроллера будет проблематично.
И дальше внутри по условной компиляции все автоматом подтянется под нужный МК
Т.е. Определить ручками МК нужно только в свойствах проекта, в любых других местах определить можно автоматически
Я не просто так на студию сослался. Так сложилось, что использую и avr и стал осваивать stm. Собираю библиотеку универсальную под avr8/stm8/stm32. Там планирую описывать преднастроенные драйверы некоторых переферий. Но это можно делать только в привязке к конкретному МК. С атмелом просто ставлю условия с дефайнами определяющими тип мк. А вот с stm8 по итогу обсуждения здесь выходит проще в исходнике ручками свой дефайн указывать
Какой ужас!!!axillent писал(а):Собираю библиотеку универсальную под avr8/stm8/stm32.
"Я не даю готовых решений, я заставляю думать!"(С)
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Как-то это смахивает на не очень продуманное решение. Мало того, что это неоправдано-большое количество писанины, так из-за архитектурных отличий многие алгоритмы могут получится уж сильно не оптимальными для одной или другой платформы.axillent писал(а):Собираю библиотеку универсальную под avr8/stm8/stm32.
- Сообщения: 1040
- Зарегистрирован: Вс сен 25, 2011 19:09:33
2+2 будет по разному считаться?a5021 писал(а):так из-за архитектурных отличий многие алгоритмы могут получится уж сильно не оптимальными для одной или другой платформы.
общее в библиотеке будет уровень приложения, на этом уровне логика простая никак не завязанная на конкретную архитектуру
минимальное задействие физических интерфейсов выделено в отдельный уровень где под каждую архитектуру/МК своя писанина
но по теме я ответ уже получил, больше тему здесь предлагаю не развивать
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Мне показалось, что вы не за "2+2" переживали, когда насчет дифайнов с инклюдами спрашивали. Чтобы оптимально использовать ресурсы разных платформ, в какой-нибудь динамической индикации, например, вообще ведь ни одной общей строчки может не оказаться. Алгоритм разный получится. Механизм.axillent писал(а):2+2 будет по разному считаться?
- Сообщения: 29
- Зарегистрирован: Сб фев 06, 2016 14:26:07
Разбираюсь с таймерами STM8, но т.к. я пока еще нуб, то видимо делаю что-то не так...
В общем, есть МК STM8L151K6, на его ножку (PD0) поступают импульсы. Необходимо проверить само наличие импульсов на ножке (которые могут быть разной длительности, но сама длительность или частота, в данном случае, не интересуют). Пытаюсь настроить второй канал таймера (TIM3_CH2) на захват по заднему фронту, с попаданием в прерывание. Но видимо что-то не учитываю.
Суть проблемы в том, что в прерывание попасть не получается. Видимо ошибся с настройкой таймера, но не могу понять где именно. Заранее спасибо за помощь!
В общем, есть МК 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);
}
Убогая попытка решения задачи... аля ПЫХ-АВР... Если я всё правильно понял... то настройте один канал таймера на захват со сбросом... пример настройки есть в PWM Input... другой канал настройте на сравнение... с временем больше самого длинного возможного периода... Тогда у вас будет всего одно прерывание... по отсутствию импульсов... а не дрочня с прерываниями на каждом импульсе...
"Я не даю готовых решений, я заставляю думать!"(С)
- Сообщения: 4
- Зарегистрирован: Ср фев 24, 2016 08:24:34
Добрый день!
Подскажите, пожалуйста: имеется устройство, на плате которого стоит STM8L151c8t6. Требуется попытаться сохранить с него прошивку и записать ее на аналогичное устройство (обновить). Какое минимальное оборудование для этого потребуется? Достаточного ли такого свистка http://roboparts.ru/products/st-link-v2 ? Или что-то такое http://www.avrki.ru/articles/content/stlink/ или http://www.chipdip.ru/product/st-link-v2/ ?
Подскажите, пожалуйста: имеется устройство, на плате которого стоит STM8L151c8t6. Требуется попытаться сохранить с него прошивку и записать ее на аналогичное устройство (обновить). Какое минимальное оборудование для этого потребуется? Достаточного ли такого свистка http://roboparts.ru/products/st-link-v2 ? Или что-то такое http://www.avrki.ru/articles/content/stlink/ или http://www.chipdip.ru/product/st-link-v2/ ?


