Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 07:10:14

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7581 ]     ... , , , 263, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 23, 2018 14:30:54 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
А как, по Вашему, без скобок различить buf[3][2] и buf[2][3]? Естественно, смысл их как раз в этом.

Спойлер
Код:
uint8_t buf[4][2][3][5] = {   //    4 группы
  {                           // по 2 группы
    {                         // по 3 группы
      {43, 122, 43, 81, 28},  // по 5 элементов uint8_t
      {46, 553, 21, 35, 67},
      {42, 169, 60, 31, 98},
    },
    {
      {74, 296, 43, 62, 28},
      {54, 323, 21, 33, 89},
      {45, 787, 21, 17, 90},
    },
  },
  {
    {
      {84, 122, 43, 81, 28},
      {74, 553, 21, 35, 67},
      {84, 169, 60, 31, 98},
    },
    {
      {87, 26, 43, 69, 28},
      {95, 33, 21, 32, 89},
      {04, 77, 21, 18, 90},
    },
  },
  {
    {
      {84, 12, 43, 82, 28},
      {74, 53, 21, 35, 67},
      {84, 19, 60, 36, 98},
    },
    {
      {95, 33, 21, 32, 89},
      {87, 26, 43, 69, 28},
      {24, 77, 21, 18, 90},
    },
  },
  {
    {
      {84, 19, 60, 36, 98},
      {84, 12, 43, 82, 28},
      {74, 53, 21, 35, 67},
    },
    {
      {87, 26, 43, 69, 28},
      {04, 77, 21, 18, 90},
      {95, 33, 21, 32, 89},
    },
  },
};


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 23, 2018 20:27:19 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Доброго времени суток. Раньше жил - не тужил, именовал константы с помощью дефайнов и горя не знал. Сегодня вычитал, что это неправильно, так делают лузеры, и им потом девушки не дают... Надо исправляться :))) Итак, было:
Код:
#define DEFAULT 100;

Далее в EEPROM объявляется переменная с этим значением:
Код:
unsigned char EEMEM mode      = DEFAULT;

И все чудесно работает.
Переделал так:
Код:
const   unsigned    char   DEFAULT   = 100;

Теперь на строчку с объявлением переменной в EEPROM ругается "error: initializer element is not constant". Компилятор GCC. Что я сделал не так ?
Если что, 5 правило отсюда http://chipenable.ru/index.php/embedded ... rules.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 23, 2018 20:48:32 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Пока_без_кота писал(а):
Раньше жил - не тужил, именовал константы с помощью дефайнов и горя не знал. Сегодня вычитал, что это неправильно, так делают лузеры, и им потом девушки не дают...
не читайте глупости
Пока_без_кота писал(а):
Переделал так:
вы объявили переменную, которая по умолчанию получает значение 100 и не может быть изменена в дальнейшем.
Пока_без_кота писал(а):
Теперь на строчку с объявлением переменной в EEPROM ругается
и правильно делает, так как на этапе компиляции переменные не доступны.

верните, как было, и не парьте мозг

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

Мой уютный бложик... заходите!


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 23, 2018 22:00:23 
Потрогал лапой паяльник

Карма: 1
Рейтинг сообщений: 13
Зарегистрирован: Чт авг 08, 2013 01:06:54
Сообщений: 359
Рейтинг сообщения: 0
Спасибо :beer:


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 23, 2018 22:23:40 
Грызет канифоль
Аватар пользователя

Карма: -2
Рейтинг сообщений: 43
Зарегистрирован: Ср янв 17, 2018 13:09:14
Сообщений: 250
Рейтинг сообщения: 0
ARV писал(а):
не читайте глупости

Полностью согласен.

Не извращайтесь, спокойно пользуйтесь #define и дальше :) Только желательно явно указывать тип:
Код:
#define DEFAULT (unsigned char)100;


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 24, 2018 07:06:48 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
AndyBig писал(а):
Только желательно явно указывать тип
для констант, укладывющихся в int, не обязательно, а для больших - присоединяюсь к рекомендации.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 24, 2018 14:58:02 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
Теперь на строчку с объявлением переменной в EEPROM ругается "error: initializer element is not constant". Компилятор GCC. Что я сделал не так ?

из стандарта:
Цитата:
All the expressions in an initializer for an object that has static storage duration shall be constant expressions or string literals.

так, к примеру, вполне корректно:
Код:
static const unsigned int DEF=100;

int main(){
    volatile unsigned int def = DEF;
    return 0;
}


Если что, 5 правило отсюда http://chipenable.ru/index.php/embedded ... rules.html

вообще там все разумно, но стоит добавить "где это возможно". И компилятор должен быть достаточно мозговитый и со включенными оптимизациями - иначе под эту константу-переменную (она с точки зрения языка таки переменная с неизменным значением) выделится память.
вот тот кусочек кода, gcc с разной оптимизацией
-O0
Спойлер
Код:
arkhnchul@tween-arkhost:/tmp/ctst$ gcc -O0 -S -c tst1.c -o -
   .file   "tst1.c"
   .section   .rodata
   .align 4
   .type   DEF, @object
   .size   DEF, 4
DEF:
   .long   100
   .text
   .globl   main
   .type   main, @function
main:
.LFB0:
   .cfi_startproc
   pushq   %rbp
   .cfi_def_cfa_offset 16
   .cfi_offset 6, -16
   movq   %rsp, %rbp
   .cfi_def_cfa_register 6
   movl   $100, %eax
   movl   %eax, -4(%rbp)
   movl   $0, %eax
   popq   %rbp
   .cfi_def_cfa 7, 8
   ret
   .cfi_endproc
.LFE0:
   .size   main, .-main
   .ident   "GCC: (Debian 7.2.0-19) 7.2.0"
   .section   .note.GNU-stack,"",@progbits

-O1
Спойлер
Код:
arkhnchul@tween-arkhost:/tmp/ctst$ gcc -O1 -S -c tst1.c -o -
   .file   "tst1.c"
   .text
   .globl   main
   .type   main, @function
main:
.LFB0:
   .cfi_startproc
   movl   $100, -4(%rsp)
   movl   $0, %eax
   ret
   .cfi_endproc
.LFE0:
   .size   main, .-main
   .ident   "GCC: (Debian 7.2.0-19) 7.2.0"
   .section   .note.GNU-stack,"",@progbits

т.е. нужно хотя бы O1


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс янв 28, 2018 13:25:13 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20
Сообщений: 1132
Откуда: Новосибирск
Рейтинг сообщения: 0
Подскажите, что значит эта запить?

Вообще то тут пытались инициализировать двумерный массив вот только с ошибками, надо было сделать так:
Код:
uint8_t buf [3][2] = {
{12 , 18},
{11, 28},
{13, 15}
};

:)


Вот еще пример
Код:
static const registerSetting_t preferredSettings[]=
{
  {CC1101_IOCFG0,      0x06},
  {CC1101_FIFOTHR,     0x47},
  {CC1101_SYNC1,       0x7A},
  {CC1101_SYNC0,       0x0E},
  {CC1101_PKTLEN,      0x14},
  {CC1101_PKTCTRL0,    0x05},
  {CC1101_FSCTRL1,     0x06},
  {CC1101_FREQ2,       0x21},
  {CC1101_FREQ1,       0x62},
  {CC1101_FREQ0,       0x76},
  {CC1101_MDMCFG4,     0xCA},
  {CC1101_MDMCFG3,     0xF8},
  {CC1101_MDMCFG2,     0x16},
  {CC1101_DEVIATN,     0x40},
  {CC1101_MCSM0,       0x18},
  {CC1101_FOCCFG,      0x16},
  {CC1101_AGCCTRL2,    0x43},
  {CC1101_AGCCTRL1,    0x49},
  {CC1101_WORCTRL,     0xFB},
  {CC1101_FSCAL3,      0xE9},
  {CC1101_FSCAL2,      0x2A},
  {CC1101_FSCAL1,      0x00},
  {CC1101_FSCAL0,      0x1F},
  {CC1101_TEST2,       0x81},
  {CC1101_TEST1,       0x35},
  {CC1101_TEST0,       0x09},
};

Видимо по четным индексам идет адрес, по не четным - значение. Скобки для удобства чтения кода. Вроде так.

_________________
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс янв 28, 2018 13:39:17 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 1368
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7214
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вероятнее всего, что тип registerSetting_t состоит из двух элементов. Был бы int - было бы сообщение об ошибке. не?

_________________
А люди посмотрят и скажут: "Собаки летят. Вот и осень."


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс янв 28, 2018 16:17:18 
Сверлит текстолит когтями
Аватар пользователя

Карма: 4
Рейтинг сообщений: 10
Зарегистрирован: Пт фев 16, 2007 14:18:20
Сообщений: 1132
Откуда: Новосибирск
Рейтинг сообщения: 0
Не могу разкурочить этот тип. Это выдал кодогенератора, мол заготовка. Определение этого типа нет.

_________________
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс янв 28, 2018 19:27:18 
Потрогал лапой паяльник
Аватар пользователя

Карма: 20
Рейтинг сообщений: 121
Зарегистрирован: Вс янв 19, 2014 22:41:55
Сообщений: 353
Рейтинг сообщения: 0
Это выдал кодогенератора, мол заготовка. Определение этого типа нет.

Если код собирается - его не может не быть. Гляньте в препроцессорный выхлоп - возможно для этого придётся включить временно опцию preprocess only в настройках проекта. В папочке с временными файлами компиляции загляните в разные типы - они или *.i или *.pre, иногда вместо объектников - у разных тулчейнов по разному.

_________________
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:17:06 
Прорезались зубы

Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13
Сообщений: 202
Рейтинг сообщения: 0
Почему переменная, обьявленная как unsigned char уходит на минус?
Код:
unsigned char x;

if(x<0) x=0; // так компилятор ругается

if(x<=0) x=0; // уходит на минус

if(x==0) x=0; // тоже уходит на минус

if(x<1) x=0;   // тоже уходит на минус


Это в IAR для ARM.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:20:19 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Почему переменная, обьявленная как unsigned char уходит на минус?

Как переменная, обьявленная как unsigned char, может уйти на минус?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:21:42 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Что значит "уходит в минус"?
Ну и напоминаю: по умолчанию все операнды выражения автоматически приводятся к int (или к типу более "широкого" операнда). поэтому при сравнении x с 1 и переменная х, и константа 1 становятся ЗНАКОВЫМИ. со всеми вытекающими.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:22:41 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
что значит "уходит на минус"?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:24:04 
Прорезались зубы

Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13
Сообщений: 202
Рейтинг сообщения: 0
Забыл написать, уходит на минус при
x--;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:25:54 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
dm211 писал(а):
уходит на минус при
x--;
и в каком месте вашего вопроса это происходит?

беззнаковая переменная у вас не уходит в минус, она становится наоборот, слишком большой :)))

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:27:03 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
еще раз: что вы называете "уходит на минус"?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:27:34 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Забыл написать, уходит на минус при
x--;

Ты понимаешь что такое беззнаковая переменная? Если она равно 0 и отнять 1, то получим 255.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт фев 15, 2018 14:29:20 
Прорезались зубы

Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13
Сообщений: 202
Рейтинг сообщения: 0
Ну на табло у меня минус показывает :oops: sprintf
А я хочу, чтобы ниже нуля был ноль, тогда вопрос-что делать?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7581 ]     ... , , , 263, , , ...  

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


Кто сейчас на форуме

Сейчас этот форум просматривают: Pjatruha@mail.ru и гости: 16


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y