![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
ДЕЙЛ
-
Постов
776 -
Зарегистрирован
-
Посещение
-
Победитель дней
5
Сообщения, опубликованные ДЕЙЛ
-
-
14 hours ago, Harbinger said:
Ммм. Пятиминутное дело. ;) Впрочем, мне и хвалёный мной же YAT удавалось подвесить. Нашлись способы.
Так что - больше терминалов, хороших и разных.
Если нашёл способ подвесить, то напиши в той теме по ссылке.
-
Статья с описанием здесь. https://alex-exe.ru/programm/terminal-tmb/
Ничего не зависает, макросов можно наделать с запасом (до 4800). Можно настроить сценарий работы с GSM-модулем, задав команды, отправляемые в ответ на конкретные ответы модуля. Сам активно пользуюсь и развиваю его дальше при необходимости.
-
Всё нормально работает. Ошибка была при переносе проекта из одной IDE в другую.
-
Всё нормально работает. Ошибка была при переносе проекта из одной IDE в другую.
-
В контроллер залезть не могу, чтобы проследить за электронами.
-
Опубликовано · Изменено пользователем ДЕЙЛ · Пожаловаться
От функции у меня только заголовок. Исходника данной функции нет. Тут вопрос в том, почему не работает пример от производителя?
-
8 minutes ago, x893 said:
Посмотреть отладчиком
Каким отладчиком? Я в эклипсе в пошаговом режиме ловлю эту ошибку при вызове функции инициализации GAP, когда запускаю пример проекта для этой платы.
-
Модуль не работает должным образом. Что делать?
-
Несколько дней пытаюсь включить в данном контроллере режим прослушивания эфира примерно вот так:
ret = aci_gap_init(GAP_OBSERVER_ROLE, 0, 0x07, &service_handle, &dev_name_char_handle, &appearance_char_handle);
Данный режим не включается никак, ret всегда BLE_STATUS_INVALID_PARAMS ((tBleStatus)(0x42)) . Предварительно чистил используемую функцией флеш, стучал в бубен, но результата нет, при этом функция что-то меняет в памяти.
Запустил в эклипсе пример исходника BLE_Chat_Master_Slave как есть. Ничего не менял, но даже в готовом примере проекта для отладочной платы функция тоже возвращает ошибку.
В какую сторону копать нужно?
-
Опубликовано · Изменено пользователем ДЕЙЛ · Пожаловаться
-
1 minute ago, HardEgor said:
какая версия Keil и какой контроллер нужен?
4.74.0.22 Нужен BlueNRG1 от STM
-
-
Аналогичный вопрос
Обновил Segger и вижу, что нужный контроллер появился, но при создании нового проекта в кейле его не вижу. Как его добавить в кейл?
-
On 10/22/2010 at 3:00 PM, Alt.F4 said:
Я, можно сказать, гонюсь за двумя зайцами, одновременно решаю вопрос передачи больших фалов и изучаю работу с DataFlash.
Ваш ответ в той теме отбросил все вопросы! Спасибо!
Вот в этой теме можно скачать терминал для передачи файлов. Ограничение 1 МБ, но могу и больше сделать, если нужно.
-
Опубликовано · Изменено пользователем ДЕЙЛ · Пожаловаться
на этом форуме выкладываю по мере допиливания
On 12/6/2019 at 11:20 AM, Lmx2315 said:Я выводил в Terminal 1.9b на 1.5 Мбит/с текстовые сообщения лога ,байт 600 каждые несколько секунд или (в случае чп какого) килобайты, работает в непрерывном режиме днями без зависаний.
В текстовом режиме всё нормально в нём, а вот в бинарном почему-то тормозит. Причина там, на мой взгляд, в вызове функции чтения порта при появлении каждого байта.
-
Опубликовано · Изменено пользователем ДЕЙЛ · Пожаловаться
1 hour ago, mnovikov2000 said:С графиками чтото не то. Замыкание этого конденсатора не меняет усиление по пост току.
На графиках АЧХ цепи из обратной связи усилителя, а не всего усилителя. На первом графике видно, что цепь не пропускает сигнал определённой частоты. Это значит, что усилитель с такой цепью в обратной связи будет иметь максимум усиления на данной частоте. На втором графике видно, что после замыкания конденсатора цепь стала хуже пропускать низкие частоты, т.е. усилитель с такой цепью в обратной связи будет усиливать низкие частоты и ослаблять верхние. С ходу тут трудно предсказать поведение схемы, т.к. её нельзя представить в виде последовательного соединения простейших RC-цепей.
А если посмотреть проще на схему, то по постоянному току увидим обычный делитель из резисторов 2000 и 500 Ом, отсюда и ослабление на постоянном токе. На высокой частоте замкнётся конденсатор C1 и С3, в результате коэффициент передачи будет равен 1, что на графике и видно. Но опять же это всё только для отдельной цепочки. В составе усилителя эти характеристики нужно отразить снизу вверх и приподнять на коэффициент усиления, задаваемый двумя резисторами в обвязке операционника.
-
В общем случае передаточную функцию можно рассчитать по законам Кирхгова для цепей переменного тока, но это муторно.
7 minutes ago, mnovikov2000 said:Не уловил какой именно элемент замыкается?
Замыкается конденсатор С2
-
В воркбенче за чаем быстренько накидал и построил АЧХ Т-Моста и той же схемы без конденсатора. В Вашей схеме эта цепь в обратной связи усилителя, т.е. нужно перевернуть характеристику и поднять на коэффициент усиления без этой цепи. Номиналы, соответственно свои нужно поставить. По сути получится фильтр низких частот
При желании можно всю схему собрать и посмотреть результат. Программа Electronics Workbench
-
Замкнуть или разорвать?
-
23 hours ago, uk_denis said:
Если вынести объявление массива arr[10] из функции func() и сделать его глобальным, то sizeof(arr) вернёт уже размер массива arr, т.е. размер одного элемента массива * на количество элементов массива.
Если массив arr[10] объявлен в функции func(), то sizeof(arr) вернёт размер указателя на элементов массива arr.
Большие по размерам массивы не стоит объявлять внутри функции, так как локальные объекты хранятся на стеке, а размер стека не такой большой. Если надо объявить большой массив, то это будет глобальный объект или через динамическое выделение памяти в куче malloc для языка С. Работа с глобальными объектами требует меньше времени CPU, чем с объектами в куче, но нет такой гибкости как у объектов в куче. Это небольшое отступление от темы, так как рано или поздно Вы попробуете объявить большой массив на стеке.
Пример @Arlleex вернул 10, а не 4?
Проверил, тут я не прав. Вернул 10 так как sizeof применен к имени массива, хоть этот объект объявлен на стеке. Тут есть маленький нюанс, что надо передавать именно имя исходного массива в функцию sizeof. В случае передачи массива по указателю будет возвращен размер указателя.
Есть примеры использования sizeof:
Вот поэтому более универсальным способом будет заполнение массива тем способом, который я ранее предложил. Если использовать просто sizeof(arr), то при переобъявлении массива из локального в глобальный можно забыть про его заполнение в какой-нибудь функции. Хотя я сам тонкости в цитате не знал, но заполняю массив таким способом из интуитивных соображений как более универсальным и однозначным.
memset(buf_2, 0xFF, sizeof(uint8_t) * SIZE_BUF);
-
Хотя в делфях по 2 и 3 параметра есть в готовых функциях. Я морально устарел со своими представлениями.
-
Опубликовано · Изменено пользователем ДЕЙЛ · Пожаловаться
11 minutes ago, MrBearManul said:А чего не так
memset(buf_1, 0x00, sizeof(my_array));
???
Лучше перебдеть и накодить под самый тупой компилятор. my_array может восприняться как указатель на начало массива.
11 minutes ago, MrBearManul said:Вы так можете говорить только после изучения листингов компилятора. Чего он там намудрит/наоптимизирует - совершенно неочевидно без полного примера кода.
Простите, но вы разарботчиков компиляторов совсем не уважаете? Оптимизаторы нынче весьма лихие, и копирование может не понадобится. Однако, если локальная переменная, а именно таковой является аргумент функции без ссылки, меняется, то без копирования не обойтись.
Правда реальные программы координально отличаются от "Hello World".
если компилятор заинлайнит функцию?
Упрощение жизни компилятору кашу не испортит. Компиляторы не боги и тоже делают ошибки, для обхода которых иногда приходится менять код алгоритма.
12 minutes ago, MrBearManul said:В общем, изучайте стандарты языка. Тогда и говорить дальше можно будет)
Пока только 6 лет непрерывного кодинга на Си, но обязательно изучу язык!
-
Сколько способов, столько и мнений. В каждой ситуации идеальным будет компромиссное решение. Это как написать "Hello world" разными способами.
-
4 minutes ago, Arlleex said:
А Ваша структура, указатель на которую Вы хотите потом передать аргументом, память не требует?
Есть структура из 100 параметров.
При вызове функции с передачей сотни параметров все они дополнительно копируются сначала в отдельную область памяти, чтобы затем уже внутри функции можно было их оттуда прочитать.
При вызове функции с передачей указателя никакого дополнительного копирования не потребуется.
Копирование сотни параметров потребует наличия дополнительных инструкций для процессора, регистров или оперативки для буферизации и времени на копирование.
AT Command Tester и прочие
в Сотовая связь и ее приложения
Опубликовано · Пожаловаться
При передаче файлов возможно подвисание на время отправки пакетов по 64кб, а тут даже не открылось окно выбора файлов. Такой ситуации не было. Что в настройках путей к файлам прописано?