Например TDA7294

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

Текущее время: Чт мар 05, 2026 10:53:02

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


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



Начать новую тему Ответить на тему  [ Сообщений: 2383 ]     ... , , , 118, ,  
Автор Сообщение
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт янв 06, 2026 00:56:44 
Друг Кота
Аватар пользователя

Карма: 22
Рейтинг сообщений: 94
Зарегистрирован: Чт мар 26, 2009 04:35:04
Сообщений: 3142
Откуда: Москва
Рейтинг сообщения: 0
Спасибо, интересно :beer: :) попробую разобраться :roll:
Сейчас ещё время поджимает, надо остальное доделывать.
Я шил из Ардуины ИДЕ через юсб, просто выбрал процессор 328, а надо было 168 :)

Тут частота CLC увеличивается от 100 Гц, сначала медленно, потом быстрее и в конце просто мелькает и опять сбрасывается на 100.
Стабильность импульсов хорошая, но я уже боюсь туда ещё какую-то обработку добавлять ...

Осциллограф Fnirsi-1014D, купил специально для проекта (он будет его частью). Его ругают, но если понимать, что происходит, то вполне юзабельный. Лежу с ним и ардуинкой на диване и смотрю импульсы :)

_________________
Изображение (Аль Котоне, кот ещё тот, Cattus Sapiens)
Усы и хвост - мои документы.
Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт янв 06, 2026 11:00:51 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Это просто демонстрационный тест - все, что в loop() - образец возможных действий.
То, что достаточно для проверки макетом.
Частота меняется с шагом в 10 единиц от самой низкой к самой высокой (источник данных может быть иным, но максимум желательно не менее 100 единиц ставить или самому подумать о "разумных пределах").
ГСЧ стандартный, продвигается "по мере усвоения результата" (привязка делалась к каждому импульсу, но с учетом возможного пропуска, если обработка ГСЧ и/или задатчика частоты не успели подготовить новые данные).
Пробуйте разобрать под собственные задачи.
:wink:
Кыстати... В тексте ошибка - 20000 это максимально низкая частота, а 100 - максимально высокая.
Недосмотрел... Исправил...
:oops:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт янв 08, 2026 06:12:18 
Друг Кота
Аватар пользователя

Карма: 22
Рейтинг сообщений: 94
Зарегистрирован: Чт мар 26, 2009 04:35:04
Сообщений: 3142
Откуда: Москва
Рейтинг сообщения: 0
Нашёл, отчего у меня фронты дрыгались - от плавающей, блин, запятой -
SIDE = 1.3 - SIDE; // округление до целого числа (меняем сторону)
Лучше так сторону менять:
SIDE = abs(SIDE-1);
а ещё лучше так:
SIDE = SIDE^1;
:)

_________________
Изображение (Аль Котоне, кот ещё тот, Cattus Sapiens)
Усы и хвост - мои документы.
Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт янв 08, 2026 10:40:47 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
От дробной части можно и по другому избавиться - просто увеличить размерность до устранения "значения за запятой".
1.3 = 13 или 1300...
Также и с "минусовыми значениями" можно делать - смещая "точку нуля" на конечное значение минуса в температурной (или иной) шкале.
Это уже как удобнее. СИ снимает трахотню с математикой, но под ассемблером порой приходится поизворачиваться.
8)


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт янв 13, 2026 09:24:11 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
ОШИБКА ОДНОСТРОЧНОГО КОММЕНТАРИЯ в #DEFINE
С великим прискорбием обнаружил, что во всех моих ранее опубликованных проектах
присутствует одна и та же грубейшая ошибка -
в заголовочных файлах СИ (*.h) и файлах описания ресурсов на ассемблере
после
#define name [value]
до конца строки с этим объявлением следует однострочный комментарий...
:oops:
Странно только, что еще за все время и в проектах все работало,
и никто меня в ту ошибку носом не ткнул...
Позор старому коту...
:oops: :cry:
Однако на будущее в новых публикациях данная ошибка будет устранена
(старые уже перебрать вряд ли возможно - там
только удаление или перенос комментария на строку выше нужен)...

Собственно ошибкой (независимо от того, какой из компиляторов применяется
для СИ или компиляторы ассемблера avrasm2, c51asm, mpasm
)
считается любой из этих вариантов написания:
Код:
#define name [value] ; комментарий
#define name [value] // комментарий


в случае с СИ или avrasm2 допускается применение такого варианта
Код:
#define name [value] /* комментарий */

Приношу извинения за весьма поздно обнаруженную ошибку...
:(


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт янв 13, 2026 17:42:28 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 532
Рейтинг сообщения: 0
Ну, вообще то препроцессор, прежде чем обрабатывать дефайны, должен удалять все комментарии...
Так что
#define name [value] // комментарий
Должно работать. Во всяком случае, для GCC работает.

_________________
Белая и Пушистая


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт янв 13, 2026 18:56:40 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Ваше утверждение неверно...
При #define выполняется подстановка всех символов до конца строки.
К сожалению я на то ранее не уделил должного внимания.
А поведение реальной ошибки зависит от места применения обозначеной при помощи #define константы/макроса и того, что в ОДНОСТРОЧНОМ (//.....) комментарии за #define окажется.
А вот комментарий вида /*...... */ будет игнорироваться.
Хорошо, если выполняется без ошибок ( что до сих пор имело место)...
Собственно и для ассемблера данное правило существенно.
Даже у мпасма при его
"... любой текст после (;) трактуется как комментарий и все символы до конца строки игнорируются... "
далее следует
"... Допускаются строковые константы, содержащие (;), как комментарии они не воспринимаются... "
Единственно не путаем в avrasm2 -
там есть и #define как текстовая подстановка препроцессора и
директива .DEF для подмены имени регистров R0 - R31...
Но то уже "чисто ассемблерная" директива, подчиняющиеся правилам работы с директивами ассемблера.
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт янв 13, 2026 20:58:24 
Потрогал лапой паяльник
Аватар пользователя

Карма: 1
Рейтинг сообщений: 26
Зарегистрирован: Ср мар 09, 2016 08:07:41
Сообщений: 315
Рейтинг сообщения: 0
в стандарте Си написано что все комментарии без исключения заменяются пробелом, не только в макросах.
стандарт https://www.open-std.org/jtc1/sc22/wg14 ... /n3220.pdf глава 5.1.1.2 "фазы трансляции" пункт 3:
Цитата:
The source file is decomposed into preprocessing tokens4) and sequences of white-space
characters (including comments). A source file shall not end in a partial preprocessing token or
in a partial comment. Each comment is replaced by one space character. New-line characters
are retained. Whether each nonempty sequence of white-space characters other than new-line
is retained or replaced by one space character is implementation-defined.


ps поставьте IDE с линтером, вам такую ерунду на лету отлавливать будут.


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт янв 13, 2026 21:07:14 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 532
Рейтинг сообщения: 0
BOB51 писал(а):
Ваше утверждение неверно...
в Си - верно.
иначе бы конструкции
Код:
#define PORTC_FLAG_MASK 0x20 // тут датчик
#define PORTB_LED_PIN 0x40 // тут светодиод

...

if (PINC & PORTC_FLAG_MASK) PORTB |= PORTB_LED_PIN;
else PORTB &= ~PORTB_LED_PIN;

давали ошибку компиляции...

Но правильно говорит JackSmith, еще до препроцессора все коментарии удаляются. И это касается Си.
Если у вас асм или что то еще - нужно читать правила вашего компилятора.

_________________
Белая и Пушистая


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вт янв 13, 2026 21:34:54 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Ну в англоязычные стандарты я не заглядывал, однако в имеющихся материалах/учебной литературе практически всегда даётся предупреждение о нежелательности любых комментариев от конца необходимой для работы части строки с директивой #define.
Что по данному вопросу могут спецы по СИ добавить - было б желательно выслушать и их мнение.
Является ли то, что я выше указал критической ошибкой или нет.
К примеру от ARV или еще кого...
8)
Помимо прочего в тех же компиляторах ассемблера не всегда имеются разделители комментария, аналогичные применяемым в СИ, а вот #define (при аналогичных правилах) присутствует. Что подразумевает необходимость придерживаться одного стиля написания с соблюдением максимально возможной осторожности и внимания.
:tea:
Насчет "выполняется"...
Выше уже говорил, что несмотря на даную ошибку мои проекты работают (чему вобщем то удивлен, после перечитывания учебной литературы).
НО...
Пока выполняется простая подстановка вопросы возникать не будут (компилятор ошибку не выдаст).
А "сложные" варианты мне еще просто не попадались.
Подождем может кто из спецов по данному вопросу что то добавит.
8)
Кыстати...
Just_Fluffy
составе компилятора (тот же GCC хоть для аврстудио, хоть для адуринки) имеется множество заголовочных файлов описания ресурсов АВРок... Те же заголовочники *.h с теми же #define плюс редко, но встречающимися комментариями...
Найдите там хоть один, нарушающий те правила, что я в самом начале указал (однострочный простой комментарий после #define до конца строки).
В новой строке они имеются (до или после #define ), но в пределах строки исключительно /* комент */ ...
Авторы данных файлов тоже "перестраховались"?....
к примеру:
Вложение:
iotn13a.h [9.19 KiB]
Скачиваний: 52

Вложение:
iom328p.h [20 KiB]
Скачиваний: 48

:tea:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 11:39:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2122
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18482
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
2 копейки по поводу стандарта.

я, наверное, очень тупой и занудный, но стандарт, который в первой строке пишет "делать так недопустимо", а во второй строке "но разработчик компилятора может поступать иначе" или что-то в этом духе, называть стандартом нельзя. а стандарт Си - это полное собрание противоречий типа "нельзя, но если очень хочется - то можно".

имхо, стандарт - это средство унификации. а какая может быть унификация, если тип int по стандарту не имеет фиксированной разрядности, как и БАЙТ?! так что, не смотря на мою относительную любовь к Си, стандарт Си я не уважаю с тех пор, как попробовал его почитать...

в своё время такое же ощущение у меня вызвал стандарт ЕСКД... если кто его читал, то поймет, о чем я.

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

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


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 12:06:09 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Так все же по сути вопроса о комментарии в #define...
Или я неправильно истолковал опасность вероятной ошибки?
И только зря "перестраивался"?
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 12:57:42 
Мудрый кот

Карма: 25
Рейтинг сообщений: 499
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1872
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
С, комментарии удаляются препроцессором перед обработкой #define.

#define AAA 1000 // test value
не возникало конфликтов с различными компиляторами на разных типах MK,
напр. avr-gcc, в CCS PIC‑C Compiler, arm‑none‑eabi‑gcc, в Keil ARMCC/ARMCLANG, riscv-none-embed-gcc для RISC-V ...
Да, недавно начал писать комментарии в define на новой строке, потому что строки стали длинными :).
Но в "заводских" .h комментарии везде "длинные": #define AAA 1000 /* test value */


Последний раз редактировалось veso74 Ср янв 14, 2026 14:04:02, всего редактировалось 1 раз.

Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 13:17:26 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Так у Вас тот же пример, о коем говорится как о допустимом варианте комментария -
#define mmm nnn /* комментарий*/
А я о том, что придется изменять все "некорректные" вида
#define mmm nnn // комментарий
8)
Тут скорее вопрос последовательности обработки относительно #define...
Т. Е. если изначально делается простая текстовая подстановка символов до конца строки, а затем уже по месту применения данной подстановки происходит удаление комментария конца строки, в которой произведено применение результата подстановки - это одно.
А в случае абсолютно обязательного удаления компилятором ЛЮБОГО содержимого из последовательности символов начинающихся с // это другое.
Тогда подстановка на первом этапе уже не будет включать в себя строку комментария (но компилятор должен в сим вольной строке блокировать все, что начинается с // ) ...
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 13:38:15 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2122
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18482
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
поскольку в Си никогда на 100% нельзя быть уверенным, что там в очередной редакции стандарта и очередной версии компилятора было изменено, а так же для того, чтобы не забивать голову лишними знаниями всякой ерунды, я для себя сделал свой "стандарт", который однозначно (надеюсь) никогда не подведет:
1. во всех выражениях всегда расставлять приоритет вычислений скобками, не надеясь на приоритеты операций "по стандарту"
2. комментарии в дефайнах всегда делать /* длинными */
3. никогда не использовать "подразумевающиеся" фичи типа бесконечного цикла for(;;)
4. всегда использовать "стандартную библиотеку" вместо самодельных аналогов функций, если это технически реализуемо на выбранном МК
5. никогда не использовать типы "негарантируемого" размера (int, char и вытекающих из них), только int16_t и т.п. "гарантированные".

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

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


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 13:46:17 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Это уже больше ответ тем, кто на мое информационное сообщение с ответами подключился.
Одному отбиваться сложновато (при "уровне вредного начинающего")
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 14:03:03 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 532
Рейтинг сообщения: 0
Ну никто не запрещает писать /* длинные */ комментарии....
Возможно, это даже правильно будет с точки зрения не-Сишных компиляторов...

Спросила у нейросетки насчет однострочных комментариев в дейайнах. Вкратце:

Стандарт C и C++ допускает использование однострочных комментариев (//) внутри строк с #define. Комментарии рассматриваются препроцессором как пробелы, поэтому они не нарушают синтаксис макроса. Однако нет отдельного стандарта, который бы специально регламентировал именно комментарии внутри #define — действуют общие правила языка о том, что комментарии игнорируются компилятором.

Что говорит стандарт
- C89/C90: поддерживаются только многострочные комментарии /* ... */. Однострочные // ещё не были частью стандарта.
- C99 и новее: добавлены однострочные комментарии //. Они могут использоваться в любом месте исходного кода, включая строки препроцессора (#define, #include и т.д.).
- C++ (начиная с C++98): однострочные комментарии // всегда были частью стандарта, и также разрешены в макросах.

_________________
Белая и Пушистая


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 14:15:05 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Учитывая разнообразие стандартов и предпочтение работе как с различными версиями компиляторов СИ, так и с различными компиляторами ассемблера я таки предпочитаю позицию ARV , как наиболее универсально - безопасную.
:hunger:
Хош при том кое-где вероятно придется над редактированием поморочиться.
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 14:26:33 
Вымогатель припоя
Аватар пользователя

Карма: 10
Рейтинг сообщений: 171
Зарегистрирован: Ср июн 29, 2022 16:25:45
Сообщений: 532
Рейтинг сообщения: 0
ARV, кстати, а что вы имели ввиду под "подразумевающимися фичами" бесконечного цикла for(;;) ?
Бесконечный цикл иногда удобная штука же....
У меня иногда получается, что проще выйти из бесконечного цикла через break, нежели возиться с флагом, который проверять потом в do {} while
Правда, for(;;) для бесконечности никогда не применяла... В основном while(1) {}

_________________
Белая и Пушистая


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср янв 14, 2026 14:31:31 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15494
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Ходять слухи, что
for(,,) используется в ардуино как основа явно видимого
раздела скотча loop
:roll:


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

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


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

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


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