Easyelectronics.ru

Электроника для всех
Текущее время: 25 апр 2018, 15:56

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



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

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

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 872
Откуда: Китай, Пекин
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
Сообщения: 2330
Откуда: КЧР, поселок Нижний Архыз
Какие шаблоны в С? Либо макросы, либо true inline.


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

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

Вот так выглядит описание пина:
Код:
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
Сообщения: 2330
Откуда: КЧР, поселок Нижний Архыз
Для STM8 вся эта фигня вообще не работает, т.к. кроме sdcc компиляторов нет. А sdcc мало того, что только С знает, так еще и оптимизации 0.


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

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

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


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

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


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

Зарегистрирован: 11 апр 2016, 18:04
Сообщения: 872
Откуда: Китай, Пекин
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
Сообщения: 872
Откуда: Китай, Пекин
Eddy_Em писал(а):
Я не рассматриваю проприетарщину.

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


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

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 4883
строка 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
Сообщения: 872
Откуда: Китай, Пекин
axill писал(а):
... только я смотрел исключительно библиотеки на шаблонах

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

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

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

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

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

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

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


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

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

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

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


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

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

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


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

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


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

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

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


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

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

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


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

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

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

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

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


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

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

а как же RISC-V?


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

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


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

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


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

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


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

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

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

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


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

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


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

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

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

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


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


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

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


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

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

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

компилятор IAR


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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