Страница 11 из 130

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

Добавлено: Ср ноя 30, 2011 12:03:28
ChipKiller
Ассемблер COSMICа очень удобен, но т.к. он не совместим с "чудом STVD", то использовать *.inc - файлы последнего не получалось. Лень и прогресс победили :) - написал маленькую консольную утилиту, которая переводит *.asm-файл STVD из папки \asm\include , в то что "понятно" COSMICу.
Для запуска вводите :
st2cosmic.exe "имя_*.asm-файла"
или :
st2cosmic.exe "имя_*.asm-файла" "имя_выходного_файла"

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

Добавлено: Чт янв 19, 2012 07:52:47
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){}; //Ждем остановки счетчика.

Будет ли корректно работать?

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

Добавлено: Чт янв 19, 2012 10:26:56
berrymorr
jtlex писал(а):Будет ли корректно работать?
а попробовать?) если я всё правильно перепутал, то вопрос некорректен - неизвестны остальные настройки TIM3.

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

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

TIM3->CR1|=TIM3_CR1_OPM;	  //рижим работы в 1 проход
TIM3->CR1|=TIM3_CR1_CEN;       //Разрешаем счет
чем вам так не угодило логическое "или"?)

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

Добавлено: Пт янв 20, 2012 09:16:34
jtlex
TIM3->CR1|=TIM3_CR1_OPM; //рижим работы в 1 проход
TIM3->CR1|=TIM3_CR1_CEN; //Разрешаем счет


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

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

Не пробовал - жду микросхему.
Остальные настройки: по дефолту, и пред делитель частоты = 2
тактирую от внутреннего генератора на 16Мгц

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

Добавлено: Вт янв 24, 2012 14:52:54
berrymorr
в общем, не очень понимаю, что надо, не зная задачи и принципов реализации... на 1-2 страницы раньше я выкладывал проверенный в железе код инициализации TIM1 и TIM2. TIM3 и TIM2 одинаковы, так что можно использовать тот код, просто заменив циферку 2 на 3. причём для TIM2 я использовал как раз одиночный режим. а прерывание, кмк, всё равно лучше использовать.

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

Добавлено: Ср фев 22, 2012 13:31:10
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

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

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

Добавлено: Пт фев 24, 2012 15:03:18
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 и подать туда питалово от отладчика, аналог граунд - с цифровой землёй и подать туда землю отладчика. не работает потому, что не стартует ядро, которое питается от других ног - цифровых. вам бы для начала типовые схемы включения хотя бы посмотреть, чтобы не сжечь ничего...

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

Добавлено: Пт фев 24, 2012 15:42:00
sanek776
VCC это Digital Power Supply ? Просто именно Vcc в даташите не нашел. А типовые схемы подключения, если честно, не знаю даже где искать

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

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

Добавлено: Пт фев 24, 2012 16:58:08
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..несколько мкФ - так надо делать для всей цифровой (и не только) электроники всегда.

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

Добавлено: Ср мар 14, 2012 10:08:46
htr
DrWatson писал(а):самый бюджетный вариант - загрузчик через UART (потребуется только преобразователь UART-RS-232 или какой-нибудь UART-USB)
Прошу сильно не пинать, у меня есть аппаратура радиоуправление, где стоит процессор STM8S105x6, есть переходник USB 2.0 to UART TTL 6PIN Module Serial Converter CP2102 вот на ebay похожий. Я могу перепрошить им этот микроконтроллер?

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

Добавлено: Сб мар 17, 2012 17:18:30
Alexl82
Прошу прощения за глупый вопрос, но что будет на выходе контроллера, если я в порт запишу "1".
В АВР вроде при записи "1" в порт, на выходе появлялась логическая "1", то есть +5В
Здесь же когда пишу "mov PD_DDR,#1", он наоборот сажает вывод на землю.
Можно ли настроить, что бы при записи в порт "1" на выходе то же была логическая "1"?

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

Добавлено: Пн мар 19, 2012 07:40:31
EugenyAM
PD_DDR - регистр направления порта, 1 - на вывод
PD_ODR - регистр вывода данных, если там изначально 0, то при записи в PD_DDR=1 он и появится на выходе.

В вашем случае нужно записать в PD_DDR единицы в нужных битах при инициализации, а состояние ножек менять записью в PD_ODR.

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

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

.PS .. с настройками ключей сильно не разбирался, скорее всего все можно настроить. Да и все дается с открытыми исходниками, так что можно и "подшаманить"...

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

Добавлено: Пн июн 25, 2012 14:00:23
Alexeyslav
А разве для записи во флеш-память обязательно выжидать определенное время перед записью следующей ячейки? Неужели нет бита-индикатора готовности EEPROM к записи? Или хотябы прерывание по окончанию записи...

У самого лежит заказанная отладочная платка с STM32 103-им, просто еще руки не дошли.

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

Добавлено: Вс авг 19, 2012 02:45:14
eufs
Сразу прошу прощения за вопрос, но гугл ничего про это не знает :facepalm:
Есть плата STM32VLDISCOVERY (с интерфейcом SWD), но я хочу прошить ею STM8S003f3, а ей нужен SWIM. Есть какие-то варианты или покупать STM8-DISCOVERY со SWIM. Денег не жалко, но все же и там и там ST-LINK.
Может какая-то прошивка есть, или SWIM где то на ножках присутствует?

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

Добавлено: Пн авг 27, 2012 11:27:22
TheTERMINATOR
День добрый.

Уважаемые писатели, кто-нибудь богат исходником простого термометра на DS18B20 для STM8S103? Заранее благодарен.

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

Добавлено: Пн авг 27, 2012 12:27:00
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$, нужды экспериментировать не вижу ИМХО.

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

Добавлено: Чт авг 30, 2012 11:53:11
TheTERMINATOR
ChipKiller писал(а):первый пост автора топика
К сожалению, я не писатель, не смогу сам собрать из кусочков. Мне бы нечто законченное.
ChipKiller писал(а): DISCOVERY, но при ее цене в 10$
Кстати, подорожало до 18$.

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

Добавлено: Ср сен 05, 2012 22:59:07
eufs
Вопрос по ассемблеру по STM8S. Почему в программах рекомендованы метки типа long? Только для совместимости с будущими, более емкими, чипами? А если мне таблицу в памяти программ хочется, то тогда для этого командами работающими с трехбайтными адресами надо использовать? А просто Х, как указатель, нельзя использовать? Все равно у того чипа, для которого пишется (STM8S003F3), нет столько адресного пространства.
Я попробовал использовать для меток двухбайтный тип, все работает (просто по Х), но чем это черевато?
Си не предлагать. Не хочу.

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

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