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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

Ассемблер COSMICа очень удобен, но т.к. он не совместим с "чудом STVD", то использовать *.inc - файлы последнего не получалось. Лень и прогресс победили :) - написал маленькую консольную утилиту, которая переводит *.asm-файл STVD из папки \asm\include , в то что "понятно" COSMICу.
Для запуска вводите :
st2cosmic.exe "имя_*.asm-файла"
или :
st2cosmic.exe "имя_*.asm-файла" "имя_выходного_файла"
Вложения
st2cosmic.rar
(2.04 КБ) 356 скачиваний
jtlex
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт мар 18, 2008 10:29:04
Контактная информация:

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

Сообщение jtlex »

Снова Мяу
После некоторого перерыва вновь занялся написанием программы на STM8S207K6
хочу создать задержку порядка 4 мс. для этого решил использовать таймер3
решил просто отслеживать путем однократного запуска его.
Делаю с целью записи в EEPROM

написал подпрограмму типа:

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

void DATA_SAVE_EEPROM(uint32_t ADR_EEPROM, uint8_t DATA)
{
   uint8_t DataMemory;
   DataMemory = FLASH_ReadByte(ADR_EEPROM);
   if (DataMemory!=DATA)
   {
                  FLASH_Unlock(FLASH_MEMTYPE_DATA);   
                  FLASH_ProgramByte(ADR_EEPROM,DATA);
                  FLASH_Lock(FLASH_MEMTYPE_DATA);
   }
   TIM3->CR1|=TIM3_CR1_OPM;     //рижим работы в 1 проход
   TIM3->CR1|=TIM3_CR1_CEN;       //Разрешаем счет
   while(TIM3->CR1|=TIM3_CR1_CEN){}; //Ждем остановки счетчика.


Будет ли корректно работать?
berrymorr
Родился
Сообщения: 8
Зарегистрирован: Вс ноя 23, 2008 12:03:37
Контактная информация:

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

Сообщение berrymorr »

jtlex писал(а):Будет ли корректно работать?

а попробовать?) если я всё правильно перепутал, то вопрос некорректен - неизвестны остальные настройки TIM3.

алсо, это ужасно)

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

TIM3->CR1|=TIM3_CR1_OPM;     //рижим работы в 1 проход
TIM3->CR1|=TIM3_CR1_CEN;       //Разрешаем счет


чем вам так не угодило логическое "или"?)
don't believe what u see,
don't believe what u read
jtlex
Открыл глаза
Сообщения: 43
Зарегистрирован: Вт мар 18, 2008 10:29:04
Контактная информация:

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

Сообщение jtlex »

TIM3->CR1|=TIM3_CR1_OPM; //рижим работы в 1 проход
TIM3->CR1|=TIM3_CR1_CEN; //Разрешаем счет


расписал так для себя
потом перепишу когда буду оптимизировать код
TIM3->CR1|=TIM3_CR1_OPM | TIM3_CR1_CEN;

Можно сделать и по прерыванию, но цель, чтоб данное действие было даже не вторичной функцией, а третично, то есть запись в память будет происходить очень редко (порядка 8 байт в 5 и более минут )

Не пробовал - жду микросхему.
Остальные настройки: по дефолту, и пред делитель частоты = 2
тактирую от внутреннего генератора на 16Мгц
berrymorr
Родился
Сообщения: 8
Зарегистрирован: Вс ноя 23, 2008 12:03:37
Контактная информация:

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

Сообщение berrymorr »

в общем, не очень понимаю, что надо, не зная задачи и принципов реализации... на 1-2 страницы раньше я выкладывал проверенный в железе код инициализации TIM1 и TIM2. TIM3 и TIM2 одинаковы, так что можно использовать тот код, просто заменив циферку 2 на 3. причём для TIM2 я использовал как раз одиночный режим. а прерывание, кмк, всё равно лучше использовать.
don't believe what u see,
don't believe what u read
sanek776
Родился
Сообщения: 2
Зарегистрирован: Ср фев 22, 2012 13:29:54

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

Сообщение sanek776 »

Здравствуйте!
Подскажите новичку. Пытаюсь прошить внешний МК используя stm8s-discovery. Распаял 2 моста. потом присоединил провода от CN7:
1) Питание;
2) SWIM;
3) Земля;
4) RESET
присоединил это к соответствующим ногам МК (Питание - analog power supply, Земля - analog ground)
выбрал в STVD соответствующий МК.
Но после нажатия на кнопку отладки вылазит ошибка
swim error [30006]: comm init error:
chip does not answer

пробовал отдельно подавать питание на МК - та же ошибка
Помогите пожалуйста
berrymorr
Родился
Сообщения: 8
Зарегистрирован: Вс ноя 23, 2008 12:03:37
Контактная информация:

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

Сообщение berrymorr »

sanek776 писал(а):Здравствуйте!
Подскажите новичку. Пытаюсь прошить внешний МК используя stm8s-discovery. Распаял 2 моста. потом присоединил провода от CN7:
1) Питание;
2) SWIM;
3) Земля;
4) RESET
присоединил это к соответствующим ногам МК (Питание - analog power supply, Земля - analog ground)
выбрал в STVD соответствующий МК.
Но после нажатия на кнопку отладки вылазит ошибка
swim error [30006]: comm init error:
chip does not answer

пробовал отдельно подавать питание на МК - та же ошибка
Помогите пожалуйста


почему аналог-то? analog power supply нужно сцепить вместе с VCC и подать туда питалово от отладчика, аналог граунд - с цифровой землёй и подать туда землю отладчика. не работает потому, что не стартует ядро, которое питается от других ног - цифровых. вам бы для начала типовые схемы включения хотя бы посмотреть, чтобы не сжечь ничего...
don't believe what u see,
don't believe what u read
sanek776
Родился
Сообщения: 2
Зарегистрирован: Ср фев 22, 2012 13:29:54

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

Сообщение sanek776 »

VCC это Digital Power Supply ? Просто именно Vcc в даташите не нашел. А типовые схемы подключения, если честно, не знаю даже где искать

Получилось прошить МК который стоит в discovery после отделения его от ST-Link. Спасибо вам!
Но теперь пытаюсь прошить внешний МК stm8s105K6B6. Все подключил как вы сказали, выбрал в проекте соответствующий МК, но вылазит ошибка:
swim error [30004]: comm timeout
Если можете, помогите пожалуйста разобраться
berrymorr
Родился
Сообщения: 8
Зарегистрирован: Вс ноя 23, 2008 12:03:37
Контактная информация:

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

Сообщение berrymorr »

sanek776 писал(а):VCC это Digital Power Supply ? Просто именно Vcc в даташите не нашел. А типовые схемы подключения, если честно, не знаю даже где искать

Получилось прошить МК который стоит в discovery после отделения его от ST-Link. Спасибо вам!
Но теперь пытаюсь прошить внешний МК stm8s105K6B6. Все подключил как вы сказали, выбрал в проекте соответствующий МК, но вылазит ошибка:
swim error [30004]: comm timeout
Если можете, помогите пожалуйста разобраться

да, он самый)

короче, план такой: открываем дш, смотрим все ноги, начинающиеся на Vss, соединяем их вместе, подключаем к земле. потом берём все ноги, начинающиеся на Vdd, соединяем их вместе, подключаем к питалову. потом находим ногу Vcap и суём между ней и землёй кондёр, по дш - 0.47-3.3 мкФ, у меня работает 1 мкФ. потом уже подключаем SWIM и RESET, причём последнее опционально (и реально нужно только будет для отладки засыпающего МК). ещё между питаловом и землёй рекомендовал бы поставить керамику на 0.1..несколько мкФ - так надо делать для всей цифровой (и не только) электроники всегда.
don't believe what u see,
don't believe what u read
htr
Родился
Сообщения: 11
Зарегистрирован: Вт авг 16, 2011 22:59:27

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

Сообщение htr »

DrWatson писал(а):самый бюджетный вариант - загрузчик через UART (потребуется только преобразователь UART-RS-232 или какой-нибудь UART-USB)


Прошу сильно не пинать, у меня есть аппаратура радиоуправление, где стоит процессор STM8S105x6, есть переходник USB 2.0 to UART TTL 6PIN Module Serial Converter CP2102 вот на ebay похожий. Я могу перепрошить им этот микроконтроллер?
Alexl82
Встал на лапы
Сообщения: 87
Зарегистрирован: Ср сен 06, 2006 10:50:14
Откуда: Москва

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

Сообщение Alexl82 »

Прошу прощения за глупый вопрос, но что будет на выходе контроллера, если я в порт запишу "1".
В АВР вроде при записи "1" в порт, на выходе появлялась логическая "1", то есть +5В
Здесь же когда пишу "mov PD_DDR,#1", он наоборот сажает вывод на землю.
Можно ли настроить, что бы при записи в порт "1" на выходе то же была логическая "1"?
EugenyAM
Родился
Сообщения: 13
Зарегистрирован: Вт окт 14, 2008 06:48:04
Откуда: Omsk
Контактная информация:

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

Сообщение EugenyAM »

PD_DDR - регистр направления порта, 1 - на вывод
PD_ODR - регистр вывода данных, если там изначально 0, то при записи в PD_DDR=1 он и появится на выходе.

В вашем случае нужно записать в PD_DDR единицы в нужных битах при инициализации, а состояние ножек менять записью в PD_ODR.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

Наткнулся в инете на ассемблер для STM8 (ST7,6). Вообще то этим кросс-ассемблером пользовался во времена i8031, но в последней версии V5.03 в список добавились и 8-ми битные ST. Написал мелкую программку для STM8S103. После работы линкера получился файл *.s28 и не смотря на ругань STVP ( он ждал *.s19) все заработало.

.PS .. с настройками ключей сильно не разбирался, скорее всего все можно настроить. Да и все дается с открытыми исходниками, так что можно и "подшаманить"...
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

А разве для записи во флеш-память обязательно выжидать определенное время перед записью следующей ячейки? Неужели нет бита-индикатора готовности EEPROM к записи? Или хотябы прерывание по окончанию записи...

У самого лежит заказанная отладочная платка с STM32 103-им, просто еще руки не дошли.
eufs
Опытный кот
Сообщения: 772
Зарегистрирован: Вс апр 10, 2011 02:24:06
Откуда: г.Северодонецк

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

Сообщение eufs »

Сразу прошу прощения за вопрос, но гугл ничего про это не знает :facepalm:
Есть плата STM32VLDISCOVERY (с интерфейcом SWD), но я хочу прошить ею STM8S003f3, а ей нужен SWIM. Есть какие-то варианты или покупать STM8-DISCOVERY со SWIM. Денег не жалко, но все же и там и там ST-LINK.
Может какая-то прошивка есть, или SWIM где то на ножках присутствует?
C0FFEE=‭12648430‬
Аватара пользователя
TheTERMINATOR
Вымогатель припоя
Сообщения: 565
Зарегистрирован: Пн авг 27, 2012 10:38:20
Откуда: Москва

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

Сообщение TheTERMINATOR »

День добрый.

Уважаемые писатели, кто-нибудь богат исходником простого термометра на DS18B20 для STM8S103? Заранее благодарен.
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

TheTERMINATOR писал(а):кто-нибудь богат исходником простого термометра на DS18B20 для STM8S103
первый пост автора топика http://radiokot.ru/forum/viewtopic.php?f=20&t=35768
eufs писал(а):.... но я хочу прошить ею STM8S003f3, а ей нужен SWIM
на DISCOVERY урезанная версия ST-LINK. Купите DISCOVERY под STM8 или полноценный ST-LINK. Кажется где-то проскакивала информация о замене прошивки в DISCOVERY, но при ее цене в 10$, нужды экспериментировать не вижу ИМХО.
Аватара пользователя
TheTERMINATOR
Вымогатель припоя
Сообщения: 565
Зарегистрирован: Пн авг 27, 2012 10:38:20
Откуда: Москва

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

Сообщение TheTERMINATOR »

ChipKiller писал(а):первый пост автора топика

К сожалению, я не писатель, не смогу сам собрать из кусочков. Мне бы нечто законченное.

ChipKiller писал(а): DISCOVERY, но при ее цене в 10$

Кстати, подорожало до 18$.
eufs
Опытный кот
Сообщения: 772
Зарегистрирован: Вс апр 10, 2011 02:24:06
Откуда: г.Северодонецк

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

Сообщение eufs »

Вопрос по ассемблеру по STM8S. Почему в программах рекомендованы метки типа long? Только для совместимости с будущими, более емкими, чипами? А если мне таблицу в памяти программ хочется, то тогда для этого командами работающими с трехбайтными адресами надо использовать? А просто Х, как указатель, нельзя использовать? Все равно у того чипа, для которого пишется (STM8S003F3), нет столько адресного пространства.
Я попробовал использовать для меток двухбайтный тип, все работает (просто по Х), но чем это черевато?
Си не предлагать. Не хочу.
C0FFEE=‭12648430‬
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

на счет "рекомендованности" long не слышал. Команды работающие с трехбайтными адресами дополняются f - callf, jpf. Там где объем памяти не превышает 64К они не нужны. 16-ти разрядные регистры Х,У могут "достать" до любой ячейки памяти в пределах 64К.
Ответить

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