Программирование STM8
Re: Программирование STM8
PM0054
Programming manual
How to program STM8L and STM8AL Flash program memory
and data EEPROM
3.1 Low density STM8L101x microcontrollers
One block (64 bytes) of option bytes of which 5 bytes are already used to configure
device hardware features. The option bytes can be programmed only in ICP/SWIM
mode.
Programming manual
How to program STM8L and STM8AL Flash program memory
and data EEPROM
3.1 Low density STM8L101x microcontrollers
One block (64 bytes) of option bytes of which 5 bytes are already used to configure
device hardware features. The option bytes can be programmed only in ICP/SWIM
mode.
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Программирование STM8
Это я уже прочитал. Меня интересует как практически, ВЫ, делающие большие проекты на крутых кристаллах СОПРОВОЖДАЕТЕ. Как можно вспомнить, взяв какой старый проект, какие и где эти options bytes были установлены? Как проект опубликовать, чтобы другой человек взяв прошивку и залив в кристалл не орал: "А у меня не работает или неприятно моргает".
Re: Программирование STM8
Мне кажется, что вы все-таким излишне драматизируете. Эти биты конфигурации нужно выставить один раз, чтобы потом вообще не вспоминать о их существовании. Нет смысла привязывать это к ИАРу. Проще воспринимать эту процедуру, как подготовительную. Т.е. берем камень, выставляем опции, а потом уже пишем прогу или льем прошивку.
Re: Программирование STM8
Т.е. реально нет никакого механизма, окромя как просто написать на листочке бумаги: ПРОШЕЙ ФЬЮЗЫ! ? Хм, ПИКи в этом гораздо удобнее. Я могу взять проект десятилетней давности, залить в свежекупленный камень и оно будет работать без заморочек. Даже не нужно напрягаться и вспоминать про какую-то конфигурацию. Даже, если среда в которой это проектировалось давно не поддерживается и на новых компах не работает. Но у меня есть простой текстовый hex-файл, который всё сделает, что нужно, если еще есть программатор.
И я не драматизирую. Это реальность. Зайдите в раздел "статьи" и посмотрите на вопросы по статьям. Во всех, где АВР, каждый второй вопрос "как выставить фьюзы?". В статьях про ПИК: "Нужно выставлять фьюзы? - НЕТ".
И я не драматизирую. Это реальность. Зайдите в раздел "статьи" и посмотрите на вопросы по статьям. Во всех, где АВР, каждый второй вопрос "как выставить фьюзы?". В статьях про ПИК: "Нужно выставлять фьюзы? - НЕТ".
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Программирование STM8
Это вы к тому что при прошивке ПИК-ов компилятор конфигурацию включает в файл с прошивкой. Но это очень жесткий хак полагающий что объем памяти у контроллеров не вырастет больше определенной величины, поэтому более серьезные контроллеры так не делают. По сути, эта "особенность" PIC-ов как петля на шее не дающая развиваться.
Интересно, каким образом конфигурация ложится в файл прошивки для PIC-ов c объемом памяти больше 16К? Еще один костыль используется?
Интересно, каким образом конфигурация ложится в файл прошивки для PIC-ов c объемом памяти больше 16К? Еще один костыль используется?
Re: Программирование STM8
Думаю, тут холивар pic vs stm разводить не стоит. Тем более, что у stm этот option byte находится прямо в памяти. Его программой даже можно прочитать (в отличии от пиков). Почему бы его не прописать как-то прямо в проекте?
Re: Программирование STM8
Это может оказаться небезопасным. Если программа проведет случайную/некорректную запись в столь ответственную область, то последствия могут оказаться не предсказуемы. ST-Electronics позиционирует линейку stm8, как МК для применения в промышленности и транспорте. Надеюсь не нужно пояснять, что затирание системных областей в контроллере, скажем, манипулятора, перемещающего двухсоттонную заготовку по цеху или автомобиля, мчащегося со скоростью 120км/ч по трассе, вряд ли сулит безболезненный исход ситуации в ста случаях из ста.
Re: Программирование STM8
Программа туда записать не может - я вычеркнул этот вариант. Из программы эти ячейки только на чтение. Доступны для записи только через SWIM, и то, только если ROP не установлен. Короче, я понял - этой фичи нет и все считают, что так оно и должно быть.
Re: Программирование STM8
За всех не поручусь, но мне кажется, что один раз провести несложную манипуляцию с новым экземпляром МК не такое уж большое неудобство, чтобы говорить об этом, как о серьезном недостатке. Это, если мы говорим о разработке. При прошивке в серии, программатор одним махом шьет флеш, епром и опции. Это же относится и к повторению любительских конструкции, где в отличие от атмеги не нужно выставлять фьюзы отдельно.
Re: Программирование STM8
Ну так в том и вопрос, как это сделать в любительской конструкции? Чтобы запаял кристалл, подключил ST-link или дискавери, нажал кнопку и схема сразу заработала бы?
Re: Программирование STM8
Так прошивку же все равно шить. Вот и включите в нее все, что нужно. В данном случае это будет область OPTION BYTE.
Re: Программирование STM8
Alexeyslav писал(а):при прошивке ПИК-ов компилятор конфигурацию включает в файл с прошивкой. Но это очень жесткий хак полагающий что объем памяти у контроллеров не вырастет больше определенной величины, поэтому более серьезные контроллеры так не делают. По сути, эта "особенность" PIC-ов как петля на шее не дающая развиваться.
Ужос!!! Не дай бог кто поверит в такое!!!
Микрочип сделал всё правильно... изначально... Они понимали что вечного ничего нет... и в новых семействах они передвигали адрес конфигурации... Нет никакого смысла лепить 2М флэша в ПИК16... или кто-то будет спорить???
uldemir писал(а):как это сделать в любительской конструкции? Чтобы запаял кристалл, подключил ST-link или дискавери, нажал кнопку и схема сразу заработала бы?
У вас что-то не заработало???
В вашем случае всё немножко печально... в других STM8 можно опциями даже из проги рулить... насколько помню...
Со временем вы привыкнете... и перестанете печалиться по этому поводу...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Программирование STM8
HHIMERA писал(а):Нет никакого смысла лепить 2М флэша в ПИК16... или кто-то будет спорить???
Применение можно чему угодно придумать. В том числе и 2мб флеша на мелких контроллерах. Например, набить битмапами для огранизации графического интерфейса или оцифрованными голосом с музычкой. Даже мало окажется. Учитывая ценовые тенденции на рынке флеша, желание производителей МК считать флеш в килобайтах, кроме как жлобством и не назовешь.
Re: Программирование STM8
Фэйк... В местном хлебном ларьке STM32F030K6 дешевле чем STM8S003K3... не говоря о ПИК и АВР...
С 2М флэш история будет та же...
С 2М флэш история будет та же...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Программирование STM8
Я и говорю, что ситуация на рынке это целиком заслуга обезьян из маркетинговых отделов.
Re: Программирование STM8
Всех с наступившим. Снова нужна помощь в прочтении документации. Напомню, кристалл STM8L101K3
Теперь модуль BEEPER. Почему-то про него совсем ничего толком не написано. Скромненько: один регистр и всё. Зато на пол страницы рассусоливания насчет измерения частоты LSI.
Первое, что не понятно. PCKENR6 включает подачу частоты какой? LSI или Fmaster? По рисунку похоже, что вторую, но хрен его поймёт. Т.е. если хочу использовать внутренний низкочастотный генератор мне нужно делать телодвижения или нет?
Второе. Выход. Нужно ли где сообщать что вывод PA0 теперь будет пищалкой? У stm8S был, вроде, регистр конфигурирования альтернативной функции. А тут не вижу.
Третье. Проблема в том, что этот пин совместим со SWIM. И теперь, когда я сконфигурил PA_DDR0 на выход, я не могу через SWIM достучаться до кристалла. Как быть?
p.s. Наверное, был временный глюк. Перетыкание программатора не помогало, но перезапуск EW позволил залить следующую порцию кода (с включенным PCKENR6) и оно запищало. Ну и как теперь понимать Figure 12 из RM0013? Я ж говорил - у st документация дебильная.
Теперь модуль BEEPER. Почему-то про него совсем ничего толком не написано. Скромненько: один регистр и всё. Зато на пол страницы рассусоливания насчет измерения частоты LSI.
Первое, что не понятно. PCKENR6 включает подачу частоты какой? LSI или Fmaster? По рисунку похоже, что вторую, но хрен его поймёт. Т.е. если хочу использовать внутренний низкочастотный генератор мне нужно делать телодвижения или нет?
Второе. Выход. Нужно ли где сообщать что вывод PA0 теперь будет пищалкой? У stm8S был, вроде, регистр конфигурирования альтернативной функции. А тут не вижу.
Третье. Проблема в том, что этот пин совместим со SWIM. И теперь, когда я сконфигурил PA_DDR0 на выход, я не могу через SWIM достучаться до кристалла. Как быть?
p.s. Наверное, был временный глюк. Перетыкание программатора не помогало, но перезапуск EW позволил залить следующую порцию кода (с включенным PCKENR6) и оно запищало. Ну и как теперь понимать Figure 12 из RM0013? Я ж говорил - у st документация дебильная.
Re: Программирование STM8
Нормальная там документация... у NXP намного хуже, там вобще мозг поначалу снести можно... Но потом привыкаешь... и прыгаешь по доке как так и надо...
Что непонятно то??? Там же всё написано...
except LSI clock controlled by AWUEN bit in the Control/status register
(AWU_CSR) and by BEEPEN bit in the Beep control/status register (BEEP_CSR))
Что непонятно то??? Там же всё написано...
8.1.1 Peripheral clock gating (PCG)
Gating the clock to unused peripherals helps reduce power consumption. Peripheral clock
gating (PCG) mode selectively enables or disables the fMASTER clock connection to the
following peripherals at any time in run or slow mode:
● TIM2
● TIM3
● TIM4
● I2C
● SPI
● USART
● AWU/BEEP (except LSI clock controlled by AWUEN bit in the Control/status register
(AWU_CSR) and by BEEPEN bit in the Beep control/status register (BEEP_CSR)) .
except LSI clock controlled by AWUEN bit in the Control/status register
(AWU_CSR) and by BEEPEN bit in the Beep control/status register (BEEP_CSR))
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Программирование STM8
Ну, если не трудно, переведите этот фрагмент. Возможно, я здесь не понимаю нюансы языка (микрочиповские доки написаны куда более понятным для не англоязычных читателей языком). Например, я понял, что BEEPEN коммутирует LSI, а PCKEN6 - Fmaster. Но, пока что наблюдаю противоположное. Или это надо читать, что этот бит всё же коммутирует LSI? Тогда почему на fig.12 это не нарисовано?
Re: Программирование STM8
Загляните в Peripheral clock gating register (CLK_PCKENR)...
PCKEN6 контролирует AWU+BEEP... но...
LSI clock controlled by
AWUEN bit in the Control/status register
(AWU_CSR) and BEEPEN bit in the Beep
control/status register (BEEP_CSR))...
Т.е. CLK_PCKENR здесь участвует в качестве связующего звена между AWU+BEEP и остальной периферией... т.к. LSI работает независимо...
PCKEN6 контролирует AWU+BEEP... но...
LSI clock controlled by
AWUEN bit in the Control/status register
(AWU_CSR) and BEEPEN bit in the Beep
control/status register (BEEP_CSR))...
Т.е. CLK_PCKENR здесь участвует в качестве связующего звена между AWU+BEEP и остальной периферией... т.к. LSI работает независимо...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: Программирование STM8
Но, вот провёл несколько проверок. Без PCKENR6 пищалка не пищит. А так как у меня BEEPDIV и BEEPSEL = 0x02 и этот писк я слышу, то это явно LSI, потому что Fmaster у меня 2 Мгц.
Т.е. получается, что надо читать как: PCKENR контролирует Fmaster, Кроме AWU и BEEP, для которых коммутирует LSI? Если это так, то там круто написано.
Т.е. получается, что надо читать как: PCKENR контролирует Fmaster, Кроме AWU и BEEP, для которых коммутирует LSI? Если это так, то там круто написано.