|
STM8, кто нибудь использует? |
|
|
|
Apr 13 2010, 18:52
|

Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480

|
Цитата(zksystem @ Apr 13 2010, 15:21)  Я пользую STM8, только CAN в них не юзал. Обидно что халявных компиляторов без ограничения по коду у них нет  а так в принципе интересные камушки. Можно ли подробнее чем пользуютесь и как отлаживаетесь. Для быстрого старта есть не дорого http://www.kosmodrom.com.ua/el.php?name=STM8-DНе понятно ST-Link который у него на борту какие имеет ограничения? Немного  сейчас разбираюсь с STM32 ну очень приятные ощущения от ST в целом.
|
|
|
|
|
Apr 13 2010, 20:02
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Pat @ Apr 13 2010, 23:07)  Можно ли подробнее чем пользуютесь и как отлаживаетесь. +1 Цитата(Pat @ Apr 13 2010, 23:07)  Немного  сейчас разбираюсь с STM32 ну очень приятные ощущения от ST в целом. Ну после появления LPC17xx LPC13xx STM32 IMHO не актуальны.
|
|
|
|
|
Apr 14 2010, 10:59
|

Частый гость
 
Группа: Свой
Сообщений: 176
Регистрация: 2-04-08
Из: Днепропетровск
Пользователь №: 36 406

|
Актуальность определяется целесообразностью применения. Вот понять не могу: как LPC13xx и, по-моему, LPC1100 можно было не реализовать ИОН для АЦП? Или хоть возможность его внешнего подключения. Сделать АЦП 12 бит. Где RTC? В младших STM32 все это можно найти. А с NXP один выход - приходиться пробовать LCP17xx. А там размер корпуса 12X12
--------------------
Ребята, как же это вы без гравицапы пепелац выкатываете из гаража? Это непорядок. ©
|
|
|
|
|
Apr 14 2010, 11:37
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
Цитата как дешовая замена AT90CAN64 или мелких STM32 или STM8S103 как замена Atmega8 жаль gcc не портировали...
|
|
|
|
|
Apr 14 2010, 13:02
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(ukpyr @ Apr 14 2010, 15:52)  жаль gcc не портировали... Почитал я описание ядра. 2 индексных регистра и аккумулятор (если счетчик команд, стек и флаги не считать) Пространства для оптимизации нет  Методы адресации различаются количеством байт адреса (ну и указатель на указатель возможен) Зато компилер, должно быть просто портировать.
|
|
|
|
|
Apr 14 2010, 13:23
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(KRS @ Apr 14 2010, 00:17)  Ну после появления LPC17xx LPC13xx STM32 IMHO не актуальны. Это смотря где. У STM32 более обширная периферия. Например, есть SDIO контроллер и CPU интерфейс. Плюс с непривычки у LPC17xx покоробило при сбросе подключение к пинам GPIO pullup резисторов, вместо более логичных pulldown у STM.
|
|
|
|
|
Apr 15 2010, 10:45
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(Pat @ Apr 13 2010, 23:07)  Можно ли подробнее чем пользуютесь и как отлаживаетесь. Не понятно ST-Link который у него на борту какие имеет ограничения? Немного  сейчас разбираюсь с STM32 ну очень приятные ощущения от ST в целом. использую в качестве программера/дебаггера Raisonance R-Link. IDE - ST Visual Developer C компилятор - Raisonance C compiler (с ограничением по размеру кода)  Есть еще компилятор Cosmic - но он мне чего-то не понравился. Камушки классные, а вот с компилятором такая засада...
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Apr 17 2010, 19:33
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Xenia @ Apr 16 2010, 17:08)  Не расстраивайтесь!  Только что сегодня, внемля вашим рыданиям, IAR создал для него компилятор! Это хорошая новость!!! А кто нибудь его уже ставил? Какое железо для отладки он умеет использовать?
|
|
|
|
|
Apr 17 2010, 19:58
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Xenia @ Apr 17 2010, 23:54)  А вот вы себе поставьте, а нам расскажите  Да у меня пока нет ни одной платы с такими чипами. Для чипа такого уровня и отладчик то не сильно нужен. Но вот шить из под IAR было бы удобно. Да и чип поисследовать тоже. Насколько я понял самый оптимальный по цене - ST-LINK. Просто покупать ST-ICE за 2 штуки баксов это как то....
|
|
|
|
|
Apr 17 2010, 20:04
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(KRS @ Apr 18 2010, 00:13)  Насколько я понял самый оптимальный по цене - ST-LINK. Просто покупать ST-ICE за 2 штуки баксов это как то.... А вы купите "STM8s Discovery"( http://www.terraelectronica.ru/pdf/ST/STM8S-DISCOVERY.pdf ) В Терраэлектронике стоит всего 350 рублей ( http://www.terraelectronica.ru/catalog.php...e=2&PageS=1 ) Там на плате за эти деньги уже и МК стоит (STM8S105C6T6, 32 KB Flash, 2 KB RAM, 1 KB EEPROM), и питание с кварцем, и даже USB-интерфейс (!) для подключения к компьютеру. Вроде бы ST-LINK даже встроен туда. Подключаешь USB-кабелем к компу и больше ничего не надо.
|
|
|
|
|
Apr 17 2010, 20:13
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(KRS @ Apr 17 2010, 22:48)  Какое железо для отладки он умеет использовать? Ровно два ST-Link и STice До кучи у него IDE приляпали некой шестой версии. Вообще-то чип странноватый обычная для ST (по сравнению с AVR8 разнообразнее разве только за счет CAN) периферия, не сомневаюсь, что, как обычно недоработанная и с библиотекаими вместо документации. Обычная для 8bit частота ядра. Обычно минималистичные размеры памяти. Простенькое ядро... Все обычно. Но зачем-то и многоногие. Ценой брать собираются? Непохоже совсем - на digikey интересные чипы с CAN на борту имеют неразумные цены выше 5 баксов.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 17 2010, 20:30
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Xenia @ Apr 18 2010, 00:19)  А вы купите "STM8s Discovery" Не мне такой не нужен. Мне этот чип без CAN вообще не нужен  Лично мне эта архитектура совсем не понравилась! (IMHO эта архитектура - производителям компиляторов должна понравится  ) Но вот мелкого и дешового чипа с CAN больше нет! ( а тут еще и EEPROM есть). Хотя вот еще ATmega16M1 появилась! Цитата(zltigo @ Apr 18 2010, 00:28)  До кучи у него IDE приляпали некой шестой версии. Ну вот, а ходили слухи что на Eclipse собираются переходить.
Сообщение отредактировал KRS - Apr 17 2010, 20:29
|
|
|
|
|
Apr 17 2010, 20:48
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Xenia @ Apr 18 2010, 00:47)  Не поделитесь ли вашими впечатлениями об архитектуре STM8? Она проста до безобразия - счетчик команд, указатель стека, флаги аккумулятор и 2 индексных регистра. Основой текст в описании (которе кстати читать тяжеловато) идет вокруг количетсва бит формиующего адрес. Из-за того что этих бит может быть 8, 16,.... режимов адресации очень много... Единственный интересный момент (раньше о таком не слышал) - это двойная адресация памяти, т.е. например после команды лежит ардрес указателя на данные (причем эти адреса могут быть разной длины, что порождает множество типов). А дальше все тривиально - операции с одним операндом только в аккумуляторе ( сдвиги например), с двумя - аккумулятор + память, результат в аккумулятор (сложение например). Ну есть пара инструкций для 16 битных индексных регистров. И работа с битами в памяти. В общем на асме писать просто скучно, обязательно нужен компилер!!! Еще раз повторюсь - описание на архитектуру, как то очень тяжело читается! (по сравнению с ARM, AVR, x51). Не в смысле самой архитектуры а стиле описания.
|
|
|
|
|
Apr 17 2010, 21:18
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(zltigo @ Apr 18 2010, 01:20)  по Вашему описанию, это похоже на усеченную интеловскую 86/88 Это надо сильно обрезать  - оставить SI, DI и AL Чем то на 51 похоже, чем то на PIC (хотя с ними я не работал) если не считать флаги, sp, PC получается один 8 битный регистр через который идет вся математика. И 2 индесных регистра, которые нужны для доступа к массивам. Одно удобство - страниц нет! память линейно адресуется!
|
|
|
|
|
Apr 17 2010, 22:40
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Xenia @ Apr 18 2010, 00:39)  Поглядела я на Instruction set этого STM8 - дерьмо!  Помимо аккумулятора A, там всего лишь два регистра X и Y. И это всё! Ужас! И это после 32-х регистров AVR кто-то еще станет переходить на этот дохлый STM8? Ни в жисть не поверю! Фу как мелко  . И как же, например, STM8 в Вашем зацикленном на AVR представлении вообще без регистров работает? Невероятно? А теперь представьте, что вся память у контроллера на правах регистров. У AVR, говорите, их только 32? Ужас!
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 18 2010, 08:30
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(zltigo @ Apr 18 2010, 11:43)  Разумеется это не так. Работа с одним операндом и двумя, если второй константный, осуществляется без участия аккумулятора. У арифметичесикх инструкций сложение, вычитание и логических AND,OR, dst A (У 16 битных индексный регистр) Есть правда инкремент, декремент, инверсия, сдвиг памяти и NEG на память работает.
|
|
|
|
|
Apr 18 2010, 08:32
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(KRS @ Apr 18 2010, 11:45)  Есть правда инкремент, декремент, инверсия, сдвиг памяти и NEG на память работает. .. и манипуляции с битами, как установка с переносами, так и анализ, swap. В общем достаточно неплохо. Архитектура достаточно сложная получилась ( без закосов под RISC ) и не думаю, что просто так вышло или не разработчики не смогли понять за прошедшие годы, как, например, тот-же изначально просто задуманный, а ныне покрытый наслоениями улучшений, AVR8 работает  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 18 2010, 09:11
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(scifi @ Apr 18 2010, 11:49)  Странный спор... Да нет никакого спора, это просто Xenia, как обычно, в силе "нет бога кроме Аллаха Atmel и Мухаммад AVR пророк его" выступает. А так все нормально. Цитата Я-то по наивности думал, что в жизни имеет значение не число регистров и остальные тонкости, а реальная производительность. Вот бы кто-нибудь померил DMIPS/MHz или что-нибудь такое, было бы уже интереснее. Даже думаю, что это не особо важно - контроллер явно не бить рекорды производительности сделан. В два раза попугаистее других не будет да и в два раза тормознее тоже. P.S. Только сейчас глянул, ST что обещают что-то типа 0.83 MIPS/MHz. Atmel на голубом глазу сообщает для AVR8, что up то 1MIPS/MHz  . Вот и все. Не припомю, но вроде ни разу тот-же AVR на полной тактовой не использовал - за ненадобностью. Для попугаев сейчас мелкие Corteх под и за сотню мегагерц.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 18 2010, 13:24
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(zltigo @ Apr 18 2010, 13:26)  Да нет никакого спора, это просто Xenia, как обычно, в силе "нет бога кроме Аллаха Atmel и Мухаммад AVR пророк его" выступает. Дело обстоит прямо противоположным образом - именно вам Atmel предсталяется чем-то вроде Сатаны. Пример тому - архитектура AVR32, которая столь разительно отличается от AVR8, что здесь больше различий, чем сходства. Однако ваша риторика столь же агрессивна и в отношении AVR32. Причем вся ваша критика направлена, как всегда, не на конкретные огрехи архитектуры, а на обливание помоями Atmel и злорадство по поводу ее малейших производственных трудностей.
|
|
|
|
|
Apr 18 2010, 14:23
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Xenia @ Apr 18 2010, 16:39)  Дело обстоит прямо противоположным образом - именно вам Atmel предсталяется чем-то вроде Сатаны. Oй  . Опять  понесло. Xenia, ну поймите наконец, что я лично совершенно спокойно использую и буду в обозримом будущем использовать тот-же "сатанинский" AVR8. Вот до конца месяца сделаю очередную небольшую коробочку на ATMEGA8. Без всякой предвзятости, как и почти дюжину других ядер. Я их все люблю, со всеми их "конкретными огрехами архитектуры". А вот у Вас саму себя зажавшую в рамки AVR явные проблемы с мировосприятием. Ну переступите, наконец через свою болезненно-фанатичную преданность буквам. Полегчает! Глядишь, и перестанет Сатана в моем лице являться  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 18 2010, 16:04
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

|
Цитата(zltigo @ Apr 18 2010, 18:38)  А вот у Вас саму себя зажавшую в рамки AVR явные проблемы с мировосприятием. Ну переступите, наконец через свою болезненно-фанатичную преданность буквам. Полегчает! Специально для вас заявляю, что затеяла сравнение STM8 с AVR именно по той причине, что STM8 претендует как раз на ту нишу, которую в настоящее занимают AVR. Так что если STM8 и имеет перспективы внедрения, то во многом путем вытеснения из этой ниши AVR. В этом смысле сравнение архитектуры STM8 с теми архитектурами, с которыми ему придется конкурировать, вполне оправдано. И это, отнюдь, не мои фантазии, т.к. еще до меня в посте #6 уже поднимался вопрос о возможности замены ATmega8 на STM8S103. Вы же пытаетесь переводить разговор на личности, бичуя в участниках форума якобы выявленные вами недостатки. И это уже не в первый раз, и не только в мой адрес.
|
|
|
|
|
Apr 18 2010, 17:28
|

Местный
  
Группа: Свой
Сообщений: 421
Регистрация: 27-05-05
Из: Энергодар
Пользователь №: 5 480

|
Цитата(Xenia @ Apr 18 2010, 18:19)  уже поднимался вопрос о возможности замены ATmega8 на STM8S103. Вы же пытаетесь переводить разговор на личности, бичуя в участниках форума якобы выявленные вами недостатки. И это уже не в первый раз, и не только в мой адрес. Xenia не руйтесь  и спасибо за инфу по компилятору. Наверное заменять мегу8 на STM8 не стоит ибо у них цена почти одинаковая, а вот ATmega128 очень даже неплохо заменить на STM8S208 так как цена даже у розничного продавца отличается почти в 2 раза. Думаю что сравнивать попугаи AVR c STM8 не стоит, все будет примерно одинаково. Установил EWSTM8 и в симуляторе запустил пример STM8S208MB-Board Было интересно посмотреть вход в прерывание и не очень проникся там сплошные call. Причем сохранение регистров в стеке реализовано тоже через их вызыв. Это при любой степени оптимизации. Либо я чего то не понимаю либо ИАР пока не доработал компилятор.
|
|
|
|
|
Apr 18 2010, 17:49
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(Pat @ Apr 18 2010, 21:43)  Xenia не руйтесь  и спасибо за инфу по компилятору. Наверное заменять мегу8 на STM8 не стоит ибо у них цена почти одинаковая, а вы поинтересуйтесь доставабельностью той-же меги8.Я думаю-сильно удивитесь. Атмел в очередной раз кинул потребителей-старые чипы с производства сняты и на складах их уже нет,новые(А серия) только ожидаются...
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Apr 18 2010, 18:30
|

Гуру
     
Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237

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

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(Xenia @ Apr 18 2010, 22:45)  Я полагаю, что это обычный "пересменок", когда один тип МК снимается с производства, а ему на замену приходит приемник или аналог. Дней десять назад разговаривал как раз на эту тему с товарищем,работающем разработчиком. Он утверждает,что такие фортели характерны именно для атмеля.Другие производители обеспечивают плавную миграцию со старых кристаллов.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Apr 18 2010, 19:35
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Xenia @ Apr 18 2010, 21:45)  Я полагаю, что это обычный "пересменок".... Да, спасибо  , наверное Ваш ответ "успокоит" моего друга выполняющего заказ на Tiny2313, который вроде ничем прямо не заменяется, но который шерстит всех оптовиков по собирая все, что можно в любых количествах и любых упаковках. По поводу упаковки еще выслушивая контрактного производителя вынужденного ставить эти чипы почти руками. Кстати, по ST в наших краях явных проблем не наблюдается. А мне Атмеловские I2C EEPROM работающие на мегагерце в четверг за 6-7 месяцев поставить пообещали. Опять, типа поклеп на Atmel  . Цитата(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)  ... и не только в мой адрес. По отношению к Вам исключительно из самых добрых побуждений.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 27 2010, 19:48
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Xenia @ Apr 18 2010, 05:18)  Вся память не работает у STM8 на правах регистров. Или регистры тогда должны быть совсем бесправные  . Например, у AVR-регистров такие права, что их можно складывать (а также вычитать и проводить логические операции) одной единственной инструкцией за один такт! А над ячейками памяти такое вообще невозможно. К тому же STM8 может выполнять арифметические и логические операции только одном регистре - аккумуляторе. Вот и получится программа, где 70% кода будет гонять число из памяти в аккумялятор и обратно. Как ни странно, большинство операций с памятью выполняются именно за один такт. Исключения составляют операции с косвенной адресацией (через указатель). Операции со словами (16 разрядов) выполняются за 2 такта. Я думаю, что это все же неплохая альтернатива ATmega.
|
|
|
|
|
May 1 2010, 17:16
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Поставил я все 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 убрать!
|
|
|
|
|
May 1 2010, 17:24
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
интересно сравнить с 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
|
|
|
|
|
May 1 2010, 23:00
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Посмотрел я как компилируется моя функция разбора данных. Лучше всего повел себя космик! Для иллюстрации выдрал кусочек в отдельную функцию Код 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 он вообще похоже не подозревает  Еще и такой код 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 полечат от артефактов код у него будет хороший! Райзонанс тоже использует виртуальные регистры, А космик стек.
|
|
|
|
|
May 3 2010, 07:48
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Да уж...  Сильно улучшает... if (!--Len) вообще можно реализовать одной инструкцией Код dec S:b8 jrne ??b3 ..... Или нет? PS: Видно первая версия еще очень сырая.
Причина редактирования: Совершенно бездумное цитирование!
|
|
|
|
|
May 3 2010, 14:58
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

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

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(_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 операции! Ну а условие окончания цикла - как всегда! Да, кстати с инкрементом такие же проблемы!
|
|
|
|
|
May 3 2010, 16:29
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Xenia @ May 3 2010, 20:01)  А разве есть разница на каком ассемблере писать?  Разница большая! Вот возьмите хотя бы IARовский ассемблер - там возможно использовать С препроцессор #ifdef #include и т.д. Возможности насписания макросов отличаются. Да и линкер все равно нужен. Если писать на асме - я бы выбрал IAR - хороший линкер, С препроцессор, мароксы обынчые для разных архитектур...
|
|
|
|
|
May 3 2010, 16:57
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(KRS @ May 3 2010, 19:29)  Разница большая! Вот возьмите хотя бы IARовский ассемблер - там возможно использовать С препроцессор 'С' препроцесср, на то он и препроцессор, что вещь совершенно независимая и способен обрабатывать любые тексты, включая не только любой ASM, но вообще литературные тексты. Другое дело, что у макроассемблеров бывает наворотов и много поболее, только едва-ли более одного из сотни асмописателей знают о них  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 3 2010, 18:28
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Xenia @ May 3 2010, 20:01)  А разве есть разница на каком ассемблере писать?  Я понимаю, если это компилятор языка более высокого уровня - тут действительно эффективность кода во многом зависит от компилятора. Но ассемблер! Растолкуйте мне, пожалуйста, разницу. Может быть там просто редактор более удобный или встроенные макросы? Все трансляторы с ассемблера различаются прежде всего своим синтаксисом. Поэтому программа, написанная для одного ассемблера, скорее всего не сможет быть оттранслирована другим. А в общем, дело не только в одном ассемблере, но и во всей системе в целом. На данный момент для меня более удобной оказалась среда Cosmic в оболочке STDV. Цитата(KRS @ May 3 2010, 19:27)  А родной ST хуже? вместо 1 операции dec (x) - 3 операции! Ну а условие окончания цикла - как всегда! Да, кстати с инкрементом такие же проблемы! Хм .... Если бы только 3 операции, то это еще куда ни шло. При декременте и сравнении их получается 5, и это вместо одной.
Сообщение отредактировал zltigo - May 3 2010, 18:33
Причина редактирования: Бездумное цитирование. Повтроно. Впредь такие цитаты будут удаляться вместе с постом.
|
|
|
|
|
May 8 2010, 20:45
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Xenia @ May 8 2010, 13:24)  Только что (файл датируется 5 мая) IAR выложила сервис-пак №1 к своей версии компилятора для STM8. в bin заменились dll для отладчика - симулятор, драйвера stlink и т.д. компилер старый остался. Тут обратил внимание что у STM8 свой линкер - ilinkstm8, и на выходе компилера elf, а конфигурация линкера icf. Что меня удивило - я думал жто только к АРМу они сделали из-за EABI. Поддержка elf (покарйней мере в ARM) у них какая то убогая! Даже размер секции нельзя записать, надо счиать. Теперь что IAR будет отказываться от UBROF и xlink для всех семейств?
|
|
|
|
|
May 14 2010, 10:04
|

Участник

Группа: Участник
Сообщений: 61
Регистрация: 17-12-06
Пользователь №: 23 612

|
Цитата(KRS @ Apr 13 2010, 15:27)  Наткнулся тут на новое семейство. Заинтересовали LQFP44 c CAN, как дешовая замена AT90CAN64 или мелких STM32. На семинар http://catalog.compel.ru/blog/2010/04/08/2...ntrollery-stm8/никто не собирается? Скажите, а CAN является важным условием использования? Индустриальное применение (насколько высока требуемая надежность)?
Сообщение отредактировал guxa - May 14 2010, 10:04
|
|
|
|
|
May 14 2010, 18:01
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Dog Pawlowa @ May 14 2010, 16:58)  Вот CAN вам неймется, подскажите лучше, кто тела прерываний нашел!?  То ли, как для STM32, в библиотеках искать, то ли как обычно вектора прописывать? Речь о IARе. Делается так же, как и для AVR.
|
|
|
|
|
May 14 2010, 19:23
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(_Bill @ May 14 2010, 21:01)  Делается так же, как и для AVR. А можно подробнее? В документации есть упоминание на файл iodevice.h, который я не нашел нигде. В примерах прагмы в стиле финских студентов - #pragma vector 25, и никак не приведу свою нумерацию к STэшной.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 14 2010, 20:49
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(KRS @ May 14 2010, 23:32)  Т.е. если на С писать то стандартно, #pragma vector __interrupt. А если на асме PUBLIC _interrupt_n. Все так, только вектора нигде не задифайнены по именам. В документации ST вектор TIM2_UPDATE = 13, в IARe 15, потому что я поставил индивидуальные ловушки и вычислил. Но все равно пока не заработало - что ли нужно ручками запрос прерывания сбрасывать? .... Угу, прочитал уже. ....Диод моргает, проект завершен
--------------------
Уходя, оставьте свет...
|
|
|
|
|
May 14 2010, 21:19
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(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 ...
|
|
|
|
|
May 14 2010, 21:32
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(KRS @ May 15 2010, 00:19)  ST наверное reset и trap не учитывает.
Кстати у IAR номера векторов в файлах iostm8xxxx.h есть! Да, так и есть. Хотя странно, обычно ИАР следует в фарватере производителя. Точно, вот мой вектор, 15: #define TIM2_OVR_UIF_vector 0x0F Спасибо!
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Jun 15 2010, 18:08
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 19-11-07
Из: Vinnitsa, UA
Пользователь №: 32 472

|
Бесплатного вроде как нет. Да и особо не нужно, так как есть STM8S-Discovery за цену около 10$ (реально у нас его продают за все 15-20) , что сводит целесообразность изготовления самодельного программатора к нулю  . В этот дискавери встроена обрезанная версия ST-Link, через него можно прошивать и отлаживать.
Сообщение отредактировал ZVE - Jun 15 2010, 18:11
|
|
|
|
|
Jun 30 2010, 23:25
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Linker @ Jun 30 2010, 19:53)  Хотелось бы услышать про траблы. Их не может не быть. Настораживает малое количество отзывов. Про одну проблему я уже здесь сказал. А то, что отзывов мало, не удивительно. Семейство ведь новое.
|
|
|
|
|
Jul 1 2010, 05:50
|
Местный
  
Группа: Свой
Сообщений: 313
Регистрация: 7-01-07
Из: Севастополь
Пользователь №: 24 170

|
Цитата(_Bill @ Jul 1 2010, 02:25)  ...Семейство ведь новое. Совсем неплохо выглядит совместимость (снизу вверх) STM8L -> STM32L. Поэтому я завтра закажу несколько STM8L152C6 и начну проект на них. Ко времени осознания неприятного факта, что не хватило ресурсов, выйдет 32-я серия - перейду на нее :-) Надеюсь, она будет еще дешевле 8-й :-) У нас (в Украине) цена неплохая - 21 грн за STM8L152C6 против 31 грн за ATmega32A.
|
|
|
|
|
Jul 1 2010, 14:19
|
Местный
  
Группа: Свой
Сообщений: 210
Регистрация: 15-01-08
Из: Новосибирск
Пользователь №: 34 105

|
Цитата(_Pasha @ Jul 1 2010, 03:38)  В каких попугаях ея можно измерить ?  Правильнее сказать устойчивость к перенапряжениям на пинах. В даташите приводится значение 4000 В.
--------------------
Я здесь и сейчас...
|
|
|
|
|
Jul 2 2010, 04:22
|
Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476

|
Цитата(Aner @ Jul 1 2010, 18:22)  к каким еще перенапяжениям? к статике! Я, собственно говоря не большой знаток во стандартах по помехам, ибо я не применяю свои разработки в жестких условиях помех, но на семинаре по STM8 серия STM8S позиционировалась как надежная линейка для промышленных применений. Я не большой знаток стандартов по ЭМИ и прочее, но в даташитах на STM8S прсутсвуют различные стнадарты и классы помехозащищенности, не буду приводить не понятные для меня сочетания цифр и букав, интересующиеся могут посмотреть сами. Интересный момент, который я так же услышал на семинаре, это аппаратный контроль памяти(нескольких регистров), что то вроде складываются значения регистров и в итоге сумма должна ровняться нулю. Мол при сильной помехе при частичном или вылете памяти будет сформирован сброс и соответствующее условие, как то так) Я специально не искал, но на глаза сия информация так и не попалась, знающие люди - ткните носом. Вообще семейство интересное, играемся пока, но пока руководство полной воли не дает, вот как запасы атмела иссякнут, тогда ......
Сообщение отредактировал topkin - Jul 2 2010, 04:24
|
|
|
|
|
Jul 2 2010, 17:18
|
Местный
  
Группа: Свой
Сообщений: 210
Регистрация: 15-01-08
Из: Новосибирск
Пользователь №: 34 105

|
Цитата(Aner @ Jul 1 2010, 21:22)  к каким еще перенапяжениям? к статике! Перенапряжения - это такие напряжения, которые превышают рабочие. Например, в цепи питания процессора 5 вольт проскакивает 200 В. Правда оно длится несколько микросек. И если имеется защита, то процессор не выходит из строя. Статическое напряжение ("Статика") - это один из многих возможных источников перенапряжений. Далеко не единственный, хотя и очень распространенный. Не слишком сложно?
--------------------
Я здесь и сейчас...
|
|
|
|
|
Jul 14 2010, 01:40
|
Группа: Новичок
Сообщений: 3
Регистрация: 14-07-10
Пользователь №: 58 440

|
Подскажите, где-то есть сейчас в наличии STM8S-Discovery, где его можно купить?
|
|
|
|
|
Jul 14 2010, 12:27
|
Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476

|
Цитата(IGK @ Jul 10 2010, 06:34)  Нашел время осмотреть STM8S-Discovery :-) Я до этого по диагонали прочел разную инфу, из которой почерпнул оптимистическое утверждение, что вся серия нога-в-ногу совместима для одинаковых корпусов. Поэтому была мысль сдуть феном с борды STM8S105 и прилепить туда STM8L152, ибо я на него собираюсь переводить проекты. Оказалось, ног одинаковое количество, но не совпадают... Посему сажусь ваять отладочную плату для своего устройства, потом отпаяю мостики у Дискавери и попробую его на совместимость с STM8L. Это не скоро. Отпишусь, когда проверю. У меня возникали похожие мысли, но STM8S и STM8L это разные линейки, а совместимость только внутри этих линеек. А смысл pin to pin совместимости в том, что взяв однотипные корпуса с одинаковым количеством ножек, вы можете без проблем взаимозаменять микроконтроллеры, различия будут только в объеме памяти. Вот бы оптимизировать урезанный ST-link с дискавери до полноценной версии было бы интересно).
Сообщение отредактировал topkin - Jul 14 2010, 12:28
|
|
|
|
|
Jul 14 2010, 18:18
|
Местный
  
Группа: Свой
Сообщений: 313
Регистрация: 7-01-07
Из: Севастополь
Пользователь №: 24 170

|
Цитата(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-битники) и подпись. Типа того, что паять можно наобум :-) и ничего, пин в пин совместимы. Именно между разными линейками, а не внутри. Да фиг с ним. Уже начал трассировать плату, там все задействовано - ЦАП, АЦП, клавиши сенсорные. В начале недели сделаю платку и начну шаманить с линком Дискавери. Лишь бы время было.
|
|
|
|
|
Aug 2 2010, 17:58
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 24-11-07
Пользователь №: 32 645

|
Цитата(IGK @ Jul 9 2010, 22:34)  Нашел время осмотреть STM8S-Discovery :-) Я до этого по диагонали прочел разную инфу, из которой почерпнул оптимистическое утверждение, что вся серия нога-в-ногу совместима для одинаковых корпусов. Поэтому была мысль сдуть феном с борды STM8S105 и прилепить туда STM8L152, ибо я на него собираюсь переводить проекты. Оказалось, ног одинаковое количество, но не совпадают... Посему сажусь ваять отладочную плату для своего устройства, потом отпаяю мостики у Дискавери и попробую его на совместимость с STM8L. Это не скоро. Отпишусь, когда проверю. Не будет дискавери шить ничего кроме той микры что у него на борту. Там в описании написано, что поддерживает только s105. Я пробывал ради проверки прошить такой же проц только 16 кило. Дискавери его не увидел а уже купленный ст линк спокойно прошил. так что дискавери - только для s105c6  увы
|
|
|
|
|
Aug 4 2010, 16:29
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180

|
Цитата(ведущий_специалист @ Aug 3 2010, 02:58)  Не будет дискавери шить ничего кроме той микры что у него на борту. Там в описании написано, что поддерживает только s105. Я пробывал ради проверки прошить такой же проц только 16 кило. Дискавери его не увидел а уже купленный ст линк спокойно прошил. так что дискавери - только для s105c6  увы с сайта производителя, кто-то спросил и получил ответ в конференции. 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 руки не дошли проверить.
|
|
|
|
|
Aug 5 2010, 04:16
|
Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476

|
Цитата(ukpyr @ Aug 4 2010, 21:04)  а какой смысл в stm8s после появления stm32s100 (цены уже сопоставимые) ? тем более если учесть наличие ГНУтых кросс-платформенных средств разработки . Как то для не больших приложений - дергателей ногами никак рука не поднимается ставить 32 - разрядный кортекс. Плюс минимальный корпус 48 пин, хотя цены и правда низкие. Мне STM8L симпатично, может кто работал, поделитесь впечатлениями? Вот что мне попалось в сети по STM8L, http://www.futureelectronics.com/en/Techno...CTRONICS1000715, жаль что более подробной информации нет, а то глядишь будет заточенный ST - Link под STM8L.
|
|
|
|
|
Aug 5 2010, 12:55
|
Местный
  
Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219

|
Цитата(Stanislav_S @ Aug 5 2010, 12:02)  А чем зашивали, через програмулину или через IDE компилятора? А то у меня из IAR не удалось прошить. STVD + Cosmic. Нажимаешь кнопочку Debug. После прошивки отладку останавливаешь и все!
|
|
|
|
|
Sep 15 2010, 13:20
|

Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 16-11-07
Пользователь №: 32 387

|
Цитата(dimka76 @ Sep 15 2010, 15:36)  Так ножки в обработчике прерывания опросите и узнаете источник прерывания. Само собой. Но я думал, что тут как-то по нормальному - флаги есть на каждый пин. Как в STM32 например. Видимо зря так думал.
Сообщение отредактировал pan_oleg - Sep 15 2010, 13:22
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|