Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ STM8 _ STM8

Автор: KRS Apr 13 2010, 11:27

Наткнулся тут на новое семейство.
Заинтересовали LQFP44 c CAN, как дешовая замена AT90CAN64 или мелких STM32.

На семинар
http://electronix.ru/redirect.php?http://catalog.compel.ru/blog/2010/04/08/27-04-moskva-29-04-sankt-peterburg-seminar-mikrokontrollery-stm8/
никто не собирается?

Автор: zksystem Apr 13 2010, 13:06

Я пользую STM8, только CAN в них не юзал. Обидно что халявных компиляторов без ограничения по коду у них нет sad.gif а так в принципе интересные камушки.

Автор: Pat Apr 13 2010, 18:52

Цитата(zksystem @ Apr 13 2010, 15:21) *
Я пользую STM8, только CAN в них не юзал. Обидно что халявных компиляторов без ограничения по коду у них нет sad.gif а так в принципе интересные камушки.


Можно ли подробнее чем пользуютесь и как отлаживаетесь.

Для быстрого старта есть не дорого
http://electronix.ru/redirect.php?http://www.kosmodrom.com.ua/el.php?name=STM8-D

Не понятно ST-Link который у него на борту какие имеет ограничения?

Немного bb-offtopic.gif сейчас разбираюсь с STM32 ну очень приятные ощущения от ST в целом.

Автор: KRS Apr 13 2010, 20:02

Цитата(Pat @ Apr 13 2010, 23:07) *
Можно ли подробнее чем пользуютесь и как отлаживаетесь.

+1


Цитата(Pat @ Apr 13 2010, 23:07) *
Немного bb-offtopic.gif сейчас разбираюсь с STM32 ну очень приятные ощущения от ST в целом.

Ну после появления LPC17xx LPC13xx STM32 IMHO не актуальны.

Автор: delamoure Apr 14 2010, 10:59

Актуальность определяется целесообразностью применения.
Вот понять не могу: как LPC13xx и, по-моему, LPC1100 можно было не реализовать ИОН для АЦП?
Или хоть возможность его внешнего подключения.
Сделать АЦП 12 бит.
Где RTC?
В младших STM32 все это можно найти.
А с NXP один выход - приходиться пробовать LCP17xx. А там размер корпуса 12X12 sad.gif

Автор: ukpyr Apr 14 2010, 11:37

Цитата
как дешовая замена AT90CAN64 или мелких STM32
или STM8S103 как замена Atmega8
жаль gcc не портировали...

Автор: KRS Apr 14 2010, 13:02

Цитата(ukpyr @ Apr 14 2010, 15:52) *
жаль gcc не портировали...

Почитал я описание ядра.
2 индексных регистра и аккумулятор (если счетчик команд, стек и флаги не считать)
Пространства для оптимизации нет smile.gif
Методы адресации различаются количеством байт адреса (ну и указатель на указатель возможен)

Зато компилер, должно быть просто портировать.

Автор: sonycman Apr 14 2010, 13:23

Цитата(KRS @ Apr 14 2010, 00:17) *
Ну после появления LPC17xx LPC13xx STM32 IMHO не актуальны.

Это смотря где.
У STM32 более обширная периферия.
Например, есть SDIO контроллер и CPU интерфейс.

Плюс с непривычки у LPC17xx покоробило при сбросе подключение к пинам GPIO pullup резисторов, вместо более логичных pulldown у STM.

Автор: zksystem Apr 15 2010, 10:45

Цитата(Pat @ Apr 13 2010, 23:07) *
Можно ли подробнее чем пользуютесь и как отлаживаетесь.

Не понятно ST-Link который у него на борту какие имеет ограничения?

Немного bb-offtopic.gif сейчас разбираюсь с STM32 ну очень приятные ощущения от ST в целом.


использую в качестве программера/дебаггера Raisonance R-Link.
IDE - ST Visual Developer
C компилятор - Raisonance C compiler (с ограничением по размеру кода) sad.gif
Есть еще компилятор Cosmic - но он мне чего-то не понравился.

Камушки классные, а вот с компилятором такая засада...

Автор: Xenia Apr 16 2010, 12:53

Цитата(zksystem @ Apr 13 2010, 17:21) *
Я пользую STM8, только CAN в них не юзал. Обидно что халявных компиляторов без ограничения по коду у них нет sad.gif а так в принципе интересные камушки.

Не расстраивайтесь! smile.gif Только что сегодня, внемля вашим рыданиям, IAR создал для него компилятор! Полную версию пока еще раздобыть не удалось, но эвалюйшен и старткик уже раздаются.
Удивляет, что в таблице поддерживаемых МК серия STM8 не значится. И на сайте про нее ничего не сказано, зато торчит неприкаянная страничка (нормального пути к ней из сайта нет), позволяющая скачать эвалюэйшен-версию:
http://electronix.ru/redirect.php?http://www.iar.com/website1/1.0.1.0/2167/1/

Автор: KRS Apr 17 2010, 19:33

Цитата(Xenia @ Apr 16 2010, 17:08) *
Не расстраивайтесь! smile.gif Только что сегодня, внемля вашим рыданиям, IAR создал для него компилятор!

Это хорошая новость!!!
А кто нибудь его уже ставил?
Какое железо для отладки он умеет использовать?

Автор: Xenia Apr 17 2010, 19:39

Цитата(KRS @ Apr 17 2010, 23:48) *
А кто нибудь его уже ставил?
Какое железо для отладки он умеет использовать?

А вот вы себе поставьте, а нам расскажите sm.gif. Список поддерживаемого железа, как всегда, в опциях компилятора.

Автор: KRS Apr 17 2010, 19:58

Цитата(Xenia @ Apr 17 2010, 23:54) *
А вот вы себе поставьте, а нам расскажите smile.gif

Да у меня пока нет ни одной платы с такими чипами.
Для чипа такого уровня и отладчик то не сильно нужен. Но вот шить из под IAR было бы удобно.
Да и чип поисследовать тоже.
Насколько я понял самый оптимальный по цене - ST-LINK.
Просто покупать ST-ICE за 2 штуки баксов это как то....

Автор: Xenia Apr 17 2010, 20:04

Цитата(KRS @ Apr 18 2010, 00:13) *
Насколько я понял самый оптимальный по цене - ST-LINK.
Просто покупать ST-ICE за 2 штуки баксов это как то....

А вы купите "STM8s Discovery"( http://electronix.ru/redirect.php?http://www.terraelectronica.ru/pdf/ST/STM8S-DISCOVERY.pdf )
В Терраэлектронике стоит всего 350 рублей ( http://electronix.ru/redirect.php?http://www.terraelectronica.ru/catalog.php?ID=1162&Search=1&Text=stm8s%20discovery&Gde=2&PageS=1 )
Там на плате за эти деньги уже и МК стоит (STM8S105C6T6, 32 KB Flash, 2 KB RAM, 1 KB EEPROM), и питание с кварцем, и даже USB-интерфейс (!) для подключения к компьютеру. Вроде бы ST-LINK даже встроен туда. Подключаешь USB-кабелем к компу и больше ничего не надо.

Автор: zltigo Apr 17 2010, 20:13

Цитата(KRS @ Apr 17 2010, 22:48) *
Какое железо для отладки он умеет использовать?

Ровно два
ST-Link и STice
До кучи у него IDE приляпали некой шестой версии.
Вообще-то чип странноватый обычная для ST (по сравнению с AVR8 разнообразнее разве только за счет CAN) периферия, не сомневаюсь, что, как обычно недоработанная и с библиотекаими вместо документации. Обычная для 8bit частота ядра. Обычно минималистичные размеры памяти. Простенькое ядро...
Все обычно. Но зачем-то и многоногие. Ценой брать собираются? Непохоже совсем - на digikey интересные чипы с CAN на борту имеют неразумные цены выше 5 баксов.

Автор: KRS Apr 17 2010, 20:30

Цитата(Xenia @ Apr 18 2010, 00:19) *
А вы купите "STM8s Discovery"

Не мне такой не нужен. Мне этот чип без CAN вообще не нужен smile.gif
Лично мне эта архитектура совсем не понравилась!
(IMHO эта архитектура - производителям компиляторов должна понравится smile.gif)
Но вот мелкого и дешового чипа с CAN больше нет! ( а тут еще и EEPROM есть).
Хотя вот еще ATmega16M1 появилась!

Цитата(zltigo @ Apr 18 2010, 00:28) *
До кучи у него IDE приляпали некой шестой версии.

Ну вот, а ходили слухи что на Eclipse собираются переходить.

Автор: Xenia Apr 17 2010, 20:32

Цитата(KRS @ Apr 18 2010, 00:42) *
Лично мне эта архитектура совсем не понравилась!

А вот это уже интересно! Не поделитесь ли вашими впечатлениями об архитектуре STM8? Что именно не понравилось? Как она выглядит по сравнению с AVR? Если вы уже успели составить свое впечатление об этой архитектуре, то было бы крайне интересно вас послушать.
Мнение zltigo по этому же вопросу меня тоже очень интересует.

Автор: KRS Apr 17 2010, 20:48

Цитата(Xenia @ Apr 18 2010, 00:47) *
Не поделитесь ли вашими впечатлениями об архитектуре STM8?

Она проста до безобразия -
счетчик команд, указатель стека, флаги
аккумулятор и 2 индексных регистра.

Основой текст в описании (которе кстати читать тяжеловато) идет вокруг количетсва бит формиующего адрес. Из-за того что этих бит может быть 8, 16,.... режимов адресации очень много...
Единственный интересный момент (раньше о таком не слышал) - это двойная адресация памяти, т.е. например после команды лежит ардрес указателя на данные (причем эти адреса могут быть разной длины, что порождает множество типов).

А дальше все тривиально - операции с одним операндом только в аккумуляторе ( сдвиги например), с двумя - аккумулятор + память, результат в аккумулятор (сложение например).
Ну есть пара инструкций для 16 битных индексных регистров. И работа с битами в памяти.
В общем на асме писать просто скучно, обязательно нужен компилер!!!

Еще раз повторюсь - описание на архитектуру, как то очень тяжело читается! (по сравнению с ARM, AVR, x51). Не в смысле самой архитектуры а стиле описания.

Автор: zltigo Apr 17 2010, 21:05

Цитата(KRS @ Apr 18 2010, 00:03) *
Она проста до безобразия -

по Вашему описанию, это похоже на усеченную интеловскую 86/88

Автор: KRS Apr 17 2010, 21:18

Цитата(zltigo @ Apr 18 2010, 01:20) *
по Вашему описанию, это похоже на усеченную интеловскую 86/88

Это надо сильно обрезать smile.gif - оставить SI, DI и AL
Чем то на 51 похоже, чем то на PIC (хотя с ними я не работал)

если не считать флаги, sp, PC
получается один 8 битный регистр через который идет вся математика. И 2 индесных регистра, которые нужны для доступа к массивам.
Одно удобство - страниц нет! память линейно адресуется!

Автор: Xenia Apr 17 2010, 21:24

Поглядела я на Instruction set этого STM8 - дерьмо! smile.gif Помимо аккумулятора A, там всего лишь два регистра X и Y. И это всё! Правда регистры программного счетчика PC и стека SP там есть, то это погоды не делает. Ужас! И это после 32-х регистров AVR кто-то еще станет переходить на этот дохлый STM8? Ни в жисть не поверю!
http://electronix.ru/redirect.php?http://www.st.com/stonline/products/literature/pm/13590.pdf

Автор: zltigo Apr 17 2010, 22:40

Цитата(Xenia @ Apr 18 2010, 00:39) *
Поглядела я на Instruction set этого STM8 - дерьмо! smile.gif Помимо аккумулятора A, там всего лишь два регистра X и Y. И это всё!
Ужас! И это после 32-х регистров AVR кто-то еще станет переходить на этот дохлый STM8? Ни в жисть не поверю!

Фу как мелко sad.gif. И как же, например, STM8 в Вашем зацикленном на AVR представлении вообще без регистров работает? Невероятно? А теперь представьте, что вся память у контроллера на правах регистров. У AVR, говорите, их только 32? Ужас! smile.gif smile.gif

Автор: Xenia Apr 18 2010, 01:18

Цитата(zltigo @ Apr 18 2010, 02:55) *
А теперь представьте, что вся память у контроллера на правах регистров. У AVR, говорите, их только 32? Ужас!

Вся память не работает у STM8 на правах регистров. Или регистры тогда должны быть совсем бесправные smile.gif. Например, у AVR-регистров такие права, что их можно складывать (а также вычитать и проводить логические операции) одной единственной инструкцией за один такт! А над ячейками памяти такое вообще невозможно. К тому же STM8 может выполнять арифметические и логические операции только одном регистре - аккумуляторе. Вот и получится программа, где 70% кода будет гонять число из памяти в аккумялятор и обратно.

Автор: _Pasha Apr 18 2010, 03:57

Цитата(Xenia @ Apr 18 2010, 04:33) *
Вот и получится программа, где 70% кода будет гонять число из памяти в аккумялятор и обратно.

Нет. MOV mem1, mem2 там есть. Проблема в другом - маловато индексных регистров. Да и умножение за 4 цикла напрягает.

Автор: zltigo Apr 18 2010, 07:28

Цитата(Xenia @ Apr 18 2010, 04:33) *
К тому же STM8 может выполнять арифметические и логические операции только одном регистре - аккумуляторе.

Разумеется это не так. Работа с одним операндом и двумя, если второй константный, осуществляется без участия аккумулятора. Пересылка память - память тоже есть. Это просто не AVR-овская Load Store архитектура вынужденная иметь много регистров, дабы минимизировать те самые "гонять число". Вы пытаетесь приписать ST8 еще и родимые пятна AVR8 sad.gif.

Автор: KRS Apr 18 2010, 08:30

Цитата(zltigo @ Apr 18 2010, 11:43) *
Разумеется это не так. Работа с одним операндом и двумя, если второй константный, осуществляется без участия аккумулятора.

У арифметичесикх инструкций сложение, вычитание и логических AND,OR,
dst A (У 16 битных индексный регистр)

Есть правда инкремент, декремент, инверсия, сдвиг памяти и NEG на память работает.

Автор: zltigo Apr 18 2010, 08:32

Цитата(KRS @ Apr 18 2010, 11:45) *
Есть правда инкремент, декремент, инверсия, сдвиг памяти и NEG на память работает.

.. и манипуляции с битами, как установка с переносами, так и анализ, swap. В общем достаточно неплохо. Архитектура достаточно сложная получилась ( без закосов под RISC ) и не думаю, что просто так вышло или не разработчики не смогли понять за прошедшие годы, как, например, тот-же изначально просто задуманный, а ныне покрытый наслоениями улучшений, AVR8 работает smile.gif.

Автор: scifi Apr 18 2010, 08:34

Странный спор... Я-то по наивности думал, что в жизни имеет значение не число регистров и остальные тонкости, а реальная производительность.
Вот бы кто-нибудь померил DMIPS/MHz или что-нибудь такое, было бы уже интереснее.

Автор: zltigo Apr 18 2010, 09:11

Цитата(scifi @ Apr 18 2010, 11:49) *
Странный спор...

Да нет никакого спора, это просто Xenia, как обычно, в силе "нет бога кроме Аллаха Atmel и Мухаммад AVR пророк его" выступает. А так все нормально.
Цитата
Я-то по наивности думал, что в жизни имеет значение не число регистров и остальные тонкости, а реальная производительность.
Вот бы кто-нибудь померил DMIPS/MHz или что-нибудь такое, было бы уже интереснее.

Даже думаю, что это не особо важно - контроллер явно не бить рекорды производительности сделан. В два раза попугаистее других не будет да и в два раза тормознее тоже.
P.S.
Только сейчас глянул, ST что обещают что-то типа 0.83 MIPS/MHz. Atmel на голубом глазу сообщает для AVR8, что up то 1MIPS/MHz smile.gif. Вот и все. Не припомю, но вроде ни разу тот-же AVR на полной тактовой не использовал - за ненадобностью. Для попугаев сейчас мелкие Corteх под и за сотню мегагерц.

Автор: Xenia Apr 18 2010, 13:24

Цитата(zltigo @ Apr 18 2010, 13:26) *
Да нет никакого спора, это просто Xenia, как обычно, в силе "нет бога кроме Аллаха Atmel и Мухаммад AVR пророк его" выступает.

Дело обстоит прямо противоположным образом - именно вам Atmel предсталяется чем-то вроде Сатаны. Пример тому - архитектура AVR32, которая столь разительно отличается от AVR8, что здесь больше различий, чем сходства. Однако ваша риторика столь же агрессивна и в отношении AVR32. Причем вся ваша критика направлена, как всегда, не на конкретные огрехи архитектуры, а на обливание помоями Atmel и злорадство по поводу ее малейших производственных трудностей.

Автор: zltigo Apr 18 2010, 14:23

Цитата(Xenia @ Apr 18 2010, 16:39) *
Дело обстоит прямо противоположным образом - именно вам Atmel предсталяется чем-то вроде Сатаны.

smile.gif. Опять sad.gif понесло. Xenia, ну поймите наконец, что я лично совершенно спокойно использую и буду в обозримом будущем использовать тот-же "сатанинский" AVR8. Вот до конца месяца сделаю очередную небольшую коробочку на ATMEGA8. Без всякой предвзятости, как и почти дюжину других ядер. Я их все люблю, со всеми их "конкретными огрехами архитектуры". А вот у Вас саму себя зажавшую в рамки AVR явные проблемы с мировосприятием. Ну переступите, наконец через свою болезненно-фанатичную преданность буквам. Полегчает! Глядишь, и перестанет Сатана в моем лице являться smile.gif.

Автор: Xenia Apr 18 2010, 16:04

Цитата(zltigo @ Apr 18 2010, 18:38) *
А вот у Вас саму себя зажавшую в рамки AVR явные проблемы с мировосприятием. Ну переступите, наконец через свою болезненно-фанатичную преданность буквам. Полегчает!

Специально для вас заявляю, что затеяла сравнение STM8 с AVR именно по той причине, что STM8 претендует как раз на ту нишу, которую в настоящее занимают AVR. Так что если STM8 и имеет перспективы внедрения, то во многом путем вытеснения из этой ниши AVR. В этом смысле сравнение архитектуры STM8 с теми архитектурами, с которыми ему придется конкурировать, вполне оправдано. И это, отнюдь, не мои фантазии, т.к. еще до меня в посте http://electronix.ru/forum/index.php?s=&showtopic=75119&view=findpost&p=744631 уже поднимался вопрос о возможности замены ATmega8 на STM8S103.
Вы же пытаетесь переводить разговор на личности, бичуя в участниках форума якобы выявленные вами недостатки. И это уже не в первый раз, и не только в мой адрес.

Автор: Pat Apr 18 2010, 17:28

Цитата(Xenia @ Apr 18 2010, 18:19) *
уже поднимался вопрос о возможности замены ATmega8 на STM8S103.
Вы же пытаетесь переводить разговор на личности, бичуя в участниках форума якобы выявленные вами недостатки. И это уже не в первый раз, и не только в мой адрес.


Xenia не руйтесь rolleyes.gif и спасибо за инфу по компилятору.

Наверное заменять мегу8 на STM8 не стоит ибо у них цена почти одинаковая, а вот ATmega128 очень даже неплохо заменить на STM8S208
так как цена даже у розничного продавца отличается почти в 2 раза.

Думаю что сравнивать попугаи AVR c STM8 не стоит, все будет примерно одинаково.

Установил EWSTM8 и в симуляторе запустил пример STM8S208MB-Board
Было интересно посмотреть вход в прерывание и не очень проникся там сплошные call.
Причем сохранение регистров в стеке реализовано тоже через их вызыв.
Это при любой степени оптимизации.
Либо я чего то не понимаю либо ИАР пока не доработал компилятор.

Автор: WHALE Apr 18 2010, 17:49

Цитата(Pat @ Apr 18 2010, 21:43) *
Xenia не руйтесь rolleyes.gif и спасибо за инфу по компилятору.
Наверное заменять мегу8 на STM8 не стоит ибо у них цена почти одинаковая,

а вы поинтересуйтесь доставабельностью той-же меги8.Я думаю-сильно удивитесь.
Атмел в очередной раз кинул потребителей-старые чипы с производства сняты и на
складах их уже нет,новые(А серия) только ожидаются...

Автор: Xenia Apr 18 2010, 18:30

Цитата(WHALE @ Apr 18 2010, 22:04) *
а вы поинтересуйтесь доставабельностью той-же меги8.Я думаю-сильно удивитесь.
Атмел в очередной раз кинул потребителей-старые чипы с производства сняты и на складах их уже нет, новые (А серия) только ожидаются...

Я полагаю, что это обычный "пересменок", когда один тип МК снимается с производства, а ему на замену приходит приемник или аналог. Сказывается типичная человеческая инерция: конечные потребители "стесняются" оставлять заявки на новый тип (продолжая заказывать старый), опасаясь, что его выпуск задержится. Вслед за этим и крупные диллеры, подбивая такие заявки, не спешат заказывать продукцию нового типа, в свою очередь опасаясь недостаточного на нее спроса. А производителю в этой ситуации не остается ничего иного, как ждать, пока старая продукция не иссякнет на складах. Похоже на то, что именно сейчас наступил период "голодухи", когда складские запасы ATmega8 иссякают. На моей памяти такое уже было с AT90S2313, когда ее заменяли на ATtiny2313 - тоже была "голодуха", когда в розничной продаже не было ни того, ни другого.

Автор: WHALE Apr 18 2010, 18:44

Цитата(Xenia @ Apr 18 2010, 22:45) *
Я полагаю, что это обычный "пересменок", когда один тип МК снимается с производства, а ему на замену приходит приемник или аналог.

Дней десять назад разговаривал как раз на эту тему с товарищем,работающем разработчиком.
Он утверждает,что такие фортели характерны именно для атмеля.Другие производители обеспечивают
плавную миграцию со старых кристаллов.

Автор: zltigo Apr 18 2010, 19:35

Цитата(Xenia @ Apr 18 2010, 21:45) *
Я полагаю, что это обычный "пересменок"....

Да, спасибо sad.gif, наверное Ваш ответ "успокоит" моего друга выполняющего заказ на Tiny2313, который вроде ничем прямо не заменяется, но который шерстит всех оптовиков по собирая все, что можно в любых количествах и любых упаковках. По поводу упаковки еще выслушивая контрактного производителя вынужденного ставить эти чипы почти руками. Кстати, по ST в наших краях явных проблем не наблюдается. А мне Атмеловские I2C EEPROM работающие на мегагерце в четверг за 6-7 месяцев поставить пообещали. Опять, типа поклеп на Atmel sad.gif.
Цитата(WHALE @ Apr 18 2010, 21:04) *
а вы поинтересуйтесь доставабельностью той-же меги8.

С просто MEGA8 совсем тупика нет, но 8L - уже фиг вам, ну 8A - типа еще фиг вам. А зарабатывать надо сегодня.

Цитата(Xenia @ Apr 18 2010, 19:19) *
Специально для вас заявляю, что затеяла сравнение STM8 с AVR именно по той причине, что STM8 претендует как раз на ту нишу, которую в настоящее занимают AVR.

И если не благодаря цене или параметрам, то благодаря, цитирую, "ее малейшим производственным трудностям" и "обычным пересменкам", ST нишу займет. Думаю, это действительно для того-же ST основной фактор выброса STM8. Не улыбаться, ни печалиться я по этому поводу я не буду - просто констатация факта.

Цитата(Xenia @ Apr 18 2010, 19:19) *
... и не только в мой адрес.

По отношению к Вам исключительно из самых добрых побуждений.

Автор: Xenia Apr 18 2010, 20:05

Цитата(zltigo @ Apr 18 2010, 23:50) *
Да, спасибо sad.gif, наверное Ваш ответ "успокоит" моего друга выполняющего заказ на Tiny2313, который вроде ничем прямо не заменяется, но который шерстит всех оптовиков по собирая все, что можно в любых количествах и любых упаковках.

Кажется, что с Tiny2313 действительно та же самая история - на Tiny2313A ее заменяют. Пересменок, однако smile.gif.

Автор: Stanislav_S Apr 19 2010, 07:41

Хм.. пересменка говорите? Так вот китайское представительство атмела, на Мегу8, 48, 88 послало на 5 месяцев, а мне их надо минимум 3000 штук в месяц. И что теперь делать? Покупать мегу48 по 1,8$, как нам поставщики предлагают? это маразм. Так что Атмел очень сильно упал в моих глазах, теперь для следующих девайсов буду думать о переходе на другие МК, поскольку такой цирк уже достал.

Автор: zksystem Apr 22 2010, 12:20

Ну свет клином не сошелся на атмелах и микрочипах, после пиков, например, мне как-то комфортнее на STM8 в простых задачах, не считая казуса с компиляторами.

Автор: _Bill Apr 27 2010, 19:48

Цитата(Xenia @ Apr 18 2010, 05:18) *
Вся память не работает у STM8 на правах регистров. Или регистры тогда должны быть совсем бесправные smile.gif. Например, у AVR-регистров такие права, что их можно складывать (а также вычитать и проводить логические операции) одной единственной инструкцией за один такт! А над ячейками памяти такое вообще невозможно. К тому же STM8 может выполнять арифметические и логические операции только одном регистре - аккумуляторе. Вот и получится программа, где 70% кода будет гонять число из памяти в аккумялятор и обратно.

Как ни странно, большинство операций с памятью выполняются именно за один такт. Исключения составляют операции с косвенной адресацией (через указатель). Операции со словами (16 разрядов) выполняются за 2 такта. Я думаю, что это все же неплохая альтернатива ATmega.

Автор: KRS Apr 30 2010, 08:02

Сходил я на семинар в Питере!
Из полезного - дали STM8S-Discovery!
Кстати космик совсем не жадный нужен кому?
Райзонанс еще еще не пилил.

Автор: Stanislav_S Apr 30 2010, 09:24

Цитата(KRS @ Apr 30 2010, 13:02) *
Сходил я на семинар в Питере!
Из полезного - дали STM8S-Discovery!
Кстати космик совсем не жадный нужен кому?
Райзонанс еще еще не пилил.

А насколько космик не жадный? Если совсем не жадный, то можно на ФТП залить, в исследованиях пригодится, благо чипы уже заказал smile.gif

Автор: KRS Apr 30 2010, 09:51

Цитата(Stanislav_S @ Apr 30 2010, 13:24) *
А насколько космик не жадный? Если совсем не жадный, то можно на ФТП залить, в исследованиях пригодится, благо чипы уже заказал smile.gif

Создал тему
http://electronix.ru/forum/index.php?showtopic=75822

Автор: KRS May 1 2010, 17:16

Поставил я все 3 компилера.
Для начала решил посуммировать вектора.
Т.к. у ядра всего 2 индексных регистра, интересно посомтреть что будут делать компиляторы, когда их нужно больше.

Код
void add8_2(unsigned char *a, unsigned char *b, unsigned char *c, unsigned char len)
{
    do {
        *c++ = *a++ + *b++;
    } while(--len);
}

Космик использовал только один индексный регистр, по очереди для 3 указателей. Лучше всего скомпилировал while(--len);
Код
  43  0016 89                pushw    x
  44       00000000      OFST:    set    0
  46  0017               L11:
  47                    ; 16         *c++ = *a++ + *b++;
  48  0017 1e05              ldw    x,(OFST+5,sp)
  49  0019 f6                ld    a,(x)
  50  001a 5c                incw    x
  51  001b 1f05              ldw    (OFST+5,sp),x
  52  001d 1e01              ldw    x,(OFST+1,sp)
  53  001f fb                add    a,(x)
  54  0020 5c                incw    x
  55  0021 1f01              ldw    (OFST+1,sp),x
  56  0023 1e07              ldw    x,(OFST+7,sp)
  57  0025 f7                ld    (x),a
  58  0026 5c                incw    x
  59  0027 1f07              ldw    (OFST+7,sp),x
  60                    ; 17     } while(--len);
  61  0029 0a09              dec    (OFST+9,sp)
  62  002b 26ea              jrne    L11
  63                    ; 18 }
  64  002d 85                popw    x
  65  002e 81                ret

Райзонанс мог бы выйграть - использовал X для *a и Y для *b и *с, но с *a++ у него вышел прокол, поэтому в итоге код получился не лучше. И лишняя проверка после dec
Код
             ; FUNCTION ?add8_2 (BEGIN)
             ; Register XW is assigned to parameter a
0000         ?DO_0003:
             ; SOURCE LINE # 16
0000 1603       F                      LDW    Y,(003H,SP)  ; [ b ]
0002 90F6                              LD     A,(Y)
0004 905C                              INCW   Y
0006 1703       F                      LDW    (003H,SP),Y  ; [ b ]
0008 BF03       F                      LDW    ?CH.w,X
000A 5C                                INCW   X
000B 92CB00     F                      ADD    A,[?CH.w]
000E 1605       F                      LDW    Y,(005H,SP)  ; [ c ]
0010 90BF02     F                      LDW    ?BH.w,Y
0013 905C                              INCW   Y
0015 1705       F                      LDW    (005H,SP),Y  ; [ c ]
0017 92C700     F                      LD     [?BH.w],A
001A 0A07       F                      DEC    (007H,SP)  ; [ len ]
001C 0D07       F                      TNZ    (007H,SP)  ; [ len ]
001E 26E0                              JRNE   ?DO_0003
0020 81                                RET

У IAR код тоже не фонтан! Но главное посмотрите на while(--len)!!!!
К тому же IAR не использует стек, а использует виртуальные регистры. Что IMHO для этого ядра криво! Что IAR делает хорошо - так это общий код выделят в подпрограммы, если нужно по размеру сжать! И у IAR лучший способ передачи параметров!! задействуются все рагистры.
Код
\                     add8_2:
   \   000000 BF00                  LDW       S:?w1, X
   \   000002 93                    LDW       X, Y
   \   000003 B700                  LD        S:?b4, A
     12              do {
     13                  *c++ = *a++ + *b++;
   \                     ??add8_2_0:
   \   000005 F6                    LD        A, (X)
   \   000006 92CB00                ADD       A, [S:?w1.w]
   \   000009 92C700                LD        [S:?w0.w], A
   \   00000C 5C                    INCW      X
   \   00000D 90BE00                LDW       Y, S:?w1
   \   000010 905C                  INCW      Y
   \   000012 90BF00                LDW       S:?w1, Y
   \   000015 90BE00                LDW       Y, S:?w0
   \   000018 905C                  INCW      Y
   \   00001A 90BF00                LDW       S:?w0, Y
     14              } while(--len);
   \   00001D B600                  LD        A, S:?b4
   \   00001F ABFF                  ADD       A, #0xff
   \   000021 B700                  LD        S:?b4, A
   \   000023 4F                    CLR       A
   \   000024 B100                  CP        A, S:?b4
   \   000026 2600                  JRNE      L:??add8_2_0
     15          }
   \   000028 81                    RET

Если код функции поменять на
Код
void add8_21(unsigned char *a, unsigned char *b, unsigned char *c, unsigned char len)
{
    do {
        *c = *a + *b;
        ++a; ++b; ++c;
    } while(--len);
}

То райзонанс генерирует практически идеальный код
Код
             ; FUNCTION ?add8_21 (BEGIN)
             ; Register XW is assigned to parameter a
0000         ?DO_0005:
             ; SOURCE LINE # 23
0000 1603       F                      LDW    Y,(003H,SP)  ; [ b ]
0002 90F6                              LD     A,(Y)
0004 FB                                ADD    A,(X)
0005 1605       F                      LDW    Y,(005H,SP)  ; [ c ]
0007 90F7                              LD     (Y),A
             ; SOURCE LINE # 24
0009 5C                                INCW   X
000A 1603       F                      LDW    Y,(003H,SP)  ; [ b ]
000C 905C                              INCW   Y
000E 1703       F                      LDW    (003H,SP),Y  ; [ b ]
0010 1605       F                      LDW    Y,(005H,SP)  ; [ c ]
0012 905C                              INCW   Y
0014 1705       F                      LDW    (005H,SP),Y  ; [ c ]
0016 0A07       F                      DEC    (007H,SP)  ; [ len ]
0018 0D07       F                      TNZ    (007H,SP)  ; [ len ]
001A 26E4                              JRNE   ?DO_0005
001C 81                                RET


С более простой задачей
Код
void add8_1(unsigned char *a, unsigned char *b, unsigned char len)
{
    do {
        *a++ += *b++;
    } while(--len);
}

Все справились примерно одинаково неудовлетворительно!
Ее надо записать в таком виде:
Код
void add8_3(unsigned char *a, unsigned char *b, unsigned char len)
{
    do {
        *a += *b;
                ++a;
                ++b;
    } while(--len);
}


Тогда IAR и Райзонанс справились гораздо лучше! Только райзонанс зачем что Y каждый раз сохраняет и загружает, а IAR с фирменным } while(--len);
Космик и X и Y перегружает и код не отличается практически от add8_1

райзонанс
Код
             ; FUNCTION ?add8_3 (BEGIN)
             ; Register XW is assigned to parameter a
0000         ?DO_0007:
             ; SOURCE LINE # 31
0000 1603       F                      LDW    Y,(003H,SP)  ; [ b ]
0002 F6                                LD     A,(X)
0003 90FB                              ADD    A,(Y)
0005 F7                                LD     (X),A
             ; SOURCE LINE # 32
0006 5C                                INCW   X
             ; SOURCE LINE # 33
0007 905C                              INCW   Y
0009 1703       F                      LDW    (003H,SP),Y  ; [ b ]
000B 0A05       F                      DEC    (005H,SP)  ; [ len ]
000D 0D05       F                      TNZ    (005H,SP)  ; [ len ]
000F 26EF                              JRNE   ?DO_0007
0011 81                                RET

IAR
Код
     24          void add8_3(unsigned char *a, unsigned char *b, unsigned char len)
     25          {
   \                     add8_3:
   \   000000 B700                  LD        S:?b0, A
     26              do {
     27                  *a += *b;
   \                     ??add8_3_0:
   \   000002 90F6                  LD        A, (Y)
   \   000004 FB                    ADD       A, (X)
   \   000005 F7                    LD        (X), A
     28                          ++a;
   \   000006 5C                    INCW      X
     29                          ++b;
   \   000007 905C                  INCW      Y
     30              } while(--len);
   \   000009 B600                  LD        A, S:?b0
   \   00000B ABFF                  ADD       A, #0xff
   \   00000D B700                  LD        S:?b0, A
   \   00000F 4F                    CLR       A
   \   000010 B100                  CP        A, S:?b0
   \   000012 2600                  JRNE      L:??add8_3_0
     31          }
   \   000014 81                    RET


Cosmic
Код
100  004e               _add8_3:
101  004e 89                pushw    x
102       00000000      OFST:    set    0
104  004f               L52:
105                    ; 32         *a += *b;
106  004f 1e01              ldw    x,(OFST+1,sp)
107  0051 1605              ldw    y,(OFST+5,sp)
108  0053 f6                ld    a,(x)
109  0054 90fb              add    a,(y)
110  0056 f7                ld    (x),a
111                    ; 33         ++a;
112  0057 5c                incw    x
113  0058 1f01              ldw    (OFST+1,sp),x
114                    ; 34         ++b;
115  005a 1e05              ldw    x,(OFST+5,sp)
116  005c 5c                incw    x
117  005d 1f05              ldw    (OFST+5,sp),x
118                    ; 35     } while(--len);
119  005f 0a07              dec    (OFST+7,sp)
120  0061 26ec              jrne    L52
121                    ; 36 }
122  0063 85                popw    x
123  0064 81                ret

В общем надо что то посложнее попробовать!


Цитата(Pat @ Apr 18 2010, 21:28) *
Было интересно посмотреть вход в прерывание и не очень проникся там сплошные call.

Это сокрее всего из-за настройки оптимизации - надо вместо Balanced поставить Speed или Cross Call убрать!

Автор: ukpyr May 1 2010, 17:24

интересно сравнить с avr-gcc и avr-iar по объему и тактам
avr-gcc -O2

Код
42 0000 CF93              push r28
  43 0002 DF93              push r29
  44                   /* prologue: function */
  45                   /* frame size = 0 */
  46 0004 EC01              movw r28,r24
  47 0006 DB01              movw r26,r22
  48 0008 FA01              movw r30,r20
  49                   .L2:
   3:test.c        ****     do {
   4:test.c        ****         *c++ = *a++ + *b++;
  51                   .LM1:
  52 000a 8D91              ld r24,X+
  53 000c 9991              ld r25,Y+
  54 000e 890F              add r24,r25
  55 0010 8193              st Z+,r24
   5:test.c        ****     } while(--len);
  57                   .LM2:
  58 0012 2150              subi r18,lo8(-(-1))
  59 0014 01F4              brne .L2
  60                   /* epilogue start */
   6:test.c        **** }
  62                   .LM3:
  63 0016 DF91              pop r29
  64 0018 CF91              pop r28
  65 001a 0895              ret

Автор: KRS May 1 2010, 18:09

Цитата(ukpyr @ May 1 2010, 21:24) *
интересно сравнить с avr-gcc и avr-iar по объему и тактам

В данном случае gcc лучше код будет, потому что IAR использует Y под стек.
Но в общем для AVR - IAR вне конкуренции!!

Но это все bb-offtopic.gif

Автор: KRS May 1 2010, 23:00

Посмотрел я как компилируется моя функция разбора данных.
Лучше всего повел себя космик! Для иллюстрации выдрал кусочек в отдельную функцию

Код
void Set12(u8_t id, u16_t v);
void test_1(u8_t *ptr)
{
  u8_t id, ext;
  ext = ptr[0];
  id = ptr[1];
  Set12((id >> 4) + ext*8, ptr[2] | ((id & 0x0F)<<8) );
}


IAR что то перемудрил со сдвигами, даже разбираться в лом!
Код
   \                     test_1:
   \   000000 9093                  LDW       Y, X
    119            u8_t id, ext;
    120            ext = ptr[0];
    121            id = ptr[1];
   \   000002 5C                    INCW      X
   \   000003 F6                    LD        A, (X)
   \   000004 B700                  LD        S:?b0, A
    122            Set12((id >> 4) + ext*8, ptr[2] | ((id & 0x0F)<<8) );
   \   000006 5F                    CLRW      X
   \   000007 41                    EXG       A, XL
   \   000008 B600                  LD        A, S:?b0
   \   00000A 01                    RRWA      X, A
   \   00000B A40F                  AND       A, #0xf
   \   00000D 02                    RLWA      X, A
   \   00000E 58                    SLLW      X
   \   00000F 58                    SLLW      X
   \   000010 58                    SLLW      X
   \   000011 58                    SLLW      X
   \   000012 58                    SLLW      X
   \   000013 58                    SLLW      X
   \   000014 58                    SLLW      X
   \   000015 58                    SLLW      X
   \   000016 BF00                  LDW       S:?w1, X
   \   000018 93                    LDW       X, Y
   \   000019 1C0002                ADDW      X, #0x2
   \   00001C F6                    LD        A, (X)
   \   00001D 5F                    CLRW      X
   \   00001E 97                    LD        XL, A
   \   00001F 01                    RRWA      X, A
   \   000020 BA00                  OR        A, S:?b3
   \   000022 01                    RRWA      X, A
   \   000023 BA00                  OR        A, S:?b2
   \   000025 01                    RRWA      X, A
   \   000026 90F6                  LD        A, (Y)
   \   000028 48                    SLL       A
   \   000029 48                    SLL       A
   \   00002A 48                    SLL       A
   \   00002B B700                  LD        S:?b1, A
   \   00002D B600                  LD        A, S:?b0
   \   00002F 4E                    SWAP      A
   \   000030 A40F                  AND       A, #0xf
   \   000032 BB00                  ADD       A, S:?b1
   \   000034 CC0000                JP        L:Set12
    123          }


Райзонанс, много лишних пересылок.
Код
             ; FUNCTION ?test_1 (BEGIN)
             ; Register-parameter ptr (XW) is relocated (auto)
             ; SOURCE LINE # 122
0000 89                                PUSHW  X
0001 89                                PUSHW  X
             ; SOURCE LINE # 125
0002 F6                                LD     A,(X)
0003 6B02       F                      LD     (002H,SP),A  ; [ ext ]
             ; SOURCE LINE # 126
0005 1E03       F                      LDW    X,(003H,SP)  ; [ ptr ]
0007 E601                              LD     A,(001H,X)
0009 6B01       F                      LD     (001H,SP),A  ; [ id ]
             ; SOURCE LINE # 127
000B A60F                              LD     A,#00FH
000D 1401       F                      AND    A,(001H,SP)  ; [ id ]
000F 5F                                CLRW   X
0010 95                                LD     XH,A
0011 BF03       F                      LDW    ?CH.w,X
0013 1E03       F                      LDW    X,(003H,SP)  ; [ ptr ]
0015 B605       F                      LD     A,?CH
0017 B703       F                      LD     ?BH,A
0019 E602                              LD     A,(002H,X)
001B B704       F                      LD     ?BL,A
001D BE02       F                      LDW    X,?BH.w
001F 7B02       F                      LD     A,(002H,SP)  ; [ ext ]
0021 48                                SLL    A
0022 48                                SLL    A
0023 48                                SLL    A
0024 B703       F                      LD     ?BH,A
0026 7B01       F                      LD     A,(001H,SP)  ; [ id ]
0028 4E                                SWAP   A
0029 A40F                              AND    A,#00FH
002B BB03       F                      ADD    A,?BH
002D CD0000     F                      CALL   ?Set12
0030 5B04                              ADD    SP,#004H
0032 81                                RET


Космик - лучший код.
Код
477  021b               _test_1:
478  021b 89                pushw    x
479  021c 5203              subw    sp,#3
480       00000003      OFST:    set    3
482                    ; 124   ext = ptr[0];
483  021e f6                ld    a,(x)
484  021f 6b02              ld    (OFST-1,sp),a
485                    ; 125   id = ptr[1];
486  0221 e601              ld    a,(1,x)
487  0223 6b03              ld    (OFST+0,sp),a
488                    ; 126   Set12((id >> 4) + ext*8, ptr[2] | ((id & 0x0F)<<8) );
489  0225 a40f              and    a,#15
490  0227 1604              ldw    y,(OFST+1,sp)
491  0229 97                ld    xl,a
492  022a 90e602            ld    a,(2,y)
493  022d 02                rlwa    x,a
494  022e 89                pushw    x
495  022f 7b04              ld    a,(OFST+1,sp)
496  0231 48                sll    a
497  0232 48                sll    a
498  0233 48                sll    a
499  0234 6b03              ld    (OFST+0,sp),a
500  0236 7b05              ld    a,(OFST+2,sp)
501  0238 4e                swap    a
502  0239 a40f              and    a,#15
503  023b 1b03              add    a,(OFST+0,sp)
504  023d cd0000            call    _Set12
506  0240 85                popw    x
507                    ; 127 }
508  0241 5b05              addw    sp,#5
509  0243 81                ret


Это только маленький кусочек. В общем на сейчас Космик выигрывает при функциях посложнее.
Например в кусочке Set8((Id & 0x1F)+Ext*32,*ptr++); стал вызывать билиотечную функцию сдвига, космик и IAR обошлись без нее!

У IAR возникают каие то артефакты!!! Про dec он вообще похоже не подозревает smile.gif
Еще и такой код if (!--Len) return; скомпилировал как
Код
   \   0000A1 B600                  LD        A, S:?b8
   \   0000A3 ABFF                  ADD       A, #0xff
   \   0000A5 B700                  LD        S:?b8, A
   \   0000A7 4F                    CLR       A
   \   0000A8 B100                  CP        A, S:?b8
   \   0000AA 2600                  JRNE      ??lb_3
   \   0000AC CC0000                JP        L:??parser_3


Цитата
К тому же IAR не использует стек, а использует виртуальные регистры. Что IMHO для этого ядра криво!

Здесь я был не прав! Это здорово улучшаед код - особенно при использовании специфической адресации
Indirect и Indexed Inderec - получаются аппаратные указатели.Так что когда IAR полечат от артефактов код у него будет хороший!

Райзонанс тоже использует виртуальные регистры, А космик стек.

Автор: _Bill May 3 2010, 07:48

Да уж... wink.gif Сильно улучшает...
if (!--Len) вообще можно реализовать одной инструкцией

Код
        dec    S:b8
        jrne   ??b3
.....
Или нет?
PS: Видно первая версия еще очень сырая.

Автор: Xenia May 3 2010, 11:48

Цитата(_Bill @ May 3 2010, 11:48) *
PS: Видно первая версия еще очень сырая.

Это очевидно. Большинство ошибок эффективно выявляются и устраняются только в процессе интенсивной эксплуатации большим количеством пользователей, как бы тщательно не тестировали продукт сами производители. А раз эта версия первая из вышедших на рынок, то погрешностей в ней можно ожидать много. Один номер версии о многом говорит - EWSTM8-1100 - нолик в миноре обычно не бывает, т.к. букве A соответствует единичка.
Вскорости ждем следующую версию EWSTM8 за номером 1.20. Она уже объявлена к выпуску в ближайшие 2-3 месяца на японском сайте IAR -
http://electronix.ru/redirect.php?http://www.iar.com/website1/1.0.1.0/495/3/
На английском такого упоминания нет. А здесь еще кое-что разобрать можно, даже не владея японским языком, или перевести с помощью электронного переводчика.

Автор: _Bill May 3 2010, 14:58

Цитата(Xenia @ May 3 2010, 15:48) *
Это очевидно. Большинство ошибок эффективно выявляются и устраняются только в процессе интенсивной эксплуатации большим количеством пользователей, как бы тщательно не тестировали продукт сами производители. А раз эта версия первая из вышедших на рынок, то погрешностей в ней можно ожидать много. Один номер версии о многом говорит - EWSTM8-1100 - нолик в миноре обычно не бывает, т.к. букве A соответствует единичка.
Вскорости ждем следующую версию EWSTM8 за номером 1.20. Она уже объявлена к выпуску в ближайшие 2-3 месяца на японском сайте IAR -
http://electronix.ru/redirect.php?http://www.iar.com/website1/1.0.1.0/495/3/
На английском такого упоминания нет. Там кое-что разобрать можно, даже не владея японским языком или перевести с помощью электронного переводчика.

Спасибо!!! Будем ждать. Хотя я на сегодняшний день остановился на комплексе SVDT-Cosmic. Поскольку я пишу программы на ассемблере, то ассемблер у Cosmic мне понравился больше остальных.

Автор: KRS May 3 2010, 15:27

Цитата(_Bill @ May 3 2010, 18:58) *
Хотя я на сегодняшний день остановился на комплексе SVDT-Cosmic. Поскольку я пишу программы на ассемблере, то ассемблер у Cosmic мне понравился больше остальных.

А родной ST хуже?

Кстати у IAR есть все шансы стать лучшим компилером! Оптимизатор там хорошо работает, например, такой цикл
Код
void test_3(u8_t *ptr, u8_t len)
{
  u8_t i;
  for(i=0; i < len; i++) {
    ptr[i]--;
  }
}

он соптимизоровал в
Код
  if (!len)
    return;
  do {
    ptr[0]--;
    ++ptr;
  } while(--len);


Но с декрементом у IAR явные проблемы!

Код
   \                     test_3:
   \   000000 B700                  LD        S:?b0, A
    139            u8_t i;
    140            for(i=0; i < len; i++) {
   \   000002 4F                    CLR       A
   \   000003 B100                  CP        A, S:?b0
   \   000005 2700                  JREQ      L:??test_3_0
    141              ptr[i]--;
   \                     ??test_3_1:
   \   000007 A6FF                  LD        A, #0xff
   \   000009 FB                    ADD       A, (X)
   \   00000A F7                    LD        (X), A
    142            }
   \   00000B 5C                    INCW      X
   \   00000C B600                  LD        A, S:?b0
   \   00000E ABFF                  ADD       A, #0xff
   \   000010 B700                  LD        S:?b0, A
   \   000012 4F                    CLR       A
   \   000013 B100                  CP        A, S:?b0
   \   000015 2600                  JRNE      L:??test_3_1
    143          }
   \                     ??test_3_0:
   \   000017 81                    RET

вместо 1 операции dec (x) - 3 операции!
Ну а условие окончания цикла - как всегда!


Да, кстати с инкрементом такие же проблемы!

Автор: Xenia May 3 2010, 16:01

Цитата(_Bill @ May 3 2010, 18:58) *
Хотя я на сегодняшний день остановился на комплексе SVDT-Cosmic. Поскольку я пишу программы на ассемблере, то ассемблер у Cosmic мне понравился больше остальных.

А разве есть разница на каком ассемблере писать? smile.gif Я понимаю, если это компилятор языка более высокого уровня - тут действительно эффективность кода во многом зависит от компилятора. Но ассемблер! Растолкуйте мне, пожалуйста, разницу. Может быть там просто редактор более удобный или встроенные макросы?

Автор: KRS May 3 2010, 16:29

Цитата(Xenia @ May 3 2010, 20:01) *
А разве есть разница на каком ассемблере писать? smile.gif

Разница большая! Вот возьмите хотя бы IARовский ассемблер - там возможно использовать С препроцессор
#ifdef
#include
и т.д.
Возможности насписания макросов отличаются.
Да и линкер все равно нужен.
Если писать на асме - я бы выбрал IAR - хороший линкер, С препроцессор, мароксы обынчые для разных архитектур...

Автор: zltigo May 3 2010, 16:57

Цитата(KRS @ May 3 2010, 19:29) *
Разница большая! Вот возьмите хотя бы IARовский ассемблер - там возможно использовать С препроцессор

'С' препроцесср, на то он и препроцессор, что вещь совершенно независимая и способен обрабатывать любые тексты, включая не только любой ASM, но вообще литературные тексты. Другое дело, что у макроассемблеров бывает наворотов и много поболее, только едва-ли более одного из сотни асмописателей знают о них sad.gif sad.gif sad.gif.

Автор: _Bill May 3 2010, 18:28

Цитата(Xenia @ May 3 2010, 20:01) *
А разве есть разница на каком ассемблере писать? smile.gif Я понимаю, если это компилятор языка более высокого уровня - тут действительно эффективность кода во многом зависит от компилятора. Но ассемблер! Растолкуйте мне, пожалуйста, разницу. Может быть там просто редактор более удобный или встроенные макросы?

Все трансляторы с ассемблера различаются прежде всего своим синтаксисом. Поэтому программа, написанная для одного ассемблера, скорее всего не сможет быть оттранслирована другим. А в общем, дело не только в одном ассемблере, но и во всей системе в целом. На данный момент для меня более удобной оказалась среда Cosmic в оболочке STDV.


Цитата(KRS @ May 3 2010, 19:27) *
А родной ST хуже?
вместо 1 операции dec (x) - 3 операции!
Ну а условие окончания цикла - как всегда!
Да, кстати с инкрементом такие же проблемы!

Хм .... Если бы только 3 операции, то это еще куда ни шло. При декременте и сравнении их получается 5, и это вместо одной. smile.gif

Автор: KRS May 3 2010, 21:02

ассемблеры по возможностям примерно одинаковые!
Но вообще у cosmic есть плюс - дистрибутив занимает всего 10 метров. В развернутом виде 30 метров.
А райзонанс - 116 метров, плюс еще без RIDE не ставится это еще 18 метров. В развернутом виде у меня 261 метр.

Но IMHO т.к. IAR уже появился лучше его использовать, там покрайней мере уже все .h файлы для чипов есть!
(кстати развернутый IAR пока занимает 126 метров, что там навернуто в RIDE7?)

Автор: Xenia May 8 2010, 09:24

Только что (файл датируется 5 мая) IAR выложила сервис-пак №1 к своей версии компилятора для STM8.
http://electronix.ru/redirect.php?http://supp.iar.com/Updates/?product=EWSTM8
Модифицирует версию 1.10.0 до 1.10.1. Выложила на FTP в ту же папку, где лежал инсталлятор.
Странное название патча - никогда прежде сервис-паками IAR свои апдейты не называла. И ставится он тоже не типично - не добавляется в директорий, а запускается как экзешник (хотя патчи такого типа раньше бывали). И размерчик тоже великоват - 33 Мб при размере всего инсталлятора 89 Мб. Что-то слишком тяжело для драйверов и файлов конфигурации. Может быть там гораздо больше исправлений, чем описано?

Автор: KRS May 8 2010, 20:45

Цитата(Xenia @ May 8 2010, 13:24) *
Только что (файл датируется 5 мая) IAR выложила сервис-пак №1 к своей версии компилятора для STM8.

в bin заменились dll для отладчика - симулятор, драйвера stlink и т.д.
компилер старый остался.

Тут обратил внимание что у STM8 свой линкер - ilinkstm8, и на выходе компилера elf, а конфигурация линкера icf.
Что меня удивило - я думал жто только к АРМу они сделали из-за EABI.
Поддержка elf (покарйней мере в ARM) у них какая то убогая! Даже размер секции нельзя записать, надо счиать.

Теперь что IAR будет отказываться от UBROF и xlink для всех семейств?

Автор: zltigo May 8 2010, 22:27

Цитата(KRS @ May 8 2010, 23:45) *
Поддержка elf (покарйней мере в ARM) у них какая то убогая! Даже размер секции нельзя записать, надо счиать.

Если что-то не устраивает, то объектники созданные PRO версией, по крайней мере ARM, не имеют защиты и жуются родными binutils.

Автор: guxa May 14 2010, 10:04

Цитата(KRS @ Apr 13 2010, 15:27) *
Наткнулся тут на новое семейство.
Заинтересовали LQFP44 c CAN, как дешовая замена AT90CAN64 или мелких STM32.

На семинар
http://electronix.ru/redirect.php?http://catalog.compel.ru/blog/2010/04/08/27-04-moskva-29-04-sankt-peterburg-seminar-mikrokontrollery-stm8/
никто не собирается?



Скажите, а CAN является важным условием использования? Индустриальное применение (насколько высока требуемая надежность)?

Автор: KRS May 14 2010, 11:50

Цитата(guxa @ May 14 2010, 14:04) *
Скажите, а CAN является важным условием использования? Индустриальное применение (насколько высока требуемая надежность)?

Это к чему вопрос?

Автор: Dog Pawlowa May 14 2010, 12:58

Вот CAN вам неймется, подскажите лучше, кто тела прерываний нашел!? smile.gif
То ли, как для STM32, в библиотеках искать, то ли как обычно вектора прописывать?
Речь о IARе.

Автор: _Bill May 14 2010, 18:01

Цитата(Dog Pawlowa @ May 14 2010, 16:58) *
Вот CAN вам неймется, подскажите лучше, кто тела прерываний нашел!? smile.gif
То ли, как для STM32, в библиотеках искать, то ли как обычно вектора прописывать?
Речь о IARе.

Делается так же, как и для AVR.

Автор: Dog Pawlowa May 14 2010, 19:23

Цитата(_Bill @ May 14 2010, 21:01) *
Делается так же, как и для AVR.

А можно подробнее?
В документации есть упоминание на файл iodevice.h, который я не нашел нигде.
В примерах прагмы в стиле финских студентов - #pragma vector 25, и никак не приведу свою нумерацию к STэшной.

Автор: KRS May 14 2010, 20:32

Таблица прерываний находится в библиотеке, исходники в файле
stm8\src\lib\interrupt.s
таблица помещатеся в секцию .intvec и заполняется метками _interrupt_n, которые по умолчанию указывают на unhandled_exception (бесконечный цикл), но т.к. они PUBWEAK, PUBLIC их перебивает.
Т.е. если на С писать то стандартно, #pragma vector __interrupt. А если на асме PUBLIC _interrupt_n.

Автор: Dog Pawlowa May 14 2010, 20:49

Цитата(KRS @ May 14 2010, 23:32) *
Т.е. если на С писать то стандартно, #pragma vector __interrupt. А если на асме PUBLIC _interrupt_n.

Все так, только вектора нигде не задифайнены по именам.
В документации ST вектор TIM2_UPDATE = 13, в IARe 15, потому что я поставил индивидуальные ловушки и вычислил.

Но все равно пока не заработало - что ли нужно ручками запрос прерывания сбрасывать?

.... Угу, прочитал уже.
....Диод моргает, проект завершен smile.gif

Автор: KRS May 14 2010, 21:19

Цитата(Dog Pawlowa @ May 15 2010, 00:49) *
В документации ST вектор TIM2_UPDATE = 13, в IARe 15

IAR все подряд с 0 считает, 0 - reset, 1 - trap
а ST наверное reset и trap не учитывает.


Кстати у IAR номера векторов в файлах iostm8xxxx.h есть!
Код
/*-------------------------------------------------------------------------
*      Interrupt vector numbers
*-----------------------------------------------------------------------*/
#define AWU_vector                           0x03
#define CLK_CSS_vector                       0x04
...

Автор: Dog Pawlowa May 14 2010, 21:32

Цитата(KRS @ May 15 2010, 00:19) *
ST наверное reset и trap не учитывает.

Кстати у IAR номера векторов в файлах iostm8xxxx.h есть!

Да, так и есть. Хотя странно, обычно ИАР следует в фарватере производителя.

Точно, вот мой вектор, 15:
#define TIM2_OVR_UIF_vector 0x0F
Спасибо!

Автор: dimka76 Jun 15 2010, 12:02

А с программаторами для них как дела обстоят?
Есть что-то бесплатное?

Автор: ZVE Jun 15 2010, 18:08

Бесплатного вроде как нет. Да и особо не нужно, так как есть http://electronix.ru/redirect.php?http://www.st.com/mcu/contentid-130-113-STM8S_DISCOVERY.html за цену около 10$ (реально у нас его продают за все 15-20) , что сводит целесообразность изготовления самодельного программатора к нулю laughing.gif . В этот дискавери встроена обрезанная версия ST-Link, через него можно прошивать и отлаживать.

Автор: Т.Достоевский Jun 15 2010, 21:50

Цитата(Dog Pawlowa @ May 15 2010, 00:49) *
....Диод моргает, проект завершен smile.gif

Мог бы и прикрепить wink.gif

Автор: Linker Jun 30 2010, 16:53

Лично меня заинтересовала заявленная устойчивость к помехам и низкое потребление. Кроме того очевидно большие объемы памяти (Flash, EEPROM, RAM) при одинаковой цене конкурентов. Да и перефирия разнообразнее. Щас юзаю Discovery. Все мигает, как писано. Хотелось бы услышать про траблы. Их не может не быть. Настораживает малое количество отзывов.

Автор: _Pasha Jun 30 2010, 20:38

Цитата(Linker @ Jun 30 2010, 19:53) *
Лично меня заинтересовала заявленная устойчивость к помехам

В каких попугаях ея можно измерить ? biggrin.gif

Автор: _Bill Jun 30 2010, 23:25

Цитата(Linker @ Jun 30 2010, 19:53) *
Хотелось бы услышать про траблы. Их не может не быть. Настораживает малое количество отзывов.

Про одну проблему я уже здесь сказал. А то, что отзывов мало, не удивительно. Семейство ведь новое.

Автор: IGK Jul 1 2010, 05:50

Цитата(_Bill @ Jul 1 2010, 02:25) *
...Семейство ведь новое.

Совсем неплохо выглядит совместимость (снизу вверх) STM8L -> STM32L. Поэтому я завтра закажу несколько STM8L152C6 и начну проект на них. Ко времени осознания неприятного факта, что не хватило ресурсов, выйдет 32-я серия - перейду на нее :-) Надеюсь, она будет еще дешевле 8-й :-)

У нас (в Украине) цена неплохая - 21 грн за STM8L152C6 против 31 грн за ATmega32A.

Автор: Linker Jul 1 2010, 14:19

Цитата(_Pasha @ Jul 1 2010, 03:38) *
В каких попугаях ея можно измерить ? biggrin.gif

Правильнее сказать устойчивость к перенапряжениям на пинах. В даташите приводится значение 4000 В.

Автор: Aner Jul 1 2010, 14:22

к каким еще перенапяжениям? к статике!

Автор: topkin Jul 2 2010, 04:22

Цитата(Aner @ Jul 1 2010, 18:22) *
к каким еще перенапяжениям? к статике!

Я, собственно говоря не большой знаток во стандартах по помехам, ибо я не применяю свои разработки в жестких условиях помех, но на семинаре по STM8 серия STM8S позиционировалась как надежная линейка для промышленных применений. Я не большой знаток стандартов по ЭМИ и прочее, но в даташитах на STM8S прсутсвуют различные стнадарты и классы помехозащищенности, не буду приводить не понятные для меня сочетания цифр и букав, интересующиеся могут посмотреть сами. Интересный момент, который я так же услышал на семинаре, это аппаратный контроль памяти(нескольких регистров), что то вроде складываются значения регистров и в итоге сумма должна ровняться нулю. Мол при сильной помехе при частичном или вылете памяти будет сформирован сброс и соответствующее условие, как то так) Я специально не искал, но на глаза сия информация так и не попалась, знающие люди - ткните носом. Вообще семейство интересное, играемся пока, но пока руководство полной воли не дает, вот как запасы атмела иссякнут, тогда ......

Автор: Linker Jul 2 2010, 17:18

Цитата(Aner @ Jul 1 2010, 21:22) *
к каким еще перенапяжениям? к статике!

Перенапряжения - это такие напряжения, которые превышают рабочие. Например, в цепи питания процессора 5 вольт проскакивает 200 В. Правда оно длится несколько микросек. И если имеется защита, то процессор не выходит из строя.
Статическое напряжение ("Статика") - это один из многих возможных источников перенапряжений. Далеко не единственный, хотя и очень распространенный. Не слишком сложно?

Автор: IGK Jul 9 2010, 18:34

Нашел время осмотреть STM8S-Discovery :-)
Я до этого по диагонали прочел разную инфу, из которой почерпнул оптимистическое утверждение, что вся серия нога-в-ногу совместима для одинаковых корпусов. Поэтому была мысль сдуть феном с борды STM8S105 и прилепить туда STM8L152, ибо я на него собираюсь переводить проекты. Оказалось, ног одинаковое количество, но не совпадают...
Посему сажусь ваять отладочную плату для своего устройства, потом отпаяю мостики у Дискавери и попробую его на совместимость с STM8L.
Это не скоро. Отпишусь, когда проверю.

Автор: pr2 Jul 14 2010, 01:40

Подскажите, где-то есть сейчас в наличии STM8S-Discovery, где его можно купить?

Автор: Xenia Jul 14 2010, 12:19

Вчера вышел новый сервис-пак к EWSTM8 №3 (№2 пропущен - не существует) - SP-EWSTM8-1103.exe
http://electronix.ru/redirect.php?http://supp.iar.com/Updates/?product=EWSTM8
Модифицирует версию до 1.10.3. Выложила на FTP в ту же папку, где лежит инсталлятор.
Что там конкретно исправили, написано крайне невразумительно: "corrects a number of problems in the 1.10.0 release", а когда читаешь релиз-нотес http://electronix.ru/redirect.php?http://supp.iar.com/FilesPublic/UPDINFO/005228/infocenter/release_notes.ENU.html , то и там непонятно, заменили компилятор или нет.
Не плохо бы это проверить тем, кто тут на компиляцию жаловался.

Автор: topkin Jul 14 2010, 12:27

Цитата(IGK @ Jul 10 2010, 06:34) *
Нашел время осмотреть STM8S-Discovery :-)
Я до этого по диагонали прочел разную инфу, из которой почерпнул оптимистическое утверждение, что вся серия нога-в-ногу совместима для одинаковых корпусов. Поэтому была мысль сдуть феном с борды STM8S105 и прилепить туда STM8L152, ибо я на него собираюсь переводить проекты. Оказалось, ног одинаковое количество, но не совпадают...
Посему сажусь ваять отладочную плату для своего устройства, потом отпаяю мостики у Дискавери и попробую его на совместимость с STM8L.
Это не скоро. Отпишусь, когда проверю.


У меня возникали похожие мысли, но STM8S и STM8L это разные линейки, а совместимость только внутри этих линеек. А смысл pin to pin совместимости в том, что взяв однотипные корпуса с одинаковым количеством ножек, вы можете без проблем взаимозаменять микроконтроллеры, различия будут только в объеме памяти.
Вот бы оптимизировать урезанный ST-link с дискавери до полноценной версии было бы интересно).

Автор: IGK Jul 14 2010, 18:18

Цитата(topkin @ Jul 14 2010, 15:27) *
У меня возникали похожие мысли, но STM8S и STM8L это разные линейки, а совместимость только внутри этих линеек. А смысл pin to pin совместимости в том, что взяв однотипные корпуса с одинаковым количеством ножек, вы можете без проблем взаимозаменять микроконтроллеры, различия будут только в объеме памяти.
Вот бы оптимизировать урезанный ST-link с дискавери до полноценной версии было бы интересно).



Цитата(topkin @ Jul 14 2010, 15:27) *
У меня возникали похожие мысли, но STM8S и STM8L это разные линейки, а совместимость только внутри этих линеек. А смысл pin to pin совместимости в том, что взяв однотипные корпуса с одинаковым количеством ножек, вы можете без проблем взаимозаменять микроконтроллеры, различия будут только в объеме памяти.
Вот бы оптимизировать урезанный ST-link с дискавери до полноценной версии было бы интересно).

Не охота искать по инету, но видел картинку, где нарисованы все (АРМы, 8-битники) и подпись. Типа того, что паять можно наобум :-) и ничего, пин в пин совместимы. Именно между разными линейками, а не внутри.
Да фиг с ним. Уже начал трассировать плату, там все задействовано - ЦАП, АЦП, клавиши сенсорные. В начале недели сделаю платку и начну шаманить с линком Дискавери. Лишь бы время было.

Автор: KRS Aug 2 2010, 10:37

Цитата(Xenia @ Jul 14 2010, 16:19) *
Не плохо бы это проверить тем, кто тут на компиляцию жаловался.

Не компилер не поменялся пока sad.gif
Ждем новую цифру в версии, IMHO если чипы набирают популярность это будет скоро.

Автор: ведущий_специалист Aug 2 2010, 17:58

Цитата(IGK @ Jul 9 2010, 22:34) *
Нашел время осмотреть STM8S-Discovery :-)
Я до этого по диагонали прочел разную инфу, из которой почерпнул оптимистическое утверждение, что вся серия нога-в-ногу совместима для одинаковых корпусов. Поэтому была мысль сдуть феном с борды STM8S105 и прилепить туда STM8L152, ибо я на него собираюсь переводить проекты. Оказалось, ног одинаковое количество, но не совпадают...
Посему сажусь ваять отладочную плату для своего устройства, потом отпаяю мостики у Дискавери и попробую его на совместимость с STM8L.
Это не скоро. Отпишусь, когда проверю.


Не будет дискавери шить ничего кроме той микры что у него на борту. Там в описании написано, что поддерживает только s105. Я пробывал ради проверки прошить такой же проц только 16 кило. Дискавери его не увидел а уже купленный ст линк спокойно прошил. так что дискавери - только для s105c6 laughing.gif увы

Автор: e-serg Aug 4 2010, 16:29

Цитата(ведущий_специалист @ Aug 3 2010, 02:58) *
Не будет дискавери шить ничего кроме той микры что у него на борту. Там в описании написано, что поддерживает только s105. Я пробывал ради проверки прошить такой же проц только 16 кило. Дискавери его не увидел а уже купленный ст линк спокойно прошил. так что дискавери - только для s105c6 laughing.gif увы

с сайта производителя, кто-то спросил и получил ответ в конференции.
www.st.com > my.st.com > STe2eCommunities > Microcontrollers
Microcontrollers > STM8S-Discovery > Discovery vs ST-LINK
"Hello ,
With this embeded version of STLink you are ablle to program all STM8 devices (S,L & A). The only limitation is with voltage level for STM8L devices .
No voltage adapter has been added in this version so 1.8V is not supported.
STM32 devices are not supported.
Best Regards
Grom"
сам пока не проверял, "L" в наличие нет, stm8s903 руки не дошли проверить. laughing.gif

Автор: ukpyr Aug 4 2010, 17:04

а какой смысл в stm8s после появления stm32s100 (цены уже сопоставимые) ?
тем более если учесть наличие ГНУтых кросс-платформенных средств разработки .

Автор: topkin Aug 5 2010, 04:16

Цитата(ukpyr @ Aug 4 2010, 21:04) *
а какой смысл в stm8s после появления stm32s100 (цены уже сопоставимые) ?
тем более если учесть наличие ГНУтых кросс-платформенных средств разработки .

Как то для не больших приложений - дергателей ногами никак рука не поднимается ставить 32 - разрядный кортекс. Плюс минимальный корпус 48 пин, хотя цены и правда низкие. Мне STM8L симпатично, может кто работал, поделитесь впечатлениями? Вот что мне попалось в сети по STM8L, http://electronix.ru/redirect.php?http://www.futureelectronics.com/en/Technologies/Product.aspx?ProductID=STM8LDISCOVERYSTMICROELECTRONICS1000715, жаль что более подробной информации нет, а то глядишь будет заточенный ST - Link под STM8L.

Автор: _Bill Aug 5 2010, 06:14

Цитата(ведущий_специалист @ Aug 2 2010, 21:58) *
Не будет дискавери шить ничего кроме той микры что у него на борту. Там в описании написано, что поддерживает только s105. Я пробывал ради проверки прошить такой же проц только 16 кило. Дискавери его не увидел а уже купленный ст линк спокойно прошил. так что дискавери - только для s105c6 laughing.gif увы

У меня программатором от Discovery прекрасно шьется STM8S103K6. Отличий от ST-Link пока не заметил. rolleyes.gif

Автор: Stanislav_S Aug 5 2010, 08:02

Цитата(_Bill @ Aug 5 2010, 10:14) *
У меня программатором от Discovery прекрасно шьется STM8S103K6. Отличий от ST-Link пока не заметил. rolleyes.gif

А чем зашивали, через програмулину или через IDE компилятора? А то у меня из IAR не удалось прошить.

Автор: _Bill Aug 5 2010, 12:55

Цитата(Stanislav_S @ Aug 5 2010, 12:02) *
А чем зашивали, через програмулину или через IDE компилятора? А то у меня из IAR не удалось прошить.

STVD + Cosmic. Нажимаешь кнопочку Debug. После прошивки отладку останавливаешь и все!

Автор: oll Aug 5 2010, 16:11

Т.е. обьясните спецы - с Дискавери идет все таки полноценный отладчик - программатор для всех STM8? И так все делать все можно из IAR? Если нет, то замена Atmel AVR Megам пока только STM32 или LPC11xxx? Пока (может глупо) развел и заказал платы на замену AVR, в связи с трудностями по закупке оных на PIC16. Пики можно купить легко, цены не очень радуют, но программатор и отладчик уже есть.

Автор: Stanislav_S Aug 6 2010, 09:03

Насчет дискавери сказать трудно, но могу сказать что допустим STM8S103 из IAR не определяется ни дискавери ни ST-LINK, поэтому я его прошиваю фирменной утилитой ST Visual Programmer, а вот 105 на дискавери из IAR виден и через дискавери и через ST-LINK.

Автор: pan_oleg Sep 15 2010, 12:24

День добрый.
Имею вопрос?
Кто-то уже внешние интерапты (exti) заюзал?
Я тут с проблемой-глюком стыкнулся. Делаю так:

GPIO_Init(GPIOD, (GPIO_PIN_2 | GPIO_PIN_4), GPIO_MODE_IN_FL_IT);

В интерапты заходит сюда:
#ifdef _COSMIC_
@far @interrupt void EXTI_PORTD_IRQHandler(void)
#else /* _RAISONANCE_ */
void EXTI_PORTD_IRQHandler(void) interrupt 6
#endif /* _COSMIC_ */
{
ButtonState ^= 0xFF;
}
но проблема в следующем: а как узнать, какой имено зз пинов PORTD вызвал интерапт (в моем примере 2 или 3)?
Сколько искал хоть какие-то флаги, пусто. Их что по ходу забыли?


Автор: dimka76 Sep 15 2010, 12:36

Цитата(pan_oleg @ Sep 15 2010, 16:24) *
но проблема в следующем: а как узнать, какой имено зз пинов PORTD вызвал интерапт (в моем примере 2 или 3)?
Сколько искал хоть какие-то флаги, пусто. Их что по ходу забыли?


Так ножки в обработчике прерывания опросите и узнаете источник прерывания.

Автор: pan_oleg Sep 15 2010, 13:20

Цитата(dimka76 @ Sep 15 2010, 15:36) *
Так ножки в обработчике прерывания опросите и узнаете источник прерывания.

Само собой. Но я думал, что тут как-то по нормальному - флаги есть на каждый пин. Как в STM32 например.
Видимо зря так думал.

Автор: ArtemDement Oct 22 2010, 17:34



Коллеги, не подскажите, можно ли использовать STM8S-Discovery в качестве переходника USB - GPIO, USB - UART, USB - SPI ?

Как передавать информацию между ПК и ST8 через программатор ?


Автор: ArtemDement Oct 26 2010, 16:49

Неужели нет никаких идей ?

Автор: IGK Oct 27 2010, 08:47

Цитата(ArtemDement @ Oct 26 2010, 19:49) *
Неужели нет никаких идей ?

Никому это не интересно, я думаю. Я вот диодиком помигал, плату тестовую сделал и забросил. Не впечатлило, буду ждать STM32L.
Вы на Казус сходите, там как раз запиливают в размер этот Дискавери. Стружек много :-)

Автор: Ivan Kuznetzov Nov 13 2010, 10:41

Привет всем. Тоже начал осваивать, точнее уже освоил, STM8, а именно линейку STM8L. Компилятор IAR STM8. Отладчик ST-LINK (SWIM интерфейс)

Что понравилось:
1) Наличие программирования/отладки по двум проводкам (SWIM интерфейс у ST-LINK)
2) Единое адресное пространство для FLASH/EEPROM
3) Готовые шаблоны/библиотеки/примеры для работы с периферией
4) 41 вывод GPIO на корпусе LQFP44 !!!
5) Возможность подключения тактового и часового кварцев (иногда например необходима тактовая в 12.288 МГц)
6) 16 битный ШИМ
7) Аппаратный AES шифратор/декриптор
7) Простота и доступность - изучить STM8 даже проще чем AVR

Что пробовал сделать:
1) Интерфейс с картой SD/SDHC (тестировал до 16 ГБ) через FatFS file system от ElmChan
2) Интерфейс с внешним MP3 декодером VS1053 (из-за медленного 8 Мбит/с SPI интерфейса нормально воспроизводятся только файлы с битрейтом до 192 кбит/с)
3) USART - вообще все просто, вдаваться в подробности не буду
4) Вывод тактовых импульсов на ногу CCO (м.б. полезно при работе с VS10xx чипами
5) Работа с таймерами и прерываниями организована просто и замечательно (есть отдельный файл где прописаны процедуры ВСЕХ обработчиков прерываний, сами прерывания/таймеры необходимо только включить и настроить)
6) Работа с микросхемой цифрового радио SI4705 по I2C. (люблю этот FM приемничек)

Выводы:
1) крутой MP3 плеер конечно не собрать - скорость SPI не позволяет (хотя на Atmega32 у меня плеер держит 320кбит/с)
2) МК отлично подойдет на замену AVR для всяких там часов/термометров/автоматов/игрушек/контроллеров шаговых двигателей

Автор: Speleoastronom Nov 21 2010, 13:07

Цитата(Ivan Kuznetzov @ Nov 13 2010, 14:41) *
1) Интерфейс с картой SD/SDHC (тестировал до 16 ГБ) через FatFS file system от ElmChan


Не могли бы Вы поделиться исходничками адаптации FatFS ?


Автор: Fktrctq Nov 21 2010, 20:37

Наконец-то удалось поплотнее заняться платформой STM8.
Первые свои изыскания в этой области провожу на базе St'шной среды ST Visual Develop в связке с компилятором от Cosmic. Самые первые впечатления были удовлетворительными, за исключением некоторых назойливых моментов, таких как самопроизвольное перемещение тулбаров, кривые пути тулчейнов (которые IDE прописывает по умолчанию), содержащие непонятные символы, и редкие "вылетания". В целом же примеры компилировались и отлаживались нормально. Но вот сегодня IDE выкинула очередной фортель: собрал проект вручную со структурой директорий и исходных файлов привычной для себя, но при попытке компиляции файл "stm8_interrupt_vector.c" чудесным образом исчезает из структуры проекта, и О! Чудо!снова появляется но уже в директории "Source Files", которая тут же и создается (в моей структуре проекта этой директории нет). Все бы ничего и можно было смириться, но компилятор говорит: что этого файла найти не может (физически сам файл как лежал на диске так и лежит).
И вот собственно вопрос: как бороться со своеволием среды разработки? Сталкивался ли кто-нибудь с подобным?

Автор: _Bill Dec 3 2010, 05:45

Цитата(Fktrctq @ Nov 22 2010, 00:37) *
Наконец-то удалось поплотнее заняться платформой STM8.
Первые свои изыскания в этой области провожу на базе St'шной среды ST Visual Develop в связке с компилятором от Cosmic. Самые первые впечатления были удовлетворительными, за исключением некоторых назойливых моментов, таких как самопроизвольное перемещение тулбаров, кривые пути тулчейнов (которые IDE прописывает по умолчанию), содержащие непонятные символы, и редкие "вылетания". В целом же примеры компилировались и отлаживались нормально. Но вот сегодня IDE выкинула очередной фортель: собрал проект вручную со структурой директорий и исходных файлов привычной для себя, но при попытке компиляции файл "stm8_interrupt_vector.c" чудесным образом исчезает из структуры проекта, и О! Чудо!снова появляется но уже в директории "Source Files", которая тут же и создается (в моей структуре проекта этой директории нет). Все бы ничего и можно было смириться, но компилятор говорит: что этого файла найти не может (физически сам файл как лежал на диске так и лежит).
И вот собственно вопрос: как бороться со своеволием среды разработки? Сталкивался ли кто-нибудь с подобным?

Project->Settings->Linker->Input->Vector file name. Выберите нужный вам файл. Все очень просто! Или нет?

Автор: Fktrctq Dec 5 2010, 08:12

Цитата(_Bill @ Dec 3 2010, 08:45) *
Project->Settings->Linker->Input->Vector file name. Выберите нужный вам файл. Все очень просто! Или нет?


Помогло! Спасибо!

Автор: ZiB Jan 30 2011, 14:52

Всем, привет!

То же вожусь по маленьку с STM8 пока познания не большие линии ввода-вывода, ЦАП, АЦП,
кому интересно заходите sm.gif
http://electronix.ru/redirect.php?http://ziblog.ru/category/mikrokontrolleryi/stm8l/

Автор: ukpyr Feb 25 2011, 00:04

Цитата
с Дискавери идет все таки полноценный отладчик - программатор для всех STM8?
угу
Цитата
Как передавать информацию между ПК и ST8 через программатор ?
что мешает подключить отдельный USB-RS232 ?
Цитата
Работа с таймерами и прерываниями организована просто и замечательно (есть отдельный файл где прописаны процедуры ВСЕХ обработчиков прерываний, сами прерывания/таймеры необходимо только включить и настроить)
не понятно в чем удобство - возиться с отдельным файлом и вручную прописывать обработчики прерываний. Вот в avr-gcc сделано более удобно.

Автор: mov Mar 14 2011, 09:26

Можно ли в STM8L-DISCOVERY отделить программатор от остального как в STM8S-DISCOVERY ?

Хочется использовать внутренности STM8L-DISCOVERY , но после отладки отделить программатор.

Автор: Transcend Mar 14 2011, 11:40

Цитата(mov @ Mar 14 2011, 12:26) *
Можно ли в STM8L-DISCOVERY отделить программатор от остального как в STM8S-DISCOVERY ?

Хочется использовать внутренности STM8L-DISCOVERY , но после отладки отделить программатор.


Ножовкой по металлу аккуратненько отпилить если - то почем нет? rolleyes.gif

Автор: mov Mar 14 2011, 12:12

Цитата(Transcend @ Mar 14 2011, 14:40) *
Ножовкой по металлу аккуратненько отпилить если - то почем нет? rolleyes.gif


В описании не нашёл сколько слоёв в плате STM8L-DISCOVERY . Если 2 то можно, а вот если 4 ?

Автор: Transcend Mar 14 2011, 12:20

Цитата(mov @ Mar 14 2011, 15:12) *
В описании не нашёл сколько слоёв в плате STM8L-DISCOVERY . Если 2 то можно, а вот если 4 ?

В руке держу эту плату, если смотреть через нее на солнце - дык она почти прозрачная, даже паяльная маска. Не видать там других слоев. И все проводники от чипов отходят в разные стороны. Когда многослойка, то коммутация под корпусом МК обычно делается, переходными отверстиями - а тут под корпусом нет переходных.
Там вот еще разьем стоит с перемычками и на нем написано - ST-LINK / DISCOVERY, так и просится перемычки снять и отпилить.

Автор: mov Mar 14 2011, 12:37

Цитата(Transcend @ Mar 14 2011, 15:20) *
В руке держу эту плату, если смотреть через нее на солнце - дык она почти прозрачная, даже паяльная маска. Не видать там других слоев. И все проводники от чипов отходят в разные стороны. Когда многослойка, то коммутация под корпусом МК обычно делается, переходными отверстиями - а тут под корпусом нет переходных.
Там вот еще разьем стоит с перемычками и на нем написано - ST-LINK / DISCOVERY, так и просится перемычки снять и отпилить.


Спасибо за ценную информацию. Буду покупать.

Автор: Transcend Mar 14 2011, 12:50

Цитата(mov @ Mar 14 2011, 15:37) *
Спасибо за ценную информацию. Буду покупать.

Ценного то немного. У корпусов STM8L152C6T6, такие как на плате стоят - ох и мал же зазор между выводами.
Там есть корпуса без выводов - UFQFPN32(48). Те значительно удобнее паять, кстати. Надо бы посмотреть продает их кто.

Установил на днях ИАР, смотрел, смотрел на него и снес в результате. Дизайн у него "желтое с черным" не понравился или просто непривычно все.
Поставил STDV и Raisonance. Нажал кнопку Read в STDV - память прочитало из МК.
Пока это все достижения на сегодня. laughing.gif

Автор: mov Mar 14 2011, 13:11

Цитата(Transcend @ Mar 14 2011, 15:50) *
Ценного то немного. У корпусов STM8L152C6T6, такие как на плате стоят - ох и мал же зазор между выводами.
Там есть корпуса без выводов - UFQFPN28. Те значительно удобнее паять, кстати. Надо бы посмотреть продает их кто.

Установил на днях ИАР, смотрел, смотрел на него и снес в результате. Дизайн у него "желтое с черным" не понравился или просто непривычно все.
Поставил STDV и Raisonance. Нажал кнопку Read в STDV - память прочитало из МК.
Пока это все достижения на сегодня. laughing.gif


В моём случае любой совет пригодится. За подсказку по софту ещё раз спасибо , это был бы для меня следующий вопрос.

Автор: topkin Mar 14 2011, 14:14

Для новичков можно посмотреть сюда:
http://electronix.ru/redirect.php?http://www.compeljournal.ru/enews/2010/6/4
http://electronix.ru/redirect.php?http://kazus.ru/forums/showthread.php?t=24911

Автор: Transcend Mar 14 2011, 14:44

Про АЦП пишут:
"12-bit analog-to-digital converter (ADC1) with 25 channels (including 1 fast channel),
temperature sensor and internal reference voltage
Conversion time down to 1 μs with fSYSCLK= 16 MHz"

Данные как ложатся в память - 12 бит это ведь 1.5 байта.
Пишет ли оно как бы по два байта, а 4 старших бита -"0"?

Max frequency for a correct
DAC_OUT (@95%) change when
small variation of the input code
(from code i to i+1LSB). 1 Msps

Можно вводить в ADC записывать в память, а затем выводить на DAC с тактовой частотой 1 МГц, если правильно понял?

Автор: Transcend Mar 15 2011, 09:48

В даташите на STM8L про интерфейс SPI пишут:

"Maximum speed: 8 Mbit/s (fSYSCLK/2) both for master and slave"

А в приложенном тут документе, на стр4 - "Thus we can safely run the SPI interface at 6 MHz."

Должен рабоать этот дисплей с STM8L, как бы.

Может кто уже приделывал этот дисплей по SPI - как качество картинки?


 Nokia_6100_LCD_Display_Driver.pdf ( 1001.09 килобайт ) : 89
 

Автор: Григорий333 Apr 22 2011, 01:02

Для тех, кто использует STM8S103F3P (SSOP20): поделитесь, пожалуйста, гарантированно рабочей схемой с минимальной обвязкой.
ommo1981@mail.ru

Автор: SeregaB Apr 22 2011, 07:55

Цитата(Григорий333 @ Apr 22 2011, 05:02) *
Для тех, кто использует STM8S103F3P (SSOP20): поделитесь, пожалуйста, гарантированно рабочей схемой с минимальной обвязкой.
ommo1981@mail.ru


XP1 разъем для подключения программатора от Дисковери.


Автор: zhelezyaka Apr 22 2011, 19:29

Что если VCAP поставить неполярный?
кто нибудь побывал?

Автор: ukpyr Apr 23 2011, 03:18

Цитата
Что если VCAP поставить неполярный?
угу, 1..2мкФ керамика полет нормальный

Автор: Григорий333 Apr 23 2011, 21:53

Цитата(SeregaB @ Apr 22 2011, 10:55) *
XP1 разъем для подключения программатора от Дисковери.


SeregaB, а какм образом получил такую схему, из RM0016?

Автор: Григорий333 Apr 25 2011, 00:38

Помогите, пожалуйста.
Запаял STM8S103F. При подключении питания через 5-7 секунд чип нагревается так, что пальцем держать очень горячо.

Посмотрите, пожалуйста, на предмет наличия ошибок в схеме.


 STM8S103_Base.rar ( 78.54 килобайт ) : 153


Автор: SeregaB Apr 25 2011, 06:10

Цитата(Григорий333 @ Apr 24 2011, 01:53) *
SeregaB, а какм образом получил такую схему, из RM0016?

Я вопроса не понял. sm.gif
Кусок выдран из рабочей схемы, путем обрезания необязательных для функционирования компонентов (кнопочки, лампочки, релюшки, питатель). Там хорошо видны кусочки без клеточек. sm.gif


Цитата(zhelezyaka @ Apr 22 2011, 23:29) *
Что если VCAP поставить неполярный?
кто нибудь побывал?

Будет даже лучше. В первой плате с STM8S208 стоял 0,1 мкф, работает вполне пристойно. Только номинал надо увеличить, как в мануале.

Цитата(Григорий333 @ Apr 25 2011, 04:38) *
Помогите, пожалуйста.
Запаял STM8S103F. При подключении питания через 5-7 секунд чип нагревается так, что пальцем держать очень горячо.

Посмотрите, пожалуйста, на предмет наличия ошибок в схеме.

Ищи либо КЗ, либо где-то на вывод подается входной сигнал ДО подачи питания. Либо полярность питания перепутана.

Автор: Stanislav_S Apr 25 2011, 12:10

По своему опыту скажу, что СТМ8 довольно "нежная", очень не любит превышение (кратковременного) питающего напряжения и переполюсовки питания, так уже два кристалла спалил, в общем в этом плане АВР гораздо "круче" sm.gif И кстати, зачем на VCAP ставить такую огромную емкость? 1 мкф с головой достаточно керамического.

Автор: ukpyr Apr 25 2011, 13:30

Цитата
По своему опыту скажу, что СТМ8 довольно "нежная", очень не любит превышение (кратковременного) питающего напряжения
у меня тоже один полудохлый, точной причины не знаю, подозреваю что замкнул VDD на VCAP на несколько минут. Греется, но прошивается и работает нормально. При такой мизерной стоимости спалить не жалко.
Григорий333отсоедините все нагрузки, прозвоните питание

Автор: SeregaB Apr 26 2011, 07:09

Цитата(Stanislav_S @ Apr 25 2011, 16:10) *
По своему опыту скажу, что СТМ8 довольно "нежная", очень не любит превышение (кратковременного) питающего напряжения


А у меня наоборот. STM8S208 выдержал случайную подачу 12 Вольт на питание (короткое в стабилизаторе).

Цитата(Stanislav_S @ Apr 25 2011, 16:10) *
в общем в этом плане АВР гораздо "круче" sm.gif


Щаз еще и ПИКоманы подтянутся со своими байками про немерянную крутизну Некрочипов.

Цитата(Stanislav_S @ Apr 25 2011, 16:10) *
И кстати, зачем на VCAP ставить такую огромную емкость? 1 мкф с головой достаточно керамического.

Запас ж... не тянет. sm.gif
The minimum recommended value is 470 nF. Т.е., если быть совсем точным, то и 0,47мкФ достаточно.
У меня "в тумбочке" НЕТ керамики больше 0,1мкФ. Поэтому поставлен электролит 22 мкФ, их очень много.

Автор: Stanislav_S Apr 26 2011, 14:48

Цитата(SeregaB @ Apr 26 2011, 11:09) *
The minimum recommended value is 470 nF. Т.е., если быть совсем точным, то и 0,47мкФ достаточно.
У меня "в тумбочке" НЕТ керамики больше 0,1мкФ. Поэтому поставлен электролит 22 мкФ, их очень много.

Наверно вам повезло или мне нет sm.gif Ну да бог с ним, конденсатор там должен иметь вполне конкретное ESR, об это в ДШ сказано, с керамикой проблем нет, а вот электролит под вопросом.

Автор: Morfko Apr 27 2011, 08:29

Кто-нибудь подскажет, можно ли в STM8 запустить программу из Flash не с дефолтного адреса 0x008000 , а с другого, допустим с 0х008080 ?

Автор: user_ok Oct 20 2011, 14:17

Добрый день. У меня такой вопрос: можно ли будет повторно использовать полученный файл лицензии (для бесплатного компилятора Cosmic) после переустановки операционной системы?

Автор: smk Dec 26 2011, 05:46

Предлагаю все темы про STM8 выделить в отдельный раздел. Популярность контроллера растем и вопросов-ответов будет только больше. Так будет проще ориентироваться. Спасибо.

Автор: Stanislav_S Dec 26 2011, 10:12

Цитата(smk @ Dec 26 2011, 09:46) *
Предлагаю все темы про STM8 выделить в отдельный раздел. Популярность контроллера растем и вопросов-ответов будет только больше. Так будет проще ориентироваться. Спасибо.

+1 Тем более что сейчас для серийных девайсов, где стоят 8-битки, альтернатив по цене практически нет, поэтому камень очень переспективен да и люди на него потихоньку начинают переходить.

Автор: ChipKiller Dec 26 2011, 13:59

Цитата("Stanislav_S")
Тем более что сейчас для серийных девайсов, где стоят 8-битки, альтернатив по цене практически нет, поэтому камень очень переспективен да и люди на него потихоньку начинают переходить.
.. а в 2012, ST грозится выкинуть на рынок серию STM8S0xx по цене примерно 10р, что не может не радовать sm.gif

Автор: dosikus Dec 28 2011, 14:40

Цитата(user_ok @ Oct 20 2011, 18:17) *
можно ли будет повторно использовать полученный файл лицензии (для бесплатного компилятора Cosmic) после переустановки операционной системы?


С этим проблем нет . В будни высылают не успеешь запросить . У меня 3 компа зарегистрированы и 2 ноута . Регистрировал все с одного мыла.

Автор: smk Dec 29 2011, 11:32

STVP (программер) пишет такое:

Код
> Reading  OPTION BYTE area...
Error : Error on Option Bytes (complementary bytes). Reprogram Option Bytes of device
Error : < OPTION BYTE reading failed.

Что єто значит и как єто побороть?
Перепрограммирование ничего не дает.
Код
> Programming  OPTION BYTE area...
< OPTION BYTE programming completed.
> Verifying OPTION BYTE area...
Error : Error on Option Bytes (complementary bytes). Reprogram Option Bytes of device
Error : < OPTION BYTE verifying failed.


Код
000000000000000055

Читаются вот так, хотя раньше были все нули. Установить опять в нули не выходит. При этом если строчка в программере такая, как написал, то контроллер шьется и работает. Как сделать опять нули?

Странно. Переправил вручную и залил программером. Получилось. Почему раньше не выходило? Поделитесь опытом, кто знает? Платка заводская (STM8S-Discovery), чистенькая. В лупу обсмотренная, дефектов не найдено. Что это за косяк такой? Спасибо.

Автор: smk Dec 31 2011, 07:46

А где есть таблица векторов прерываний? Обыскался уже.

Автор: _Bill Jan 7 2012, 14:32

Цитата(smk @ Dec 31 2011, 11:46) *
А где есть таблица векторов прерываний? Обыскался уже.

В DS вестимо. Или нет?

Автор: smk Jan 8 2012, 08:54

Цитата(_Bill @ Jan 7 2012, 16:32) *
В DS вестимо. Или нет?

Есть там. Не сразу заметил.

Автор: smk Jan 20 2012, 07:27

Кто знает, подскажите пожалуйста. Можно ли в STVD & Raisonance сделать так чтоб после компиляции в окошке с результатами компиляции указывался размер полученного кода, как в IAR ? Спасибо.

Автор: ZiB Feb 2 2012, 12:33

Информацию о размере кода вывожу через самописный костыль
http://electronix.ru/redirect.php?http://ziblog.ru/2011/10/03/formatirovanie-informatsii-o-razmerah-sektsiy-cosmic-chat-2/

Автор: sealbi Mar 6 2012, 02:54

Подскажите как в COSMIC использовать прерывания. например таймер 4. Запутался в хедерах и тд. Можно ли написать программу с прерываниями в main.c.(пишу для AVR на CodeVision поэтому такой вопрос sm.gif

Автор: ChipKiller Mar 6 2012, 06:15

Цитата("sealbi")
Подскажите как в COSMIC использовать прерывания. например таймер 4. Запутался в хедерах и тд. Можно ли написать программу с прерываниями в main.c
...можно
Код
@interrupt void TIM4_IRQHandler(void){    
        ..........
}


Автор: sealbi Mar 6 2012, 06:48

Цитата(ChipKiller @ Mar 6 2012, 13:15) *
...можно
Код
@interrupt void TIM4_IRQHandler(void){    
        ..........
}

А откуда возьмется номер вектора. Его записать в stm8_interrupt_vector.c? И мне непонятно почему нет инклуда stm8_interrupt_vector.c в main.c.

Автор: ChipKiller Mar 6 2012, 07:31

Цитата("sealbi")
А откуда возьмется номер вектора. Его записать в stm8_interrupt_vector.c?
... пишем в stm8_interrupt_vector.c
Код
extern void TIM4_IRQHandler();
и добавляем в таблицу
Код
{0x82, (interrupt_handler_t)TIM4_IRQHandler}, /* irq23 */



Автор: smk Mar 6 2012, 08:34

А на сколько Cosmic эффективнее Reisonance? Насколько код меньше?

Автор: smk Mar 6 2012, 08:34

А на сколько Cosmic эффективнее Reisonance? Насколько код меньше?

Автор: sealbi Mar 7 2012, 00:36

Цитата(ChipKiller @ Mar 6 2012, 14:31) *
... пишем в stm8_interrupt_vector.c
Код
extern void TIM4_IRQHandler();
и добавляем в таблицу
Код
{0x82, (interrupt_handler_t)TIM4_IRQHandler}, /* irq23 */

Спасибо, все заработало!

Автор: Lagman Jul 6 2012, 08:52

Что то с поиском у меня не получилось, но может кто видел или знает.

Как заставить IAR 1.30 SP2 заливать на STM8S-Discovery прошивку выбором меню Project->Download->Download file... (или другими менюшками из Download)? И вообще он так умеет с ST-Link'ами?

STM8S-Discovery использую через встроенный st-link, сейчас прошиваю через пункт меню "Download and Debug", но уже надоело ждать пока IAR войдет в отладку, а потом из отладки выходить.

Автор: Velund Dec 12 2012, 02:42

Вопрос бредовый... Есть ST-Link on-board от STM32 кита... Он (случайно) STM8 не держит? SWD у армов и SWIM у STM8 это совсем разные птицы?

Автор: Harbinger Dec 12 2012, 03:33

Просто так, скорее всего, нет.
http://electronix.ru/redirect.php?http://forum.easyelectronics.ru/viewtopic.php?f=17&t=6620&start=25. Пока что недосуг проверить такую гипотезу: по "board ident" определяется, как ему работать: JTAG, SWD, SWIM или всё вместе.
Схемы отладчиков во всех дискавери почти идентичны, в Вашем ките, подозреваю, тоже.

Автор: Alex_Pol May 9 2013, 15:58

Подскажите, есть ли на STM8 какой нибудь дизассемблер? Думал, можно в STVD, по аналогии с AVR студией, но что то не получается.

Автор: nx6310 Jun 25 2013, 08:32

Здравствуйте, уважаемые форумчане! Я использую stm8af6288 +STVD+Cosmic. Я включил прерывания по переполнению таймера TIM2. В файле stm8a_lib.с я попадаю почему то в прерывание EXTI_PORTB_IRQHandler вместо TIM2_CAP_COM_IRQHandler. Поменяв местами эти прерывания в файле stm8_interrupt_vector.c все вроде заработало, прерывания по таймеру переходили на функцию TIM2_CAP_COM_IRQHandler. Затем я включил внешнее прерывание по порту В. Теперь при возникновении обоих прерываний я попадаю в функцию TIM2_CAP_COM_IRQHandler. Такое чувство что по всем прерываниям я перехожу в один и тот же адрес обработки прерывания.
Может кто скалкивался с этим? С данным процом работаю недавно, много пока не знаю.
файл D:\projects\stm8_interrupt_vector.c

Код
#include "stm8a_it.h"

extern void @near _stext(); /* startup routine */

void @near (* const _vectab[])() =
{
  
  (void @near (*)())0x8200,
  _stext, /* RESET */
  
  (void @near (*)())0x8200,
  TRAP_IRQHandler, /* TRAP - Software interrupt */
  
  (void @near (*)())0x8200,
  TLI_IRQHandler, /* irq0 - External Top Level interrupt (TLI) */
  
  (void @near (*)())0x8200,
  AWU_IRQHandler, /* irq1 - Auto Wake Up from Halt interrupt */

  (void @near (*)())0x8200,
  CLK_IRQHandler, /* irq2 - Clock Controller interrupt */

  (void @near (*)())0x8200,
  EXTI_PORTA_IRQHandler, /* irq3 - External interrupt 0 (GPIOA) */

  (void @near (*)())0x8200,
  EXTI_PORTB_IRQHandler, /* irq4 - External interrupt 1 (GPIOB) */

  (void @near (*)())0x8200,
  EXTI_PORTC_IRQHandler, /* irq5 - External interrupt 2 (GPIOC) */

  (void @near (*)())0x8200,
  EXTI_PORTD_IRQHandler, /* irq6 - External interrupt 3 (GPIOD) */

  (void @near (*)())0x8200,
  EXTI_PORTE_IRQHandler, /* irq7 - External interrupt 4 (GPIOE) */

  (void @near (*)())0x8200,
  CAN_RX_IRQHandler, /* irq8 - CAN Rx interrupt */

  (void @near (*)())0x8200,
  CAN_TX_IRQHandler, /* irq9 - CAN Tx/ER/SC interrupt */

  (void @near (*)())0x8200,
  SPI_IRQHandler, /* irq10 - SPI End of transfer interrupt */

  (void @near (*)())0x8200,
  TIM1_UPD_OVF_TRG_BRK_IRQHandler, /* irq11 - TIM1 Update/Overflow/Trigger/Break interrupt */

  (void @near (*)())0x8200,
  TIM1_CAP_COM_IRQHandler, /* irq12 - TIM1 Capture/Compare interrupt */

  (void @near (*)())0x8200,
TIM2_UPD_OVF_BRK_IRQHandler, /* irq13 - TIM2 Update/Overflow/Break interrupt  */

  (void @near (*)())0x8200,
  TIM2_CAP_COM_IRQHandler, /* irq14 - TIM2 Capture/Compare interrupt */

  (void @near (*)())0x8200,
  TIM3_UPD_OVF_BRK_IRQHandler, /* irq15 - TIM3 Update/Overflow/Break interrupt */

  (void @near (*)())0x8200,
  TIM3_CAP_COM_IRQHandler, /* irq16 - TIM3 Capture/Compare interrupt */

  (void @near (*)())0x8200,
  LINUART_TX_IRQHandler, /* irq17 - LINUART Tx complete interrupt */

  (void @near (*)())0x8200,
  LINUART_RX_IRQHandler, /* irq18 - LINUART Rx interrupt */

  (void @near (*)())0x8200,
  I2C_IRQHandler, /* irq19 - I2C interrupt */

  (void @near (*)())0x8200,
  USART_TX_IRQHandler, /* irq20 - USART/LINUART1 Tx interrupt */

  (void @near (*)())0x8200,
  USART_RX_IRQHandler, /* irq21 - USART/LINUART1 Rx interrupt */

  (void @near (*)())0x8200,
  ADC_IRQHandler, /* irq22 - ADC1/ADC end of conversion interrupt */

  (void @near (*)())0x8200,
  TIM4_UPD_OVF_IRQHandler, /* irq23 - TIM4 Update/Overflow interrupt */

  (void @near (*)())0x8200,
  EEPROM_EEC_IRQHandler, /* irq24 - FLASH interrupt */


};


Автор: Jatagan Nov 16 2016, 22:04

Только начал юзать STM8. Перепиливаю с AVR под STM8.

Вся проблема в AVR. Вылезла в 2014 году... До этого, а конкретно с 2009 года проблем не было, совсем...
Одно и тоже изделие, штампуется серийно с 2010, а с 2009 год отработал прототип. Выполняет функцию УСО, и по RS485 связана с ПК. Везде гальванразвязка, как с картами расширения, так и в конвертере. Несколько источников питания (сеть питается отдельно, поле отдельно, мало того, 220В подается на промежуточные реле, сухой контакт от отдельного БП через оптроны на МК через резисторы), экранированные кабели, короче, все по взрослому. И все было хорошо и в AVR-ах я души не чаял, считал их идеальными контроллерами, и на то были основания, до 2014 года...

Суть проблемы: Периодически перестает работать UART, причем только на передачу, прием проходит, обрабатывается, программа не сбоит, в карты расширение данные забрасывает, но, TxD молчит, как рыба об лед. Помогает только полная перезагрузка. Видимо новым AVR-ам не нравится как гупают пускатели... Причем, контроллеры, которые были куплены до 2014 работают стабильно, годами, в этом же устройстве и в тех же условиях.

Просматривая ветку, заметил холивар на предмет AVR против STM8. Улыбнуло, особенно когда обсуждали производительность... А чего она стоит, эта производительность, если железяка не надежна, и боится луюбого чиха... Впрочем, для домашнего применения самое то.

Да, кстати, сторожевой таймер на AVR-х так себе, зависает наглухо, пришлось сделать на 555 отдельный супервазер.

Схему и печатку пришлось шибко переработать... Усложнив ее... Здорово усложнив...

По этой причине перехожу на STM8S. Производитель обещает работоспособность в условиях максимально приближенным к концу света))) Проверим, в ПСУ есть такие условия!

Посмотрим, на сколько STM8-ка надежна.

Автор: Эдди Nov 17 2016, 06:38

Цитата(Jatagan @ Nov 17 2016, 01:04) *
Посмотрим, насколько STM8-ка надежна.

Вполне надежна. Но лучше уж сразу переползать на 32-битные STM32. Скажем, дешевый STM32F030 — отличная замена тем же STM8S003 (цена примерно одинакова), но с кучей плюшек впридачу. Еще советую обратить внимание на STM32F042: у него тактирование CAN и USB разнесено, поэтому это чуть ли не единственный дешевый 32-битный МК, который можно по USB подключить к компьютеру и работать с CAN-шиной.
А учитывая то, что при уникальном или мелкосерийном производстве вопрос цены компонентов обычно вообще не стоит, то можно сразу на STM32F4xx, а то и еще покруче что-нибудь.

STM8 же хороши лишь в условиях крупносерийного производства чего-нибудь элементарного (см. ибей со всеми этими термометрами, вольт-амперметрами и прочими штукенциями на STM8S003), когда цена комплектующих уже имеет ценообразующий фактор для всего изделия.

Автор: vladec Nov 17 2016, 07:54

Цитата
Но лучше уж сразу переползать на 32-битные STM32. Скажем, дешевый STM32F030 — отличная замена тем же STM8S003 (цена примерно одинакова)

Тут не все так просто. Помимо цены вопрос плотности кода на классе решаемых задач, то есть затрат программной памяти. На задачах логического программирования восьмибитник будет иметь плотность кода в разы выше тридцатидвухбитника. Если в задаче измериловка с матобработкой, тогда другое дело. А то нашим программистам довелось переводить программу для промконтроллера с Силиконовского восьмибиника (MCS-51) на STM32 (CortecsM4), так объем требуемого флеша увеличился чуть не на порядок

Автор: rudy_b Nov 18 2016, 05:16

Пришлось решить несколько задач на Stm8L. В принципе нормальный проц, но в нем очень много баг, в том числе и недокументированных, борьба с которыми занимает массу времени и отнюдь не всегда может закончится победой - очень внимательно читайте errata прежде чем использовать, особенно I2C - его выходы НЕ имеют встроенных резисторов подтяжки. Ну и с распределением ресурсов и ног серьезный напряг. В этом смысле проц серьезно недоделан, и, похоже, брошен "как есть".

Но для простых работ с битами и АЦП вполне подходит.

Автор: Эдди Nov 18 2016, 06:13

Цитата(vladec @ Nov 17 2016, 10:54) *
нашим программистам довелось переводить программу для промконтроллера с Силиконовского восьмибиника (MCS-51) на STM32 (CortecsM4), так объем требуемого флеша увеличился чуть не на порядок

Наверняка они вместо человеческого программирования использовали какой-нибудь калокуб. А то еще и на С++ писали. Понятное дело, кода будет толпа.
Если еще и вычисления с плавающей точкой впихнуть вместо фиксированной…

Примерно одинаковые вещи на STM8S105 и STM32F103 у меня почти одинаковый объем флеша занимают (правда, на STM32 я для коммуникаций USB использую, а на STM8 по понятным причинам UART через переходник на PL2303).

Цитата(rudy_b @ Nov 18 2016, 08:16) *
в нем очень много баг, в том числе и недокументированных

Странно. Камень довольно-таки старый, и errata должна быть полной.
Но да: чем старей камень, тем больше в нем всяких недопиленностей. Чего только стоит толщина ерраты на STM32F103... А уж долбанутость с невозможностью установить внутренние подтяжки при работе пина на выход! Ну и I2C: что у STM32F103, что у ранних STM8 интерфейс настолько богат приколами, что errata по этому поводу вполне приличный объем занимает. Благо, при работе в "обычном" режиме сложностей не возникает. Но хотелось бы, конечно, чтобы I2C был так же прозрачен, как, скажем, SPI — чтобы в процессе приема-передачи не надо было вручную регистры дергать!

То-то китайцы на STM8, имеющем аппаратный I2C, занимаются ногодрыгом: то ли расшибли себе лоб об errata, то ли тупо скопипастили первое попавшееся решение (второе, кстати, даже более вероятно — видел я код этих самых китайцев…).

Автор: _Pasha Nov 20 2016, 16:37

Цитата(Эдди @ Nov 18 2016, 09:13) *
То-то китайцы на STM8, имеющем аппаратный I2C, занимаются ногодрыгом

Так если он меньше занимает места laughing.gif то почему бы и нет

Автор: Эдди Nov 20 2016, 21:33

Не может I2C ногодрыгом занимать меньше места. Я уж не говорю о диких паузах...

Автор: Andreas1 Nov 21 2016, 08:18

Цитата(Эдди @ Nov 21 2016, 00:33) *
Не может I2C ногодрыгом занимать меньше места. Я уж не говорю о диких паузах...

C учетом обширной ерраты вполне может. Особенно, если есть обнаружение подвиса шины и ее сброс хотя бы 9 холостыми клоками.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)