Например TDA7294

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



Текущее время: Пт фев 26, 2021 14:16:05

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


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



Начать новую тему Ответить на тему  [ Сообщений: 6993 ]     ... , , , 348, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 29, 2020 09:27:18 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 1
Код:
const char TelMesALARM[] PROGMEM = "$9 ALARM\r\n\0";
насчёт последнего символа у меня сомнения. Вроде, должен автоматически добавлятся.


Последний раз редактировалось BlackKilkennyCat Вт дек 29, 2020 09:29:51, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 29, 2020 09:28:37 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 626
Откуда: Жуковский
Рейтинг сообщения: 4
const char TelMesALARM[] PROGMEM = "$9 ALARM\r\n";
ps так и есть. автоматически


Вернуться наверх
 
Друзья! Скоро Новый Год! Китайский! Но мы работаем и в праздники тоже!

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 29, 2020 09:39:13 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт окт 21, 2011 14:39:31
Сообщений: 159
Рейтинг сообщения: 0
Спасибо!
А как с кавычками, одинарными и двойными?


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 29, 2020 09:55:08 
Вымогатель припоя

Карма: 22
Рейтинг сообщений: 114
Зарегистрирован: Пн июн 14, 2010 13:07:29
Сообщений: 626
Откуда: Жуковский
Рейтинг сообщения: 0
я проверял под винду и линукс без PROGMEM:
const char s[] = "$9 ALARM\r\n";

ps сейчас под AVR скомпилировалось
const char s[] PROGMEM = "$9 ALARM\r\n";


Вернуться наверх
 
В поисках идеального силового ключа

Выбор полупроводникового силового ключа зависит от его свойств, стоимости жизненного цикла преобразователя, а также цели его разработки и требований к производительности. Infineon предлагает целую линейку MOSFET и IGBT с широкой запрещенной зоной (SiC и GaN), продолжая при этом работать над их усовершенствованием.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 29, 2020 10:03:26 
Собутыльник Кота

Карма: 36
Рейтинг сообщений: 798
Зарегистрирован: Ср ноя 29, 2017 06:58:50
Сообщений: 2915
Рейтинг сообщения: 0
А как с кавычками, одинарными и двойными?

Также экранировать при помощи \


Вернуться наверх
 
Запускаем новый BLE 5.2-чип BlueNRG-LP от STMicroelectronics

Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт дек 29, 2020 10:52:05 
Это не хвост, это антенна

Карма: 20
Рейтинг сообщений: 218
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 1330
Рейтинг сообщения: 0
А как с кавычками, одинарными и двойными?

На C++ можно даже так :)


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 08, 2021 19:26:52 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6801
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
[звучит гонг!]Эй, народ, хватит засорять тему про stm8, когда обсуждается чисто С.

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

Пытаюсь сделать копирование массивов с использованием ПДП...
Код:
void copy_data_dma (uint8_t * src, uint8_t * dst, uint16_t count) {

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


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 08, 2021 19:43:59 
Говорящий с текстолитом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 250
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 1519
Рейтинг сообщения: 0
А не должны ли эти указатели теперь быть ссылками на волатильные массивы, чтобы дальнейший код не подумал что там вечно нули?
Не должны. Это просто адреса буферов.


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

Карма: 1
Рейтинг сообщений: 14
Зарегистрирован: Сб сен 19, 2009 07:02:19
Сообщений: 380
Рейтинг сообщения: 0
А не должны ли эти указатели теперь быть ссылками на волатильные массивы, чтобы дальнейший код не подумал что там вечно нули?
Не должны. Это просто адреса буферов.

Указатели, как и Цезарь, никому ничего не должны... Про "волатильные массивы" Вы откуда узнали? :-D И кто такой "Дальнейший код"?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 08, 2021 20:41:06 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6801
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вот конкретный код который не работает при "whole program optimization". При "Interprocedure optimization" - вроде работает. (не работает так: при нажатии кнопки DOWN - не выходит из цикла и цвета на launchpad_Output выдаёт неверные, например вместо желтого - синий. Вернее либо черный, либо синий - надо еще проверить функцию check_color. Но почему кнопка не срабатывает? во всех остальных аналогичных местах работает )
Код:
void TestColor(void) {
    uint16_t color_array[4] = {0, 0, 0, 0};
    unsigned int i;
    t_color field_test_color;

    ColorSensorTestHSI(color_array, 1);
    while (kbdread() != KEY_DOWN) {
        field_test_color = check_color();
        copy_data_dma((uint8_t *)color_sensors, (uint8_t *)color_array, sizeof(color_array));
        switch (field_test_color) {
            case red:       LaunchPad_Output(RED); break;
            case green:     LaunchPad_Output(GREEN); break;
            case blue:      LaunchPad_Output(BLUE); break;
            case yellow:    LaunchPad_Output(RED  | GREEN); break;
            case cyan:         LaunchPad_Output(BLUE | GREEN); break;
            case magenta:   LaunchPad_Output(BLUE | RED); break;
            case white:     LaunchPad_Output(BLUE | RED | GREEN); break;
            case black:     LaunchPad_Output(0x00); break;
        }
//        for (i=0; i<4; i++) {
//            color_array[i] = color_sensors[i];
//        }
        while(dma_copy_busy) WaitForInterrupt();
        ColorSensorTestHSI(color_array, 0);
    }
    LaunchPad_Output(0);
}

Копирование через ПДП я применил взамен закоментированного фрагмента. И я опасаюсь, ай нет - ложная тревога. я там в функцию передаю указатель и данные там будут так и так.

p.s. приложил дизасм - с кнопкой криминала не вижу.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 08, 2021 21:25:53 
Прорезались зубы

Карма: 9
Рейтинг сообщений: 75
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 229
Рейтинг сообщения: 0
В
Копирование через ПДП я применил взамен закоментированного фрагмента.

Смотреть лень, но я попытаюсь :-) если Вы объясните в чем "Профит" от заряжания DMA для копирования 8-ми байтов?
Кэш включен? Если включен, он инвалидируется в функции копирования?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 08, 2021 21:59:31 
Друг Кота
Аватар пользователя

Карма: 45
Рейтинг сообщений: 1209
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 6801
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ой. не пытайтесь - не нужно. вы мне ничем не обязаны.

Похоже, что ошибка где-то в i2c коде, так как и клавиатура, и цветовой сенсор работают через эту шину. и я вижу, что при считывании зелёный канал даёт отличающиеся от других каналов данные (стабильно неменяющиеся). Так что приведенный код работает без проблем. Проблема глубже.

Добавлено after 29 minutes:
solved:
Угу. оказалась бяка - спутал волатильный указатель с указателем на волатильную переменную. Написал второе, а надо было первое.
Код:
unsigned char * volatile data_ptr;

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


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

Карма: 5
Рейтинг сообщений: 52
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 546
Откуда: Рязанская область
Рейтинг сообщения: 0
поделитесь опытом :shock:
как можно случайное число получить (желательно с примером в CodeVisionAVR)
я делаю так
speed=rand()%4+1; // случайное число от 1 до 4
speed=speed*100;
delay_ms(speed);
но видна закономерность в эффектах...

а как надо? желательно попроще и поподробнее!

в интернете пишут Использование наводок от АЦП. типа на ножку припаять маленькую антенну...
но никто толком не пишет как это программе описать CodeVisionAVR.

А ВЫ КАК ДЕЛАЕТЕ?


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

Карма: 92
Рейтинг сообщений: 1825
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15622
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я поседнее время делаю так: сразу после старта, еще до того, как выполнится код, очищающий всю статическую память переменных, делаю CRC-подсчет по всей доступной памяти, и это число использую в качестве параметра функции srand. поскольку после подачи питания память устанавливается в непредсказуемое значение, этот метод даёт неплохое начальное распределение случайных чисел - можете сами убедиться по моему плейеру эффектов: при каждом включении питания стартует случайный файл.

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


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

Карма: 25
Рейтинг сообщений: 147
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1181
Откуда: Баку
Рейтинг сообщения: 0
Можно запустить таймер на максимальную скорость и считывать значения его счётных регистров.

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


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

Карма: 28
Рейтинг сообщений: 136
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1523
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Цитата:
как можно случайное число получить (желательно с примером в CodeVisionAVR)


Я так понял, N*rand()/RAND_MAX не подходит? Почему?
Но если уж так хочется поиграться, то есть разные алгоритмы. Например, автомат Вольфрама с правилом 30 даёт отличную случайную последовательность бит.

_________________
И день и ночь в пути...
https://github.com/da-nie
https://habr.com/ru/users/da-nie/posts/


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

Карма: 5
Рейтинг сообщений: 52
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 546
Откуда: Рязанская область
Рейтинг сообщения: 0
ребята я на этой планете живу :facepalm: попроще ....

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


полностью согласен, :shock: но уровень не мой :)))
желательно попроще и поподробнее! желательно с примером в CodeVisionAVR :facepalm:


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

Карма: 92
Рейтинг сообщений: 1825
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 15622
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Serzh2000 писал(а):
желательно попроще и поподробнее!
проще некуда.
Serzh2000 писал(а):
с примером в CodeVisionAVR
а вот с этим никак, ибо использую только avr-gcc (WinAVR).

в общем и целом как-то так:
Код:
unsigned char *ptr = (void*)0;
int sum = 0;

for(int i=0; i < MAXRAM; ptr++) sum = calc_crc_1wire(sum, *ptr);

srand(sum);
MAXRAM - это максимальный адрес доступного RAM в выбраном МК, а clc_crc_1wire - это функция вычисления CRC по алгоритму 1-wire, можно и по любому иному алгоритму, но этот самый известный и в CVAVR тоже по идее должен быть в библиотеке...

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


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

Карма: 83
Рейтинг сообщений: 934
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4610
Откуда: Минск
Рейтинг сообщения: 0
Serzh2000, как уже уже сказали - чтобы rand() не работал при каждом включении одинаково, нужно прежде srand() вызывать. При каждом включении - с новым аргументом seed.
ARV для этого seed ОЗУ вычитывает. Я в одном из своих проектов при выключении записывал результат rand () в eeprom, и использовал его как seed при следующем включении.
Да и другие варианты получения нового значения seed при включении питания вполне можно придумать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 15, 2021 07:40:06 
Мучитель микросхем

Карма: 7
Рейтинг сообщений: 35
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 480
Рейтинг сообщения: 0
Я в одном из своих проектов при выключении записывал результат rand () в eeprom, и использовал его как seed при следующем включении.

Аналогично. Наиболее просто.


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

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


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

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


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

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


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