Easyelectronics.ru

Электроника для всех
Текущее время: 24 сен 2018, 05:14

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 487 ]  На страницу Пред.  1 ... 15, 16, 17, 18, 19, 20  След.
Автор Сообщение
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 30 дек 2017, 22:46 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 1248
Откуда: Китай, Пекин
axill писал(а):
Макросов не осталось совсем
Шаблоны круче, намного гибче и нагляднее


проблема не в макросах. макросы, как и шаблоны это просто инструмент и не более.

проблема в методологии, в способе использования инструмента. в философии....

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

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

одним чтением документации от производителя железа и спецификации языка программирования не обойтись... нужно видеть практику
как то так.

например в моем коде gpio для STM8 есть лапша вида

Код:
#define SET_C1 (GPIOC->OUT._1)
#define SET_C2 (GPIOC->OUT._2)
#define SET_C3 (GPIOC->OUT._3)
#define SET_C4 (GPIOC->OUT._4)
#define SET_C5 (GPIOC->OUT._5)
#define SET_C6 (GPIOC->OUT._6)
#define SET_C7 (GPIOC->OUT._7)

#define   GPIOD       ((gpio_t*)0x500F)
#define GET_D0 (GPIOD->IN._0)
#define GET_D1 (GPIOD->IN._1)
#define GET_D2 (GPIOD->IN._2)
#define GET_D3 (GPIOD->IN._3)
#define GET_D4 (GPIOD->IN._4)
#define GET_D5 (GPIOD->IN._5)
#define GET_D6 (GPIOD->IN._6)
#define GET_D7 (GPIOD->IN._7)
#


я её тупо сделал в Excel

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 30 дек 2017, 23:11 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
Какие шаблоны в С? Либо макросы, либо true inline.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 00:23 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5120
В программировании нет единственно верного решения
Ваш стиль - простыня повторяющихся определений
Мой вариант - один шаблон единожды частично раскрытый на каждый порт
И финально раскрытый на каждый пин
Мне мой подход больше нравится
Более компактный и более наглядный
Но это исключительно мое личное мнение, не опровергающее ваше

Вот так выглядит описание пина:
Код:
PortA<0>   inp;
PortB<1, PinMode::OutputPushPull> led1;
PortB<2, PinMode::Inverse | PinMode::InputPullUp> but;


Причем в другие библиотеки пины передаются тоже весьма наглядно и единообразно, например:

Код:
Blink<PortB<1, PinMode::OutputPushPull> > led_blink;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 01:35 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
Для STM8 вся эта фигня вообще не работает, т.к. кроме sdcc компиляторов нет. А sdcc мало того, что только С знает, так еще и оптимизации 0.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 01:46 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 642
Eddy_Em писал(а):
Для STM8 вся эта фигня вообще не работает, т.к. кроме sdcc компиляторов нет.

Есть IAR, хотя там и старенький С++, но работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 02:14 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
Я не рассматриваю проприетарщину.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 07:33 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 1248
Откуда: Китай, Пекин
axill писал(а):
Ваш стиль - простыня

Вы невнимательно читаете. не мой то стиль. это то, что я вынужденно "залепил" понаблюдав за практикой использования. построить свой "вентилятор" - не такой уж и бином ньютона.
ну и кстати с производительностью у вашей либы мягко говоря не очень...
примитивное обращение к регистру завернуто в функцию карл!
Код:
void name ## _setoutput(void) { P ## port ## _DDR_bit.DDR ## pin = 1; }

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

Код:
#define ever (;;)
for ever {
   ...
}


;))

чувствуется, был бы у Вас препроцессор аля GNU M4 с поддержкой многоуровневых, вложенных макросов, ух, как бы развернулись....


Последний раз редактировалось cheblin 31 дек 2017, 08:15, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 07:56 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 1248
Откуда: Китай, Пекин
Eddy_Em писал(а):
Я не рассматриваю проприетарщину.

рассматриваешь, рассматриваешь....мало того ещё и бабло платишь.
микроконтроллеры - это оно самое: проприетарщина в чистом виде.
только признаться не можешь, ибо без вариантов....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 10:55 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5120
строка led_pin::Set() превращается в одну ассемблерную команду BSET PD_ODR, #1
уж не знаю куда тут может быть оптимальнее

Show


Си и Си++ на то и придуманы, чтобы увеличить уровень абстракции при программировании
Конечно ценой этого является отдача на откуп компилятору логики оптимизации

я предпочитаю использовать максимальный уровень абстракции и применять самые современные конструкции языка
кто то предпочитает писать на Си максимально приближено к ассемблеру исключая абстрагирование
тут как бы каждый выбирает для себя сам

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

в частности в моем GPIO есть режим инверсии. Это когда например кнопка замыкает на землю, то можно считать что она инвертирована. Вместо того, чтобы везде пытаться это учесть я просто объявляю пин инвертированным и компилятор сам вставляет нужный кусок кода выбрасывая лишний

для примера выше изначально использован этот платформо нейтральный код:
Код:
         inline static void Set() {
            if( PinMode::IsInv(mode_t) ) PinDriver::Clr(); else PinDriver::Set();
         }

внутри него вызывается уже платформо зависимый код:
Код:
            inline static void Set() {
               *RegODR |= (1 << pin);
            }

ну а в итоге остается только:
Код:
BSET PD_ODR, #1


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 11:49 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 1248
Откуда: Китай, Пекин
axill писал(а):
... только я смотрел исключительно библиотеки на шаблонах

вот тут то и ошибка. чья то либа - это уже чей то личный опыт, возможно и бесценный, а возможно и наоборот.

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

расскажу один свой фэйл

поскольку я являюсь большим любителем парсеров и кодогенерации, залепил я однажды проект:
парсер PDF спецификацииот производителя на контроллеры, чтобы затем, на основе собранной информации - происходила кодогенерация библиотеки.

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

попробовал поработать с результатом.... не осилил.
отложил проект.
возможно ещё вернусь к нему, на другом витке эволюции.

а все потому что идеологии правильной изначально не было....


Последний раз редактировалось cheblin 31 дек 2017, 12:03, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 11:56 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5120
cheblin ваша ошибка в неприятии отличной от вашей точки зрения
все остальное уже не по теме топика

вопрос есть по теме
режим SLAVE для SPI
какой пин надо у STM8S103F3 использовать как chip select?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 12:37 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
cheblin писал(а):
рассматриваешь, рассматриваешь....мало того ещё и бабло платишь.

Покупаю у доблестных китайцев, честно скоммуниздивших :)
По крайней мере, цена иногда до 5 раз от farnell отличается...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 12:40 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
На мой взгляд, STM8 настолько просты, что ни в каких "библиотеках" нет смысла. Разве что иной раз такие макросы можно сделать для удобства чтения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 12:42 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 1248
Откуда: Китай, Пекин
Eddy_Em писал(а):
Покупаю

проприетарщина, чувак, проприетарщина... как ты низко пал! ;) а как дышал, как дышал!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 12:45 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 1248
Откуда: Китай, Пекин
Eddy_Em писал(а):
На мой взгляд, STM8 настолько просты, что ни в каких "библиотеках" нет смысла. Разве что иной раз такие макросы можно сделать для удобства чтения.

набор таких макросов как раз и называется либой, да


Последний раз редактировалось cheblin 31 дек 2017, 16:21, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 13:08 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
cheblin писал(а):
Eddy_Em писал(а):
Покупаю

проприетарщина

Не путай железо с софтом. Свободного железа, к сожалению, в природе нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 14:42 
Старожил

Зарегистрирован: 26 авг 2014, 10:34
Сообщения: 729
Eddy_Em писал(а):
Свободного железа, к сожалению, в природе нет

а как же RISC-V?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 20:36 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
И где оно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 31 дек 2017, 22:10 
Старожил

Зарегистрирован: 26 авг 2014, 10:34
Сообщения: 729
исходники на github:
https://github.com/riscv
тут народ уже клепает 32 бит микроконтроллер:
https://www.crowdsupply.com/onchip/open-v


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 01 янв 2018, 04:51 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
Лень было все листать. Там есть файлы для производства чипов? Интересно...
А еще интересно, когда наконец-то процессоры в компьютере будут хотя бы 1024-битными, а микроконтроллеры — 256-битными!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 01 янв 2018, 11:15 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 1248
Откуда: Китай, Пекин
Eddy_Em писал(а):
Лень было все листать. Там есть файлы для производства чипов? Интересно...
А еще интересно, когда наконец-то процессоры в компьютере будут хотя бы 1024-битными, а микроконтроллеры — 256-битными!

вот тогда уверенно можно будет помахать ручкой Си и асму... бай-бай...

и накатать прошивку на любимой SCALA, в функциональном стиле.... мечты!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 01 янв 2018, 11:36 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5120
По законам рынка сначала 8битки окончательно вытеснятся по цене 32битками
Тогда в более дорогом сегменте появятся 64х битки и тд
Но нафиг эти биты не нужны в embedded
Важно другое


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 01 янв 2018, 13:39 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5005
cheblin писал(а):
Eddy_Em писал(а):
Лень было все листать. Там есть файлы для производства чипов? Интересно...
А еще интересно, когда наконец-то процессоры в компьютере будут хотя бы 1024-битными, а микроконтроллеры — 256-битными!

вот тогда уверенно можно будет помахать ручкой Си и асму... бай-бай...

и накатать прошивку на любимой SCALA, в функциональном стиле.... мечты!


Нет, как всегда- осталось покрутить пальцем у виска ,
...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 01 янв 2018, 13:46 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2706
Откуда: КЧР, поселок Нижний Архыз
Ну, хоть не brainfuck или педеRust ☺


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM8 Самое начало
СообщениеДобавлено: 18 апр 2018, 14:26 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5120
вопрос

как можно заложить в прошивку несколько байт которые можно всегда однозначно считать как из памяти МК на котором выполняется код так и из области данных где лежит прошивка?
нужно для OTA

компилятор IAR


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 487 ]  На страницу Пред.  1 ... 15, 16, 17, 18, 19, 20  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB