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

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

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

Сообщение Z_h_e »

В том же ДШ поглядите что должно быть написано на корпусе чипа и вроде такого не должно быть :dont_know: . Для программирования STM8S используются выводы RESET и SWIM. Поглядите куда подключены пины разъема. Заводская прошивка наверняка залочена.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Тем, для кого документация на английском по STM8 мало употребима, возможно есть смысл полистать нижеуказанную книжку. Она хоть и содержит просто адское количество опечаток и грамматических ошибок, но все же кое-что полезное из нее выудить возможно.

https://dfiles.ru/files/67qp9qs7n

Изображение
Вложения
2018-02-03_212500.jpg
(58.27 КБ) 3066 скачиваний
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Очередной гугло-перевод RM.
К ляпам оригинала добавилась отсебятина "переводчика"
Однозначно в топку.
Аватара пользователя
Psych
Опытный кот
Сообщения: 848
Зарегистрирован: Ср мар 02, 2011 07:47:39
Откуда: Уфа

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

Сообщение Psych »

Никто не сталкивался:
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо. Такое очучение что прескейлер не пашет сразу.

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

TIM2_PSCR_PSC=15;
TIM2_ARRH=0x05;
TIM2_ARRL=0xff;  //-------около 5 секунд
TIM2_CR1_ARPE=1;
TIM2_IER_UIE=1;
TIM2_SR1_UIF=0;
   
   __enable_interrupt();

TIM2_CR1_CEN=1; 

#pragma vector=TIM2_OVR_UIF_vector
__interrupt void TIM2(void)
{
  TIM2_SR1_UIF=0;
  __no_operation();
}
Это потрясающе бесит :evil:
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
AndyBig
Грызет канифоль
Сообщения: 250
Зарегистрирован: Ср янв 17, 2018 13:09:14

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

Сообщение AndyBig »

А по какому флагу происходит прерывание?
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

Если попробовать вот так?

TIM2_PSCR_PSC=15;
TIM2_ARRH=0x05;
TIM2_ARRL=0xff; //-------около 5 секунд
TIM2_CR1_ARPE=1;
TIM2_IER_UIE=1;
TIM2_EGR=1;
TIM2_SR1_UIF=0;

Добавлено after 2 minutes 37 seconds:
Конечно стоит еще пошагово пройтись, ошибки в описании регистров бывают к сожалению.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

[uquote="Psych",url="/forum/viewtopic.php?p=3304159#p3304159"]Никто не сталкивался:
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо.[/uquote]

Новое значение в прескалер заносится по факту наступления Update Event, а не когда выполняется присваивание TIM2_PSCR_PSC=15. Для активизации значения, занесенного в TIM2_PSCR_PSC необходимо сгенерировать событие обновления. Сделать это можно, определив "универсальный" макрос для любого таймера:

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


#define TIM4_SR1                TIM4_SR          
#define RESET_TIMER(T)          T##_CR1_URS = 1;\
                                T##_EGR_UG  = 1;\
                                T##_SR1     = 0;\
                                T##_CR1_URS = 0

и затем вызвав его в вашем случае так:

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

RESET_TIMER(TIM2)
Аватара пользователя
Psych
Опытный кот
Сообщения: 848
Зарегистрирован: Ср мар 02, 2011 07:47:39
Откуда: Уфа

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

Сообщение Psych »

Огромное вам спасибо.
Chettuser

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

Сообщение Chettuser »

[uquote="Psych",url="/forum/viewtopic.php?p=3304159#p3304159"]Никто не сталкивался:
После включения таймера практически сразу вызывается прерывание. После отработки таймер пашет как надо.[/uquote]
В STM32 есть такой бит - UG. Я не знаю есть ли он в этих, но его рекомендуют ставить, что бы прописать все значения в регистры таймера при настройке.
Аватара пользователя
grafgrial
Родился
Сообщения: 14
Зарегистрирован: Ср июл 29, 2015 16:50:20

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

Сообщение grafgrial »

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

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

Сообщение Z_h_e »

Вывода VCC, nRES, SWIM, GND. На ST-LINK они подписаны. На МК смотрите ДШ. Если МК не в плате с готовой разводкой, то нужно повесить кондер на вывод Vcap.

З.Ы. Обычно лочат прошивки.

Добавлено after 2 minutes 39 seconds:
Считать можно программой от изготовителя "ST Visual Programmer"
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
grafgrial
Родился
Сообщения: 14
Зарегистрирован: Ср июл 29, 2015 16:50:20

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

Сообщение grafgrial »

Если я правильно понимаю
VCC нужно подключить на ножку 8 с кондером на землю (а 3.3 вольта или 5)
nRES - 4 ножка
SWIM-18 ножка
GND - никуда?
Изображение

Если она даже залочена я не смогу ее копию сделать? на другой МК
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

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

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

Сообщение Z_h_e »

GND программатора к Vss контроллера.
5 или 3.3В программатора к Vdd
Кондер на Vcap микроконтроллера.

Добавлено after 4 minutes 11 seconds:
grafgrial писал(а):Если она даже залочена я не смогу ее копию сделать? на другой МК
"ST Visual Programmer" при считывании прошивки сразу скажет, что она залочена (если залочена). Имейте ввиду снятие защиты от чтения, очищает память программ или по-русски произведет окирпичивание.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

[uquote="Z_h_e",url="/forum/viewtopic.php?p=3315240#p3315240"]или по-русски произведет окирпичивание.[/uquote]

Ну не стоит пугать - просто станет девственно чистой, готовой к новым издевательствам...
Аватара пользователя
AndyBig
Грызет канифоль
Сообщения: 250
Зарегистрирован: Ср янв 17, 2018 13:09:14

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

Сообщение AndyBig »

Но девайс на ее основе превратится при этом в кирпич :)
Chettuser

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

Сообщение Chettuser »

Спойлер[uquote="dosikus",url="/forum/viewtopic.php?p=3317360#p3317360"]девственно чистой, готовой к новым издевательствам...[/uquote]
Ооо! Мусьё знает толк...! :)))
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

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

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

Сообщение Z_h_e »

Z_h_e писал(а):Имейте ввиду снятие защиты от чтения, очищает память программ или по-русски произведет окирпичивание.
устройства.
Недописанное слово... Я думаю почти всем понятно было что имелось ввиду. Но "почти не считается". Уточняющая поправка dosikus верная.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Бубоник
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс авг 16, 2015 13:08:53

STM8 и таймер 1

Сообщение Бубоник »

Всем привет! Столкнулся с такой проблемой. Не могу записать 16-битные данные в регистры TIM1_PSCRH + TIM1_PSCRL. То есть они в памяти контроллера лежат рядом, соотвественно я хочу сразу заталкать 16-битное число по адресу TIM1_PSCRH то есть 0x5260. Но че-то оно ни как не хочет изменять значение регистра. Если мне записывать значение по очереди по 8 бит в каждый регистр, то хавает. Че за бяда? Или я много хочу от 8 битного контроллера? P.S. Так пробовал экспериментировать с ПИК-ушками работает нормально.

Добавлено after 10 minutes 18 seconds:
В основном коде пишу так

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

void init_timer1(void)
{
  //Настройка Таймера1

  // Синхронизация как ведущий с периферией отключена
    TIM1_CR2 = 0;
  // Синхронизация как ведомый с периферией отключена
    TIM1_SMCR = 0;
    // Внешнее тактирование отключено
    TIM1_ETR = 0;
    // Прерывание по обновлению счетного регистра разрешено
    TIM1_IER = MASK_TIM1_IER_UIE;
    // Предделитель - 0
//TIM1_PSCRH=0x02;
//TIM1_PSCRL=0x40;
      TIM1_PSCR=576;
     // TIM1_ARR=8000;
//Установка максимального значение таймера 1

}
Далее... Откуда я взял TIM1_PSCR, естественно я его прописал в библиотеке iostm8s003k3.h вот таким образом

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

...................
__IO_REG16   (TIM1_PSCR,  0x5260,  __WRITE);
..................
Далее __IO_REG16 я прописал в io_macros.h вот это

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

 
*--------------------------------------------*/
#define __IO_REG16(NAME, ADDRESS, ATTRIBUTE)              \
                  __near __no_init volatile ATTRIBUTE unsigned int NAME @ ADDRESS;
........
__IO_REG16 На считывание работает нормально так как изначально этот код у меня был запилен под АЦП и работает нормально. А с записью косяк получается

Добавлено after 25 minutes 13 seconds:
Конечно геморой можно вылечить таким кодом

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

.................  
  gg=576;
TIM1_PSCRH=gg>>8;
TIM1_PSCRL=gg;
...........
но че-то все таки хочется сделать как полагается, раз в документации указанно что TIM1_PSCR содержит 16 битное значение значит должен принимать 16 битные числа.
Ответить

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