25.10.2010, 06:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
STM8(S/L), первые впечатления
Не секрет, что с продукцией Атмела сейчас конкретные сложности. Цены какие то нереальные, да и купить не просто. Так что приходится переводить старые проекты на какую нибудь другую платформу. И как раз недавно ST выпустила на рынок свое детище - 8-ми битное семейство STM8. Цены более чем приятные, возможности тоже не слабые. И нафаршированность намного выше, чем у того же АВР-а. При этом работает в довольно широком диапазоне питаний (8S 2,95-5,5В), имеет приличное количество разных корпусов, довольно богат таймерами и памятью. В кристалле за 45р ОЗУ 2Кб. Это тогда, когда М8А стоит уже 75р и не может похвастаться таким объемом памяти. Также имеется 2Кб еепром с 300К циклами записи и 32Кб флеши. Это все в STM8S105.
Ну не попробовать было бы глупо, тем более что для быстрого старта ST предлагает недорогой комплект из отладчика и отладочной платы. Я их приобрел за 360р - ИМХО более чем бюджетно. Называется он STM8S-Discovery. Далее скачал с сайта ST среду программирования и отладки и триальную версию компилятора COSMIC. В принципе встречалась еще и версия от IAR, как триальная, так и не очень, но я ее не скачивал.
При подключении комбайна из отладки и дебаггера к USB начинает работать прошитый по умолчанию пример - мигалка светодиода с управлением периодом миганий с помощью сенсорной кнопки. И заодно появляется флешдиск с рекламой ST . Ну это неинтересно - нужно написать что то свое. ST предлагает библиотеку для быстрого старта, с поддержкой всей периферии и прочими радостями. Но библиотека разочаровала, при ее использовании код получается тормозным и раздутым. Пользоваться ей нет никакого желания. Процедура изменения состояния вывода на противоположное - 23! такта. Если не пользоваться библиотекой - 3 такта! Разница в СЕМЬ раз. Думаете зато библиотека память сэкономила? Нифига - вместо 4-х байт заняла около 20. Более того, минималистическая программка мигания светодиодом по таймеру скушала 3.7Кб флеши. Это при использовании стандартной библиотеки - всего трех модулей GPIO, CLK, TIM3. Переписываю библиотеку, пока ужал программку до 1,5Кб и ускорил заодно в несколько раз. Вообще интересно - неужели нельзя нормальную библиотеку приложить?
Или вообще не прикладывать, а потратить время на документацию.
Ну и среда от производителя вызывает уныние. Никакого сервиса в ней нет. Ну да ничего, C::B поможет. Компилятор скорее всего к нему удастся присобачить. А если не удастся, то будет просто редактором, хотя это и неудобно.
Но сами кристаллы понравились. Довольно шустрые несмотря на всего три регистра Тот же АВР за три такта не инвертирует вывод порта. Ну кроме хмеги, а та несколько в другой ценовой категории, ей с кортексами впору соревноваться.
У прерываний есть приоритеты, т.е. то у которого приоритет выше может прерывать то, у которого приоритет ниже. Это хорошо. Куча векторов, хотя некоторые события все равно объединены. Ну при таком количестве периферийных модулей было бы странно, если бы все удалось раскидать по отдельным векторам.
В общем надо продолжать. Для 8-ми битника кристалл получился весьма и весьма интересным. За пять часов секса в основном с библиотекой я получил массу новых впечатлений. Теперь жду STM32F100 и STM8L151, они пока в пути. А там тоже есть библиотеки
Кто нибудь еще пробовал STM8? Давайте делиться впечатлениями, подходами и прочими улучшайзингами. Что то мне кажется что это будущий народный контроллер, вместо АВР-ов. Правда в дипе не выпускается. Особенно 8L хорош для батарейных девайсов. Это вообще вкусная штука - с ЦАП, DMA, нормальными часами с отдельным батарейным питанием, туевой хучей входов АЦП - причем весьма шустрого. Но о 8L в следующий раз, когда его "пощупать" удастся в реале.
Ну так есть использующие STM8 на этом форуме? Обсудим сабж?
Тут проблема с софтом возникла - в результате редизайна сайта ST найти на нем где скачать STVD не получается. Так что несмотря на то, что софт этот бесплатный проще скачать его с файлообменника. Ссылка для спасиб - https://kazus.ru/forums/showpost.php?p=289363
Линк на STVD - http://depositfiles.com/files/uw2asnzfd
Или оно же - http://ssdepositfiles.com/files/uw2asnzfd
Еще одна - http://www.st.com/stonline/stappl/re...T&FamilyID=141
Последний раз редактировалось dosikus; 14.12.2010 в 11:02.
|
|
|
Эти 28 пользователя(ей) сказали Спасибо kison за это сообщение:
|
a-fisher (13.12.2010), Alex9797 (25.10.2010), AlexAsher (14.12.2010), AVF (06.01.2011), Bass85 (28.10.2010), Flopix (08.01.2011), forbidden (26.06.2011), GREGORI_DEMCHUK (13.11.2010), harchenko_pavel (25.10.2010), Highlander (31.12.2010), ibiza11 (06.12.2010), kostinn (30.11.2010), look22 (26.12.2010), lsa (05.12.2010), makakus (30.11.2010), matv (02.12.2010), naumovich (25.11.2010), nico100 (27.02.2011), omia (02.12.2010), pt200 (28.12.2010), rear (25.10.2010), RY723 (26.10.2010), sarsar (14.03.2011), SasaVitebsk (22.11.2010), terminator_seva (25.10.2010), VasMiP (29.06.2011) |
|
25.10.2010, 07:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
С размером в общем наладилось - указал в опциях компилятора раскладывать функции по отдельным секциям и линкер выкинул все неиспользованное. Так что размер стал около 400 байт без векторов и стартапа. Приемлемо. Но тормоза то остались Так что от переписывания библиотеки никуда не уйти.
|
|
|
|
25.10.2010, 08:44
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kison
|
Тот же АВР за три такта не инвертирует вывод порта. Ну кроме хмеги, а та несколько в другой ценовой категории, ей с кортексами впору соревноваться.
|
Все новые меги ( например м88 ) инвертируют линию порта за 2 такта. Это так, к слову.
Мне трактористы ни в какую не дали stm8 попробовать. Даже м88 тоже. Только м8.
|
|
|
|
25.10.2010, 08:49
|
|
Прописка
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Аналогично стартанул с STM8S-Discovery, покупал просто глянуть что за штука. Позже купил ST-Link. Пока возился только с дисковери, но МК взял на пробу из разных серий, STM32F, STM8S, STM8L. От среды родной отказался сразу, лабаю на Eclipse, компилятор космик, дока на него хорошая, майкфайл накидал за час. Вот бы ещё шить из консоли а то родной софт только гуи имеет.
несколько фоток http://zib.sibinet.com
|
|
|
|
25.10.2010, 09:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от SasaVitebsk
|
Все новые меги ( например м88 ) инвертируют линию порта за 2 такта. Это так, к слову.
|
STM8 вообще должен за 1. Команда BCPL, три видимо из за неточности измерения. Т.е. скорее всего мой косяк. Я таймер в свободный полет запустил и выполнял инструкции пошагово. Смотрел соответственно счетный регистр до и после шага. Вышло три такта, хотя по доке - один.
Вообще отличные инструкции по работе с битами. Не только портов, STM8 все равно с чем - адресное пространство единое. Можно и в еепром бит инвертировать/установить/сбросить. Особо полезно при работе с флагами, критические секции уже не нужны.
Сообщение от SasaVitebsk
|
Мне трактористы ни в какую не дали stm8 попробовать.
|
Так надо самостоятельно, без привязки к конкретному проекту. Просто для общего развития. А там глядишь и М8 пропадет, заводов то у Атмела практически не осталось. Надо сани летом подготовить, хотя с Атмелом похоже вторая половина осени уже
Сообщение от zheleznjakov
|
Аналогично стартанул с STM8S-Discovery, покупал просто глянуть что за штука. Позже купил ST-Link.
|
Я и второй дискавери заказал, под STM32F100 Там будет "вторая половина" ST-Link - он залочен уже под STM32. Правда его уже так просто не отломаешь судя по картинке. Ну у меня клон JLINK-а имеется, так что для АРМ проблемы нет, нужен был в основном под STM8. Я правда хотел дискавери под 8L, но что то их в наличии ни у кого нет. Распаяю сам.
Сообщение от zheleznjakov
|
От среды родной отказался сразу, лабаю на Eclipse
|
Мне пока рано от STVD отказываться. Слишком часто отладчик нужен, буквально каждые пару минут. Вот библу перепишу под себя, отлажу, тогда можно и консолькой отлаживаться. Я пока по сути библиотеку под COSMIC затачиваю, ну и под себя. А вот с программатором надо что то делать. Может он все же из консоли запустится. Ну или GUI параметры примет.
Все не так и плохо - https://my.st.com/public/STe2ecommun...rrentviews=427
Может кому пригодится - Free RTOS - http://www.atomthreads.com/
Последний раз редактировалось kison; 25.10.2010 в 09:25.
|
|
|
|
25.10.2010, 11:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Библиотека все же потрясающая. Простейшая функция настройки вывода порта разворачивается в монстроидальную конструкцию:
Код:
|
GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);
// листинг, точнее листингище
436 ; 54 GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_LOW_FAST);
439 002c 4be0 push #224
440 002e 4b01 push #1
441 0030 ae500f ldw x,#20495
442 0033 cd0000 call _GPIO_Init
444 0036 72105011 bset 20497,#0
445 003a 72105012 bset 20498,#0
446 003e a601 ld a,#1
447 0040 72115013 bres 20499,#0
448 0044 85 popw x
// думаете все? Нет, это только вызов, сама функция ниже
363 0000 _GPIO_Init:
365 0000 89 pushw x
366 00000000 OFST: set 0
369 ; 70 assert_param(IS_GPIO_MODE_OK(GPIO_Mode));
371 ; 71 assert_param(IS_GPIO_PIN_OK(GPIO_Pin));
373 ; 77 if ((((u8)(GPIO_Mode)) & (u8)0x80) != (u8)0x00) /* Output mode */
375 0001 7b06 ld a,(OFST+6,sp)
376 0003 2a18 jrpl L771
377 ; 79 if ((((u8)(GPIO_Mode)) & (u8)0x10) != (u8)0x00) /* High level */
379 0005 a510 bcp a,#16
380 0007 2705 jreq L102
381 ; 81 GPIOx-›ODR |= (u8)GPIO_Pin;
383 0009 f6 ld a,(x)
384 000a 1a05 or a,(OFST+5,sp)
386 000c 2006 jra L302
387 000e L102:
388 ; 84 GPIOx-›ODR &= (u8)(~(GPIO_Pin));
390 000e 1e01 ldw x,(OFST+1,sp)
391 0010 7b05 ld a,(OFST+5,sp)
392 0012 43 cpl a
393 0013 f4 and a,(x)
394 0014 L302:
395 0014 f7 ld (x),a
396 ; 87 GPIOx-›DDR |= (u8)GPIO_Pin;
398 0015 1e01 ldw x,(OFST+1,sp)
399 0017 e602 ld a,(2,x)
400 0019 1a05 or a,(OFST+5,sp)
402 001b 2007 jra L502
403 001d L771:
404 ; 91 GPIOx-›DDR &= (u8)(~(GPIO_Pin));
406 001d 1e01 ldw x,(OFST+1,sp)
407 001f 7b05 ld a,(OFST+5,sp)
408 0021 43 cpl a
409 0022 e402 and a,(2,x)
410 0024 L502:
411 0024 e702 ld (2,x),a
412 ; 98 if ((((u8)(GPIO_Mode)) & (u8)0x40) != (u8)0x00) /* Pull-Up or Push-Pull */
414 0026 7b06 ld a,(OFST+6,sp)
415 0028 a540 bcp a,#64
416 002a 2706 jreq L702
417 ; 100 GPIOx-›CR1 |= (u8)GPIO_Pin;
419 002c e603 ld a,(3,x)
420 002e 1a05 or a,(OFST+5,sp)
422 0030 2005 jra L112
423 0032 L702:
424 ; 103 GPIOx-›CR1 &= (u8)(~(GPIO_Pin));
426 0032 7b05 ld a,(OFST+5,sp)
427 0034 43 cpl a
428 0035 e403 and a,(3,x)
429 0037 L112:
430 0037 e703 ld (3,x),a
431 ; 110 if ((((u8)(GPIO_Mode)) & (u8)0x20) != (u8)0x00) /* Interrupt or Slow slope */
433 0039 7b06 ld a,(OFST+6,sp)
434 003b a520 bcp a,#32
435 003d 2706 jreq L312
436 ; 112 GPIOx-›CR2 |= (u8)GPIO_Pin;
438 003f e604 ld a,(4,x)
439 0041 1a05 or a,(OFST+5,sp)
441 0043 2005 jra L512
442 0045 L312:
443 ; 115 GPIOx-›CR2 &= (u8)(~(GPIO_Pin));
445 0045 7b05 ld a,(OFST+5,sp)
446 0047 43 cpl a
447 0048 e404 and a,(4,x)
448 004a L512:
449 004a e704 ld (4,x),a
450 ; 118 }
453 004c 85 popw x
454 004d 81 ret |
Если не пользоваться библиотекой листинг примерно такой:
Код:
|
439 002c 72105011 bset 20497,#0
442 0030 72105012 bset 20498,#0
449 0036 72115013 bres 20499,#0 |
Функционал тот же, размер и скорость очень разные.
|
|
|
|
25.10.2010, 12:08
|
|
Временная регистрация
Регистрация: 20.06.2007
Сообщений: 70
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 11 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
|
|
|
|
25.10.2010, 12:14
|
|
Вид на жительство
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 164
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
kison, сложности в библиотеке - наверно от стремления к универсальности?
Вчера перечитывал про ARM7MODA и думал спросить вас, что вы видите в качестве альтернативы АВРам, а здесь уже все готово!
__________________
Всегда стремись к недоступному
|
|
|
|
25.10.2010, 12:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от rear
|
kison, сложности в библиотеке - наверно от стремления к универсальности?
|
И это тоже. Но это не то что сложности - кривые ручки индусских программистов. У них оплата видимо прямо пропорциональна объему кода. И результат никто видимо не проверял. А документация такая, что наполовину по библиотеке разбираться приходится. Сейчас еще примерчик какой нибудь вопиющего качества кода подкину.
Сообщение от rear
|
Вчера перечитывал про ARM7MODA и думал спросить вас
|
То то я думаю - с чего у меня аж душа горела, дай думаю дискавери то запущу, да на форуме отпишусь Вчера это было
Вы в битве экстрасенсов не участвуете часом?
|
|
|
|
25.10.2010, 13:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Вот простенький пример - инверсия бита в порте.
Код:
|
71 ; 24 GPIO_WriteReverse(GPIOD, GPIO_PIN_0);
73 0016 4b01 push #1
74 0018 ae500f ldw x,#20495
75 001b cd0000 call _GPIO_WriteReverse
// и собственно сама функция инверсии
695 0000 _GPIO_WriteReverse:
697 0000 89 pushw x
698 00000000 OFST: set 0
701 ; 173 GPIOx-›ODR ^= (u8)PortPins;
703 0001 f6 ld a,(x)
704 0002 1805 xor a,(OFST+5,sp)
705 0004 f7 ld (x),a
706 ; 174 }
709 0005 85 popw x
710 0006 81 ret |
Без библиотеки это :
Если на инициализацию еще можно и забить, все же она обычно делается только раз в начале программы, то на работу с портами уже не забьешь - там скорость уже важна.
В общем стандартная библиотека идет лесом.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:30.
|
|