Например TDA7294

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





Текущее время: Вт апр 16, 2024 23:52:18

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7581 ]     ... , , , 259, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пн дек 11, 2017 21:56:49 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4510
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
В юзаемых тобой 32пЫк есть же DMA?

Есть. Они и в 24-ых есть. Только я их как-то "проехал" - сразу выбрал 32-ые.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 12, 2017 18:51:47 
Нашел транзистор. Понюхал.

Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13
Сообщений: 198
Рейтинг сообщения: 0
Ну разобрался я в том коде, вывожу на 7-сегм.,что хочу, но.. Блин, автор конечно жжет.этого кода, надо было в STM8S003 с такой ничтожной памятью ОС засунуть! Обслуживание индикатора и кнопок только полпамяти занимает, я остальное своё добавил.тем более с библиотекой math.h- всё- памяти не хватает, придется отдирать 7-сегм. оттуда и убирать библу ос.
"ltkrn.h" и в майне несколько бесконечных циклов-это же ось-как я понимаю? Как у вас там у си-шников-несколько нитей чтоли.. :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 12, 2017 19:52:34 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
Блин, автор конечно жжет.этого кода, надо было в STM8S003 с такой ничтожной памятью ОС засунуть!

а что, собственно, такого? Предположу, что автору памяти вполне хватало)


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 12, 2017 20:01:59 
Нашел транзистор. Понюхал.

Карма: 5
Рейтинг сообщений: 7
Зарегистрирован: Вс дек 10, 2006 19:26:13
Сообщений: 198
Рейтинг сообщения: 0
Блин, автор конечно жжет.этого кода, надо было в STM8S003 с такой ничтожной памятью ОС засунуть!

а что, собственно, такого? Предположу, что автору памяти вполне хватало)

Ничего. просто встретил впервые ОС в МК. Автор конечно опытный и написал как знает для готовой платы своё.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт дек 21, 2017 15:40:13 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
Добрый день, подскажите пожалуйста как сделать, чтобы компилятор не ругался
warning: #188-D: enumerated type mixed with another type
Подразумеваю приведение типа или типо того)))


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт дек 21, 2017 15:57:06 
Друг Кота

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт дек 21, 2017 15:58:33 
Держит паяльник хвостом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 43
Зарегистрирован: Вс май 23, 2010 13:55:42
Сообщений: 908
Откуда: Украина, Александрия
Рейтинг сообщения: 0
Здравствуйте.

Нужно циклически сдвинуть массив типа int16_t вправо, как думаете какая из реализаций будет работать быстрее:
Код:
void reverse_arr(int16_t *arr, uint16_t size) { // развернуть массив
   uint16_t i;
   int16_t temp;

   for (i = 0; i < size / 2; i++) {
      temp = arr[i];
      arr[i] = arr[size - 1 - i];
      arr[size - 1 - i] = temp;
   }
}

void shift_arr(int16_t *arr, uint16_t shift, uint16_t size) { // циклически сдвинуть массив размером size на shift элементов
   reverse_arr(&arr[size - shift], shift);
   reverse_arr(arr, size - shift);
   reverse_arr(arr, size);
}

или
Код:
void shift_arr(int16_t *arr, uint16_t shift, uint16_t size) { // циклически сдвинуть массив размером size на shift элементов
   int16_t buf[100];   

   memcpy(buf, &arr[size - shift], shift * 2); // копируем последние елементы в буфер
   memmove(&arr[shift], arr, (size - shift) * 2); // сдвигаем
   memcpy(arr, buf, shift * 2); // копируем из буфера в начало
}


P.S. контроллер STM32 компилятор GCC, на AVR под GCC тоже интересно.

_________________
«И всё-таки она вертится!»


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

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Apparatchik писал(а):
контроллер STM32 компилятор GCC
по идее memcpy для 32-битной платформы должна активно использовать именно 32-битные пересылки, поэтому должна выигрывать у 16-битного копирования... хотя кто знает, сделано это в arm-libc или нет... да и я не в курсе, есть ли разница у ARM-ов...

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт дек 21, 2017 18:30:47 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 48
Зарегистрирован: Вт июн 17, 2014 00:34:26
Сообщений: 791
Рейтинг сообщения: 0
телепатирую: вы где-то присваиваете переменной с типом enum значение какого-то из int-ов, или наоборот.

Для чего вы вангуете?
Там это явно написано, меня интересует как убрать warning. Как дать понять компилятору, что делаю это осознано.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт дек 21, 2017 20:18:52 
Друг Кота

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт дек 21, 2017 20:19:32 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 93
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1150
Рейтинг сообщения: 0
телепатирую: вы где-то присваиваете переменной с типом enum значение какого-то из int-ов, или наоборот.

Там это явно написано, меня интересует как убрать warning. Как дать понять компилятору, что делаю это осознано.

Естественно - явно привести типы. А вы чего ожидали?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт дек 21, 2017 21:03:24 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21790
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Нужно циклически сдвинуть массив типа int16_t вправо, как думаете какая из

Стесняюсь спросить, а зачем нужно двигать массив? Вообще то принято двигать указателями....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт дек 21, 2017 23:14:00 
Держит паяльник хвостом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 43
Зарегистрирован: Вс май 23, 2010 13:55:42
Сообщений: 908
Откуда: Украина, Александрия
Рейтинг сообщения: 0
Стесняюсь спросить, а зачем нужно двигать массив? Вообще то принято двигать указателями....

В конкретном случае нужно скомпенсировать отставние тока от напряжения при измерении трансформатором тока. Тоесть имеется выборка АЦП измерений за период и нужно её сдвинуть циклически на некоторое значение как можно быстрее, даже в ущерб памяти, главное скорость (ассемблер не предлагать). Эксперементально выяснено что второй вариант работает лучше, но может есть более быстрые варианты.

_________________
«И всё-таки она вертится!»


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт дек 22, 2017 01:15:39 
Друг Кота

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт дек 22, 2017 04:04:44 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21790
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
В конкретном случае нужно скомпенсировать отставние тока от напряжения при измерении трансформатором тока.

Вам выше подтвердили мою сентенцию на этот счет.
Однако, а зачем вообще Вам нужно это фазирование тока и напряжения? Что Вы собираетесь посчитать?
У меня опять смутные подозрения на Ваш счет... :tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт дек 22, 2017 09:29:00 
Держит паяльник хвостом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 43
Зарегистрирован: Вс май 23, 2010 13:55:42
Сообщений: 908
Откуда: Украина, Александрия
Рейтинг сообщения: 0
АЦП складывает выборку в массив за период, пока складывает надо обработать предыдущую. При активной нагрузке ток немного сдвинут относительно напряжения (а не должен) из-за измерительного трансформатора, это видно как на графике так и при вычислении коофициента мощности (PF). Для компенсации индуктивности трансформатора нужно ток сдвинуть относительно напряжения. В общем зачем эти подробности? Я же сказал что уже работает и просто спросил может можно сдвинуть как то быстрее. Нет так нет.

_________________
«И всё-таки она вертится!»


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт дек 22, 2017 09:37:46 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

Добавлено after 1 minute 27 seconds:
Но вообще гоовря, вам дают верные советы: вместо сдвига буфера целиком можно обрабатывать, грубо говоря, i-ую выборку напряжения и (i+4)-ую выборку тока, вот и будет сдвиг...

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт дек 22, 2017 09:47:38 
Держит паяльник хвостом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 43
Зарегистрирован: Вс май 23, 2010 13:55:42
Сообщений: 908
Откуда: Украина, Александрия
Рейтинг сообщения: 0
то есть я угадал, предположив, что libc содержит оптимальную memcpy. тогда снова предположу, что еще быстрее сдвинуть можно при помощи DMA...

Видимо да, но она всеже копирует побайтно, для типа int16_t я размер умножил на 2.
Но вообще гоовря, вам дают верные советы: вместо сдвига буфера целиком можно обрабатывать, грубо говоря, i-ую выборку напряжения и (i+4)-ую выборку тока, вот и будет сдвиг...

Выборки две, они набираются паралельно, на 400 элементов, но одну нужно сдвинуть относительно другой, обычно на 5-6 элементов, но может менятся. Сдвинуть надо именно циклично, тоесть задние элемеенты должны оказатся с переди, это важно для следуйщих расчетов.

_________________
«И всё-таки она вертится!»


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт дек 22, 2017 10:16:22 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Apparatchik писал(а):
Выборки две, они набираются паралельно, на 400 элементов, но одну нужно сдвинуть относительно другой, обычно на 5-6 элементов, но может менятся. Сдвинуть надо именно циклично, тоесть задние элемеенты должны оказатся с переди, это важно для следуйщих расчетов.
да все понятно уже. все получается абсолютно без сдвигов
Код:
int16_t buf_U[400];
int16_t buf_I[400];

#define SDVIG    5

//обрабатываете свои буферы С УЧЕТОМ СДВИГА как-то так
uint16_t index_I=SDVIG;
int32_t sum;
for(int i=0; i<400; i++){
   sum += buf_U[i] * buf_I[index_I];
   if(++index_I >= 400) index_I = 0;
}
и не надо весь массив двигать, достаточно считывать из него со смещением.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт дек 22, 2017 10:34:20 
Держит паяльник хвостом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 43
Зарегистрирован: Вс май 23, 2010 13:55:42
Сообщений: 908
Откуда: Украина, Александрия
Рейтинг сообщения: 0
Я Вашу мысль понял, но там есче нужно после сдвига сделать вот это (только не спрашивайте зачем):
Код:
   // пишем в первую половину массива разницу между первой и второй половиной,
   for (i = max_index / 2, j = i; i < max_index; i++) {
      current[i - j] -= current[i];
   }
   // во вторую половину пишем первую с противоположным знаком
   for (i = max_index / 2, j = i; i < max_index; i++) {
      current[i] = current[i - j] * (-1);
   }

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

_________________
«И всё-таки она вертится!»


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

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


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

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


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

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


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