Easyelectronics.ru

Электроника для всех
Текущее время: 03 июл 2020, 16:24

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 407 ]  На страницу Пред.  1 ... 10, 11, 12, 13, 14, 15, 16, 17  След.
Автор Сообщение
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 25 сен 2017, 13:12 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5354
таймер используется и на прием и на передачу
идеальная частота переполнения таймера для передачи равна удвоенному бит рейту, т.е. за один бит два перепполнения
исходя отсюда при приеме с тем же битрейтом происходит два переполнения

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 02 окт 2017, 02:34 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5354
подскажите с описанием шаблона для GPIO для STM320
Keil

вот так ошибка:
Код:
   template <GPIO_TypeDef* gpio>
      class PortClass {
      };
      
   typedef PortClass<GPIOA> pa;


надо как то в шаблон передать адреса управляющих регистров
GPIOA описан как

Код:
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)


а структура:

Код:
typedef struct
{
  __IO uint32_t MODER;        /*!< GPIO port mode register,                     Address offset: 0x00      */
  __IO uint32_t OTYPER;       /*!< GPIO port output type register,              Address offset: 0x04      */
  __IO uint32_t OSPEEDR;      /*!< GPIO port output speed register,             Address offset: 0x08      */
  __IO uint32_t PUPDR;        /*!< GPIO port pull-up/pull-down register,        Address offset: 0x0C      */
  __IO uint32_t IDR;          /*!< GPIO port input data register,               Address offset: 0x10      */
  __IO uint32_t ODR;          /*!< GPIO port output data register,              Address offset: 0x14      */
  __IO uint32_t BSRR;         /*!< GPIO port bit set/reset register,      Address offset: 0x1A */
  __IO uint32_t LCKR;         /*!< GPIO port configuration lock register,       Address offset: 0x1C      */
  __IO uint32_t AFR[2];       /*!< GPIO alternate function low register,  Address offset: 0x20-0x24 */
  __IO uint32_t BRR;          /*!< GPIO bit reset register,                     Address offset: 0x28      */
} GPIO_TypeDef;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 02 окт 2017, 03:07 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1204
axill писал(а):
подскажите с описанием шаблона для GPIO для STM320

Несколько страниц назад я приводил пример.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 02 окт 2017, 09:18 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5877
Reflector, выложи плиз hex своего примера , что нибудь не особо большое.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 02 окт 2017, 09:55 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5354
Reflector писал(а):
Несколько страниц назад я приводил пример.

Это там где адрес передается как uint32_t?
Вчера в ночи именно так и написал, мне показалось это не очень изящным)
Но работает


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 13:06 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1204
axill писал(а):
Это там где адрес передается как uint32_t?
Вчера в ночи именно так и написал, мне показалось это не очень изящным)

Да я не спорю, но передавать можно адреса переменных, которые, в данном случае, отсутствуют.

ps. Вышло второе издание C++ Templates. The Complete Guide, единственная книга такого масштаба в которой рассматриваются шаблоны с точки зрения новых стандартов С++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 13:58 
Заглядывает иногда

Зарегистрирован: 16 окт 2013, 20:15
Сообщения: 170
Откуда: Екатеринбург
Reflector писал(а):
ps. Вышло второе издание C++ Templates. The Complete Guide, единственная книга такого масштаба в которой рассматриваются шаблоны с точки зрения новых стандартов С++.

Прямо на блюдечке, да с голубой каёмочкой :-). Спасибо Вам!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 15:06 
Старожил

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 15:45 
Старожил

Зарегистрирован: 17 сен 2013, 13:53
Сообщения: 3313
axill писал(а):
спасибо за книгу


Присоединяюсь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 16:43 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2471
fr0ster писал(а):
axill писал(а):
спасибо за книгу

Присоединяюсь

Тоже присоединяюсь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 16:44 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2471
Кстати, раз уж речь идет о кросс-платформенной либе: кто-нибудь смотрел xpcc?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 17:11 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5354
evsi писал(а):
Кстати, раз уж речь идет о кросс-платформенной либе: кто-нибудь смотрел xpcc?

спасибо за ссылку
идея проекта очень похожа на то, что я делаю

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

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

подозреваю, что именно замах на универсализацию не позволил xpcc реализовать более сложные вещи, например у них напрочь отсутствует поддержка таймеров

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 17:20 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5354
мой пример
он задумывался как кросс платформенный, но доведен до ума только для AVR
однако смысл виден

Show


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 19:36 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1204
axill писал(а):
мой пример
он задумывался как кросс платформенный, но доведен до ума только для AVR
однако смысл виден

А зачем ты столько typedef используешь? Почему не писать сразу так?

Код:
UART0<mcu, 9600, 8, 4>   uart0;

int main(void)
{
    uart0.Init();
    ....
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 21:27 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5354
использую typedef, чтобы не объявлять экземпляр класса который для полностью static реализации не нужен
Конечно спорный момент, при отсутствии не static данных по идее должно быть все одно
Так?
Опять же Init можно вызвать прямо в конструкторе
Но стоит ли обьявлять экземпляр если он не нужен?

В примерах xpcc кстати тоже typedef


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 22:00 
Только пришел

Зарегистрирован: 03 сен 2017, 22:47
Сообщения: 26
Для работы с USART (ATtiny2313) у меня дополнительно используется параметр "допустимый процент погрешности скорости передачи" (например при частоте 8 МГц на скорости 115200 погрешность будет составлять минус 3,5%).

Пример конфигурации:

typedef TUSART_Async < 4, 115200, 8, 0, 1 > Usart;

// 4 - допустиый процент ошибки скорости передачи (зависит от тактовой частоты, см. system.h)
// 115200 - скорость передачи
// 8 - количество бит данных
// 0 - нет чётности
// 1 - количество стоп-бит

может вам пригодится для своей библиотеки (компилятор iar)

p.s. это черновой вариант


Вложения:
uC_cpp.7z [26.66 Кб]
Скачиваний: 77
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 22:23 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1204
axill писал(а):
использую typedef, чтобы не объявлять экземпляр класса который для полностью static реализации не нужен
Конечно спорный момент, при отсутствии не static данных по идее должно быть все одно
Так?

Если данные только статические, то все равно, если не только, то все равно придется создавать экземпляр класса. Typedef(using) иногда полезен, например, если один шаблонный класс нужно передать как параметр в другой.

Цитата:
Опять же Init можно вызвать прямо в конструкторе
Но стоит ли обьявлять экземпляр если он не нужен?

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

Цитата:
В примерах xpcc кстати тоже typedef

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 23:35 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5877
technik-1017, плюсы на тини??!!! Да вы извращенец батенька, прямо таки изнасиловали малышку...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 23:43 
Только пришел

Зарегистрирован: 03 сен 2017, 22:47
Сообщения: 26
to dosikus_2

вы не понимаете о чём говорите

почитайте это
http://easyelectronics.ru/rabota-s-port ... na-si.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 23:48 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5877
Да что я , вы свою писанину а особливо асмовский листинг вывалите адептам авр . Вас незамедлительно предадут анафеме.
Вот уж воистину -авр это диагноз, а авр +писюк ==маразм.

А кто вам сказал что надо за всяким ****" подражать?
У вас как я погляжу своего мнения нуль...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 23:53 
Старожил

Зарегистрирован: 20 мар 2013, 11:27
Сообщения: 5354
dosikus_2 писал(а):
technik-1017, плюсы на тини??!!! Да вы извращенец батенька, прямо таки изнасиловали малышку...

Это вы зря
Переписал для теста програмку для тини13 с Си на С++ с шаблонами
Получилось лучше по гибкости, столько же оперативки и на два десятка байт больше флэш

В этой теме могли видеть мои сомнения выше как у вас, но они не оправдались

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 23:56 
Только пришел

Зарегистрирован: 03 сен 2017, 22:47
Сообщения: 26
т.е. мы и читать не хотим (так бы увидели что подходы у нас абсолютно разные, да уровень у меня ниже)

вот листинг ассемблерный


Вложения:
List.7z [2.29 Кб]
Скачиваний: 78
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 23:58 
Только пришел

Зарегистрирован: 03 сен 2017, 22:47
Сообщения: 26
axill не втягивайтесь особо в разговор с dosikus_2, у него на всех сайтах грубая манера общения, только его мнение верное


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 03 окт 2017, 23:59 
Старожил
Аватара пользователя

Зарегистрирован: 04 окт 2011, 10:19
Сообщения: 2025
Такое чувство, что дальше описания ног и моргания лампочкой шаблоны не идут.
Ещё вот UART попался.
А где I2C/ADC/DAC/SPI/I2S c/без IRQ/DMA/Polling.
Какие процессоры поддерживаются в прекрасном мире шаблонизации ?
Ссылка на статью 2010 конечно сильный аргумент, но что-то на github народ по старинке строчит, и не сильно рвется в мир типизации/шаблонизации для управления железом.
Для алгоритмов ещё могу понять С++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Унифицированная кросс-платформенная библиотека Си
СообщениеДобавлено: 04 окт 2017, 00:02 
Только пришел

Зарегистрирован: 03 сен 2017, 22:47
Сообщения: 26
да, сильно не распространено пока, но и переход с ассемблера на Си для многих не приемлем


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


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


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

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


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

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

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