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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
JustRom
Первый раз сказал Мяу!
Сообщения: 29
Зарегистрирован: Сб фев 06, 2016 14:26:07

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

Сообщение JustRom »

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

__halt()
Ser-B
Первый раз сказал Мяу!
Сообщения: 35
Зарегистрирован: Вт ноя 02, 2010 20:21:53

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

Сообщение Ser-B »

JustRom, спасибо. В иаре это asm("halt");. А как выйти из этого режима изменению уровня на ножке?
Я так понимаю для начала надо настроить прерывание: PA_CR2_bit.C23 =1;?
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

Вот что написано про команду HALT в документе Programming manual.
The interrupt mask is reset, allowing interrupts to be fetched. Then the
oscillator is stopped thus stopping the CPU and all internal peripherals,
reducing the microcontroller to its lowest possible power consumption. The
microcontroller resumes program execution after an external interrupt or
reset, by restarting the oscillator,and then, fetching the corresponding
external interrupt, which is generally an I/O interrupt, or the reset vector.
Ser-B писал(а):Я так понимаю для начала надо настроить прерывание: PA_CR2_bit.C23 =1;?
Кроме этого еще есть специальный регистр для внешних прерываний.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
a_klyuev
Друг Кота
Сообщения: 3085
Зарегистрирован: Вт дек 25, 2012 14:51:33
Откуда: Санкт-Петербург

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

Сообщение a_klyuev »

Всем привет. Приперло мне тут на STM8L051F3 завести бибикалку. Погуглил примеры - все какая то лажа попадалась. Даже уважаемый DI HALT в своих уроках, об этом девайсе презрительно отозвался, и ничего не привел в пример. Поэтому пришлось как следовает вкурить RM0031, и вот что получилось (код в IAR 100% рабочий):
//------------------------------------------------------------------------------
// Начальная инициализация бибикалки - без калибровки
// Нагрузка бибикалки высокоомная - вход операционника через RC цепь
// Поэтому на работу сигнала SWIM бибикалка не влияет
//------------------------------------------------------------------------------
void beeper_init(void)
{
/*
// На работу бипера не влияет
PA_DDR_bit.DDR0 = 1; // 0-й пин порта A на выход
PA_CR1_bit.C10 = 1; // режим push-pull on
CPU_CFG_GCR_SWD = 1; // Отключаем SWIM
*/

// Включаем тактирование BEEP
CLK_PCKENR1_bit.PCKEN16 = 1;

// Выключаем LSI 38кгц
CLK_ICKCR_LSION = 0;

// Сброс предделителя beeper'a
BEEP_CSR2_bit.BEEPDIV = 0x1F;

// Выключить калибровочный таймер
BEEP_CSR1_bit.MSR = 0;

// Калибровочная константа
BEEP_CSR2_bit.BEEPDIV = 0x0F;
// Частота 1 кгц +-1км
BEEP_CSR2_bit.BEEPSEL = 0x00;

// Источник тактирования BEEP - LSI
CLK_CBEEPR_bit.CLKBEEPSEL0 = 1;
CLK_CBEEPR_bit.CLKBEEPSEL1 = 0;

// Включаем LSI 38кгц
CLK_ICKCR_LSION = 1;
SomeDelay(1000);
}

//------------------------------------------------------------------------------
// Звуковой сигнал
//------------------------------------------------------------------------------
void beep(long delay, unsigned char tone)
{
// Сохраняем значение по умолчанию
unsigned char st = BEEP_CSR2_bit.BEEPDIV;

// Изменяем тон звучания
BEEP_CSR2_bit.BEEPDIV = tone;

// Включаем сигнал
BEEP_CSR2_bit.BEEPEN = 1;

// Гудим-с
SomeDelay(delay);

// Выключаем сигнал
BEEP_CSR2_bit.BEEPEN = 0;

// Возвращаем тон по умолчанию
BEEP_CSR2_bit.BEEPDIV = st;
}
Буду рад, если кому-нить пригодится.
Processor not found. Loaded software emulation ......
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

К слову сказать, STML051F3 и STM151F3 -- это один и тот же камень на идентичном кристалле.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

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

Сообщение scorpi_0n »

На сайте СТМ появился STM8CubeMX.
Chettuser

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

Сообщение Chettuser »

:shock: Бгыыы!!! :))) :))) :))) Щас начнётся... ждём кучу статей по его использованию :)))
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

В том виде, в каком он сейчас находится, использовать его можно весьма ограниченно. Я так и вовсе не придумал, какую пользу из этого можно извлечь.
Chettuser

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

Сообщение Chettuser »

А с него польза вообще есть? Кроме разве что картинки с распиновкой периферии.
Lww
Открыл глаза
Сообщения: 76
Зарегистрирован: Пт сен 09, 2016 23:08:30

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

Сообщение Lww »

Добрый день. Помогите пожалуйста, пытаюсь прошить stm8s103f3, но ничего не получается.
Программка примитивнейшая чтобы тупо зажечь светодиод, среда IAR 1.40.1, программатор st-link v2.

#include "stm8s.h"
int main() {
GPIOB->DDR |= (1<<5);
GPIOB->CR1 |= (1<<5);
GPIOB->CR2 |= (1<<5);
GPIOB->ODR |= (1<<5);
while (1) {
asm("nop");
}
}

Прошиваю ST visual programmer, пишет

< File successfully loaded. File Checksum 0x731B
> Programming PROGRAM MEMORY area...
Cut Version and Revision of device: 1.2
< PROGRAM MEMORY programming completed.
> Verifying PROGRAM MEMORY area...
Cut Version and Revision of device: 1.2
< PROGRAM MEMORY successfully verified.

Но ничего в итоге не работает, светодиод не зажигается. Read out protection запрограммировал в off. Поиск решения в гугле ничего не дал, в чем проблема?
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

А светодиод то у Вас как подключен, катодом или анодом к порту? Сдается мне что анодом на плюс и катодом на порт, тогда GPIOB->ODR &= ~(1<<5); Это дефолтное значения для ODR.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Lww
Открыл глаза
Сообщения: 76
Зарегистрирован: Пт сен 09, 2016 23:08:30

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

Сообщение Lww »

Попробовал, не помогло.
Даже если просто на пустой пин подаю "1", то на нем по-прежнему 0 вольт. Контроллер тупо не прошивается почему-то.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

С диодом то определились как включен?

Выполните по шагам программу и поглядите реальное состояние регистров порта, можно в референсе поглядеть их реальные адреса, не исключено что есть ошибки в файле описаний регистров.

В IAR есть вот такой файл #include "iostm8s103f3.h"

Код будет вроде такого:

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

       PB_DDR=MASK_PB_DDR_DDR5; 
        //PB_ODR=MASK_PB_ODR_ODR5;
        PB_CR1=MASK_PB_CR1_C15;  //пушпул
        PB_CR2=MASK_PB_CR2_C25;  //10MHz
Добавлено after 1 minute 49 seconds:
Lww писал(а):Даже если просто на пустой пин подаю "1", то на нем по-прежнему 0 вольт. Контроллер тупо не прошивается почему-то.
В смысле?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Lww
Открыл глаза
Сообщения: 76
Зарегистрирован: Пт сен 09, 2016 23:08:30

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

Сообщение Lww »

Вроде бы анодом на порт.
Я не особо понимаю, но кажется не меняются.

Попробовал Ваш код с #include "iostm8s103f3.h", теперь в симуляторе байты порта меняются, но физический МК по-прежнему молчит.
Вложения
цунц.png
(20.03 КБ) 265 скачиваний
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

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

Сообщение scorpi_0n »

Lww писал(а): МК по-прежнему молчит.
И правильно делает. Значит ещё не сгорел. Читать референс и даташит надо до, а не после.
In the open-drain output column, "T" defines a true open-drain I/O (P-buffer, weak pull-up, and protection diode to VDD are not implemented).
РВ5 - true open-drain I/O !!!!!!!!!!!!
Lww
Открыл глаза
Сообщения: 76
Зарегистрирован: Пт сен 09, 2016 23:08:30

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

Сообщение Lww »

Перекинул на С5 - по прежнему не работает, 0 вольт на пине.

Добавлено after 27 minutes 6 seconds:
Вот чудеса. После нескольких перетыканий питания и ребута программатора оно все таки заработало. Правда странно как-то. Пока не переткнешь питание программа не заработает. В стм32 помогал обычный ресет кнопкой либо автоматически после прошивки, а тут нет.
Всем большое спасибо.
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 953
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

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

Сообщение GARMIN »

Конденсатор 1 мкф подключён к ножке Vcap?
Аватара пользователя
RusikOk
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев
Контактная информация:

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

Сообщение RusikOk »

кому не сложно напишите простейший blink для STM8S003. светодиод на PA3, тактирование от внутреннего генератора. нужна не сама программа а hex файл прошивки.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

RusikOk писал(а):простейший blink для STM8S003. светодиод на PA3, тактирование от внутреннего генератора. hex файл прошивки.
->
Blink.zip
(507 байт) 235 скачиваний
Аватара пользователя
RusikOk
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев
Контактная информация:

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

Сообщение RusikOk »

oleg110592 писал(а):
RusikOk писал(а):простейший blink для STM8S003. светодиод на PA3, тактирование от внутреннего генератора. hex файл прошивки.
->
Blink.zip
благодарю! но не моргает! а тактирование от внутреннего источника?
Ответить

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