Какой ужас!!!axillent писал(а):Собираю библиотеку универсальную под avr8/stm8/stm32.
Программирование STM8
Re: Программирование STM8
"Я не даю готовых решений, я заставляю думать!"(С)
- Реклама
Re: Программирование STM8
Как-то это смахивает на не очень продуманное решение. Мало того, что это неоправдано-большое количество писанины, так из-за архитектурных отличий многие алгоритмы могут получится уж сильно не оптимальными для одной или другой платформы.axillent писал(а):Собираю библиотеку универсальную под avr8/stm8/stm32.
Re: Программирование STM8
2+2 будет по разному считаться?a5021 писал(а):так из-за архитектурных отличий многие алгоритмы могут получится уж сильно не оптимальными для одной или другой платформы.
общее в библиотеке будет уровень приложения, на этом уровне логика простая никак не завязанная на конкретную архитектуру
минимальное задействие физических интерфейсов выделено в отдельный уровень где под каждую архитектуру/МК своя писанина
но по теме я ответ уже получил, больше тему здесь предлагаю не развивать
Re: Программирование STM8
Мне показалось, что вы не за "2+2" переживали, когда насчет дифайнов с инклюдами спрашивали. Чтобы оптимально использовать ресурсы разных платформ, в какой-нибудь динамической индикации, например, вообще ведь ни одной общей строчки может не оказаться. Алгоритм разный получится. Механизм.axillent писал(а):2+2 будет по разному считаться?
Re: Программирование STM8
Разбираюсь с таймерами 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);
}
- Реклама
Re: Программирование STM8
Убогая попытка решения задачи... аля ПЫХ-АВР... Если я всё правильно понял... то настройте один канал таймера на захват со сбросом... пример настройки есть в PWM Input... другой канал настройте на сравнение... с временем больше самого длинного возможного периода... Тогда у вас будет всего одно прерывание... по отсутствию импульсов... а не дрочня с прерываниями на каждом импульсе...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Программирование STM8
Добрый день!
Подскажите, пожалуйста: имеется устройство, на плате которого стоит 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/ ?
- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Re: Программирование STM8
Первый не знаю, а вот последние два подойдут.
Я не волшебник, я только лечусь
Re: Программирование STM8
Не факт, что там нет защиты от считывания.
- Gurvinok
- Нашел транзистор. Понюхал.
- Сообщения: 198
- Зарегистрирован: Вт ноя 07, 2006 00:09:58
- Откуда: Москва
- Контактная информация:
Re: Программирование STM8
А вопрос стоял о возможности технически считать прошивку. Если данный МК залочен, то уже никакими силами ее оттуда не вытащить. Конечно есть один способ, но его цена будет выше чем оплата программера который напишет новую прошивку с нуля.
Я не волшебник, я только лечусь
Re: Программирование STM8
Предполагается опытным путем проверить возможность считывания)
Re: Программирование STM8
Добрый день! Еще вопрос в догонку, а можно ли использовать STM8SVL discovery http://www.chipdip.ru/product/stm8svldiscovery/ для STM8L с моими целями (прошивка-чтение) ?
- GARMIN
- Держит паяльник хвостом
- Сообщения: 953
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Программирование STM8
Да, там уже разъём есть. Только отломай программатор.
Re: Программирование STM8
Коллеги.
Не озарите отблеском мудрости?
Хочу программный эмулятор STM8
А то прикупил на мизер... ээ на алиэкспрессе 003их, а оно мало того, что теперь программатора жду, так ещё и число прошивок сильно ограничено
Нашёл модель для протеуса, но там эмулятора нет.
Не озарите отблеском мудрости?
Хочу программный эмулятор STM8
А то прикупил на мизер... ээ на алиэкспрессе 003их, а оно мало того, что теперь программатора жду, так ещё и число прошивок сильно ограничено
Нашёл модель для протеуса, но там эмулятора нет.
- GARMIN
- Держит паяльник хвостом
- Сообщения: 953
- Зарегистрирован: Вс дек 02, 2012 16:58:33
- Откуда: от туда
- Контактная информация:
Re: Программирование STM8
IAR прекрасно эмулирует STM8.
Re: Программирование STM8
Ага! Спасибо.GARMIN писал(а):IAR прекрасно эмулирует STM8.
Re: Программирование STM8
Я читал, по-моему, на этом форуме что хоть он для STM8S, но должен подойти и для STM8L . Но смутило, что в документации написано типа "use only with STM8S series" . У STM8L же напряжение питания ниже, нужно, видимо, и этот момент учесть?GARMIN писал(а):Да, там уже разъём есть. Только отломай программатор.
Не подскажете каким софтом проще всего воспользоваться для проверки возможности считать прошивку? А то я новичек в этом деле, уже голова пухнет от чтения. Простого FAQа/мануала не нашел..
Re: Программирование STM8
Не забивайте голову ерундой. Реальное число прошивок, много больше указанных цифр в даташите.esisl писал(а):А то прикупил на мизер... ээ на алиэкспрессе 003их, а оно мало того, что теперь программатора жду, так ещё и число прошивок сильно ограничено
Сам Labcenter эмуляторов для stm8 не делал, а кто-то другой вряд ли за это возьмется.Нашёл модель для протеуса, но там эмулятора нет.
-
polyester
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Пн май 02, 2011 20:17:19
- Откуда: Средняя Волга
Re: Программирование STM8
Чего-то посмотрел на 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;
А сколько при этом сгенериться кода
И улетит туда вся флеш........ А сколько мороки с инитом другой периферии...... А новичку в STM вообще лучше не лазить - только голову сломать и расхотеть вообще контроллерами заниматься. Не знаю как в крупных кирпичах, а в мелких и средних STM Атмелу и Пику не конкурент ни разу (даже на горизонте не пробегал). Не даром за столько лет так толком и не появился в конструкциях. Протухнут чувствую у меня эти STM8S.... 
мега
__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;
А сколько при этом сгенериться кода
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
eeprom в stm8 можно организовать просто (код для IARа - имхо самая правильная среда для stm8 и avr) :
чтение очень просто, занимает намного меньше чем в АВР - просто пересылка из области eeprom в память, все находится в едином адресном пространстве:
в листинге всего то две команды:
запись тоже несложно:
случайным процессом испортить eeprom stm8 практически невозможно, вот в АВР, бывало раньше, по адресу 0 eeprom портилась регулярно
А что за "морока с инитом другой периферии" - имхо периферия stm8 весьма проста, после прочтения документации, чуть поднавороченней чем в АВР, зато и возможностей намного больше. А программатор - отладчик копеечный? А цена в минимум в в 2 раза дешевле чем аналогичный АВР. После 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Код: Выделить всё
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));
}А что за "морока с инитом другой периферии" - имхо периферия stm8 весьма проста, после прочтения документации, чуть поднавороченней чем в АВР, зато и возможностей намного больше. А программатор - отладчик копеечный? А цена в минимум в в 2 раза дешевле чем аналогичный АВР. После stm8 на avr и смотреть не хочется.


