Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

STM8(S/L), первые впечатления

Непрочитано 03.11.2010, 17:19  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от zheleznjakov Посмотреть сообщение
Я детально не вникал глунял просто распределение секций у линкера, при 2048 байт озу нулевая страница 255 байт, а bss (data) от 0x0100 до 0x05FE, вот и подумал что 512 под стек.
Вообще обычно все не так. Задается область памяти в скрипте линкера и указывается какие секции туда складывать. Соответственно размеров у секций нет, есть только у всей области. Тут либо поместится, либо нет.
У космика почему то секции имеют отличный от стандартного смысл. bss - секция для переменных инициализируемых 0 у всех, кроме космика. У космика это почему то no_init. А инициализируемые нулем складываются в ubsct. Причем проблема только с секцией ubsct - если массивы явно проинициализировать, то все собирается без всяких шаманских действий.
Реклама:

Последний раз редактировалось Falconist; 13.04.2011 в 23:36.
kison вне форума  
Непрочитано 03.11.2010, 17:21  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от zheleznjakov Посмотреть сообщение
а прога "соберается" да же если ARRAY_SIZE 20000 тыщ поставить...
ARRAY_SIZE 1000
Цитата:
#error clnk Debug\test_for_kazus.lkf:1 segment .bss size overflow (190)
Хотя с 500 - собирается. Похоже в скрипте линкера RAM задана для толстых кристаллов с ОЗУ›2кБ

А скрипта то и нету. Все через командную строку задается. Причем все равно какой кристалл - она одинаковая. Вот и ответ - переполнение отслеживается только если в самый толстый кристалл не влезает.
ЗЫ. Хочу GCC под STM8... Очень сильно хочу...

Последний раз редактировалось Falconist; 13.04.2011 в 23:38.
kison вне форума  
Непрочитано 03.11.2010, 17:43  
EugVor
Временная регистрация
 
Регистрация: 15.03.2006
Сообщений: 79
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
EugVor на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
Ну для тех кто все еще сомневается в быстродействии STM8 еще небольшой пример.
Один из распостраненных приемов построения программ - вечный цикл с вызовом действий по флажкам. Флажки соответственно удобно делать в виде битовых полей структуры. Ес-но с квалификатором volatile, ведь они устанавливаются вне основного цикла.
В результате на архитектурах с организацией ReadModifyWrite, а именно такая у АВР, изменять состояние этих флажков приходится при запрещенных прерываниях. Типичный листинг:
Код:
cli
LDS R16,adress
andi R16,mask
sts adress,R16
sei
STM8 справляется с этим без запрета прерываний, причем одной однотактовой командой - bres. Выходит аж в 7 раз быстрее Реально то это конечно не так важно, обычно при такой организации запасы по времени большие. Но все же.
Тут соль в том, что это атомарная операция, в которую не сможет вклиниться процесс из какого-нибудь обработчика? Это весьма пользительное свойство. Если бы ещё была возможность декрементировать и сбрасывать за 1 такт, тогда можно было бы безопасно останавливать программные таймеры из прерываний хотя бы однобайтовые.
Сообщение от niXto Посмотреть сообщение
Кстати кто что думает про ST7FOX - самая маленькая имеет 2к флеши, АЦП, ШИМ и стоит чуть дороже таймера 555 ($0.15)?
- Дайте мне ST7FOX-ов.
- Вам сколько?
- Грамм 200-300 не больше, плз

Последний раз редактировалось Falconist; 13.04.2011 в 23:36.
EugVor вне форума  
Непрочитано 03.11.2010, 17:57  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от EugVor Посмотреть сообщение
Тут соль в том, что это атомарная операция, в которую не сможет вклиниться процесс из какого-нибудь обработчика?
Да, соль в этом.

Сообщение от EugVor Посмотреть сообщение
Если бы ещё была возможность декрементировать и сбрасывать за 1 такт, тогда можно было бы безопасно останавливать программные таймеры из прерываний хотя бы однобайтовые.
Я не понял. Можно на примере?

Последний раз редактировалось Falconist; 13.04.2011 в 23:37.
kison вне форума  
Непрочитано 03.11.2010, 18:13  
EugVor
Временная регистрация
 
Регистрация: 15.03.2006
Сообщений: 79
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
EugVor на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
Я не понял. Можно на примере?
Чтобы отмерить задержку на ожидание байта из UART кратную 10мс, например 500мс, я записываю в tmr=50; и в 10мс-ом обработчике:
Код:
if (tmr) tmr --; // Если взведён, декрементировать;
if (!tmr) {UartErr=1;} // Если успел досчитать до нуля...;
в обработчике по приёму UART:
Код:
 tmr=0; // Остановить таймер.
– эта операция может вклиниться в декремент tmr --; особенно если он не однобайтовый. Как правило это заканчивается тем, что таймер продолжает отсчитываться дальше и фиксирует ошибку.

Последний раз редактировалось Falconist; 13.04.2011 в 23:36.
EugVor вне форума  
Непрочитано 03.11.2010, 18:45  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от EugVor Посмотреть сообщение
Как правило это заканчивается тем
Как правило такие таймеры обсчитываются уже внутри обработчика. Так что UART просто подождет. Я обычно не по значению счетчика работаю, а имею еще флажки включен/выключен, циклический/однократный. И именно флажок "включен" сбрасываю, если таймер мне больше не нужен. Также по нему ориентируюсь - работает сейчас таймер или нет. Просто таймеры могут и циклическими быть, так что если счетчик == 0, это не значит что таймер выключен. Заодно так еще и быстрее выходит - модифицируется всего один байт. Счетчик при этом может быть хоть 32 битный.

Последний раз редактировалось Falconist; 13.04.2011 в 23:37.
kison вне форума  
Непрочитано 03.11.2010, 19:16  
EugVor
Временная регистрация
 
Регистрация: 15.03.2006
Сообщений: 79
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
EugVor на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Я тоже к такому решению пришёл в обработчике УАРТ просто установить признак, что считать дальше не нужно и проверять его вместо проверки значения таймера, но это на каждый таймер ещё доп. проверки, а таймеров уже самих по себе немеряно и обработчик уже разросся, при прерываниях каждую 1мс начинает утыкаться лицом себе же в зад.
Ну, это уже всё это конечно конкретные вопросы и не совсем по теме

Последний раз редактировалось EugVor; 03.11.2010 в 19:23.
EugVor вне форума  
Непрочитано 03.11.2010, 19:34  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от EugVor Посмотреть сообщение
но это на каждый таймер ещё доп. проверки
Ровно то же что и if (tmr) tmr --; Проверка то все равно есть. А если счетчик не 8 бит, то проверка будет даже быстрее.

Что то пробую на асме что изобрести, типа DDS из 200 сообщения. Но пока он совсем незнакомый. Выходит у меня 13 тактов. Пока. Думается что можно и побыстрее...

Последний раз редактировалось Falconist; 13.04.2011 в 23:37.
kison вне форума  
Непрочитано 03.11.2010, 20:08  
EugVor
Временная регистрация
 
Регистрация: 15.03.2006
Сообщений: 79
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
EugVor на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
Ровно то же что и if (tmr) tmr --; Проверка то все равно есть. А если счетчик не 8 бит, то проверка будет даже быстрее.

Что то пробую на асме что изобрести, типа DDS из 200 сообщения. Но пока он совсем незнакомый. Выходит у меня 13 тактов. Пока. Думается что можно и побыстрее...
Да, но вот если бы был возможен атомарный декремент, то инициализацию tmp можно было бы делать в обработчиках, например на ожидание ответа при отправке последнего байта сообщения, а не протаскивать её через фон с отключенными прерываниями. Это вроде попроще.

Последний раз редактировалось Falconist; 13.04.2011 в 23:37.
EugVor вне форума  
Непрочитано 04.11.2010, 02:24  
=GM=
Прописка
 
Регистрация: 21.09.2009
Сообщений: 218
Сказал спасибо: 1
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
=GM= на пути к лучшему
По умолчанию По поводу DDS

Сообщение от kison Посмотреть сообщение
Что то пробую на асме что изобрести, типа DDS из 200 сообщения. Но пока он совсем незнакомый. Выходит у меня 13 тактов.
Взглянуть можно на 13-ти тактовый вариант?

Последний раз редактировалось Falconist; 13.04.2011 в 23:37.
=GM= вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
KiCAD-объявления и впечатления al_dan KiCAD 32 03.10.2016 17:02
Народ, посмотрите quasm, Как ваши впечатления? suri Proteus, KiCAD и другие ECAD 5 14.10.2009 11:57


Часовой пояс GMT +4, время: 20:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.