Например TDA7294

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

Текущее время: Пт янв 02, 2026 17:50:56

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


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



Начать новую тему Ответить на тему  [ Сообщений: 7703 ]     ... , , , 382, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 23:24:09 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Darkmaster писал(а):
как записать в порт, в младшие байты, не изменив старших.

Код:
tempo = (PORT & 0xF0) | (X & 0x0F); // X - младшие байты
PORT = tempo;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб июн 08, 2024 00:01:11 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн апр 02, 2012 15:56:23
Сообщений: 145
Рейтинг сообщения: 4
Но надо обязательно отметить, что такая операция неатомарна и если где-то ещё в коде изменяется порт, то рано или поздно, по закону Мёрфи, это случится именно между чтением и записью. Собственно, поэтому во многих архитектурах есть спецрегистры для записи/сброса битов. BSRR, например, на stm32. И если целевая платформа такую фичу поддерживает, следует использовать её.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб июн 08, 2024 01:16:58 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Да, верно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб июн 08, 2024 06:33:31 
Встал на лапы

Зарегистрирован: Вс окт 11, 2009 09:54:59
Сообщений: 133
Откуда: Пенза
Рейтинг сообщения: 0
Martian, azhel12, спасибо за подсказки.
оказывается недоглядел я чуток :)

_________________
Интересная,однако,штука


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт июн 13, 2024 13:20:20 
Мудрый кот

Карма: 25
Рейтинг сообщений: 494
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1832
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Есть более короткая версия данных анализа GPS из UBX-G6010? Пока декодирую только данные для часов (со множеством проверок), но хотелось бы, чтобы с более короткими выражениями.

Вадиант $GPGGA:
Код:
$GPGGA,083836.00,8888.88888,N,88888.88888,E,1,04,4.25,45.7,M,34.7,M,,*62

И какого размера должен быть буфер? Ставлю 500 для теста ( вх. UART 9600, новые данные загружаются каждые 1 секунду).
(Для всей успешно перехваченной посылки ($GPGGA, $GPGSA, $GPGSV, $GPGLL, $GPRMC ...) мне кажется это мало).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс дек 08, 2024 01:25:22 
Первый раз сказал Мяу!

Зарегистрирован: Пн мар 18, 2024 22:04:17
Сообщений: 37
Рейтинг сообщения: 0
Третьим аргументом функции GPIO_WriteBit() будет значение выражения
Код:
(i == 0) ? (i = Bit_SET) : (i = Bit_RESET)
которое при каждом вызове будет менять своё значение с Bit_SET на Bit_RESET и наоборот.
-- без учёта внешнего кода сложно сказать, что будет там происходить -- поскольку i может меняться где то еще -- а так же надо понимать, что собой представляют Bit_SET и Bit_RESET -- поскольку если ни один из них не равен нулю -- всегда будет ложь.


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

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2557
Рейтинг сообщения: 0
safocl, прошло всего-то пол года. :) Не усложняйте, там всё именно так как описано. Придумывать варианты когда не будет работать смысла нет, ибо код пишут чтобы он работал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вс дек 08, 2024 18:36:30 
Первый раз сказал Мяу!

Зарегистрирован: Пн мар 18, 2024 22:04:17
Сообщений: 37
Рейтинг сообщения: 0
VladislavS, звучит из разряда "делать надо правильно, а неправильно не делать..." -- всегда поддерживал такие направления деятельности.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 07, 2025 12:43:30 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 839
Откуда: Рязанская область
Рейтинг сообщения: 0
Код:
   //если время 00 : 00 : 30 : понедельник
   if (hour(tm)==0 && minute(tm)==0 &&  second(tm)==30 && Wday(tm)==1){

   if (tik_correc >= 3){                  //считаем недели
   //корректируем секунды прибавляя или отнимая число TIME_CORRECT (от - 5 сек. до +5 сек.)
   Now.Second = second(tm) + TIME_CORRECT;
   RTC.write(Now); tik_correc = 0;}        // запись в ds 3231
   
   else {tik_correc++;}                     // прибавляем неделю
   delay (5000);
   }


добрый день!
есть китайский ds3231 и он за четыре недели отстает на 2 секунды...
у нас в деревне раз или два точно отключается свет, соответственно переменная tik_correc обнуляется отсюда корректировка времени не получается...
в еепром запоминать нехочется, а как еще можно коректировать не завися от электричества.


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

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4900
Откуда: Минск
Рейтинг сообщения: 2
Но ведь у DS3231 есть встроенная коррекция. Почему бы не использовать её?

P.S. Я имею в виду регистр 10h (Aging offset), записывая в который число от -128 до 127, можно влиять на используемую в DS3231 температурную компенсацию.

P.P.S. viewtopic.php?p=4277377#p4277377


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

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 839
Откуда: Рязанская область
Рейтинг сообщения: 0
спасибо, не зал, я подумаю... почитаю


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 07, 2025 14:12:11 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1318
Рейтинг сообщения: 2
Человек делает коррекцию через приложение https://github.com/SergejBre/SynchroTime/


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 07, 2025 17:56:49 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 839
Откуда: Рязанская область
Рейтинг сообщения: 0
да я нашел это https://github.com/SergejBre/SynchroTim ... TC_alt.ino
почитал, но чета это для меня сложно

Добавлено after 3 hours 29 minutes 33 seconds:
https://community.alexgyver.ru/resource ... odulej.32/
у меня одна микросхема ds3231, Arduino IDE version 1.8.19
загрузил скеч synchro_RTC_MINI...
Arduino IDE version >= 1.8.13 (!Replace compilation flags from -Os to -O2);- че поменять ??? я не понял
Цитата:
Этот метод медленный, но его преимущество заключается в том, что он не требует каких-либо ручных усилий, кроме установки и считывания текущего времени. Нужно просто дать модулю спокойно поработать на полке день или два. Преимущество этого метода заключается еще в том, что часы проходят несколько дневных и ночных циклов, где они подвержены суточным колебаниям температуры. И поэтому этот метод помогает лучше спрогнозировать долгосрочную стабильность часов.

разжуйте пожалуйста я не очень понимаю
не пойму типа в регистр 10h Aging offset записалось число и дальше не парится...
или при каждом считывании времени записывать в регистр 10h Aging offset переменную которая сохранилась в регистрах Alarm1
Цитата:
сохранение параметров и калибровочных данных в регистрах Alarm1 (DS3231);



СпойлерИзображение


Вложения:
synchro_RTC_MINI.rar [4.8 KiB]
Скачиваний: 48
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 07, 2025 19:04:24 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2927
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18895
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Serzh2000 писал(а):
в регистр 10h Aging offset записалось число и дальше не парится
не париться, пока на 3231 есть питание.
исчезнет питание - все регистры сбросятся.

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


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

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 839
Откуда: Рязанская область
Рейтинг сообщения: 0
ds 3231 при пропадании внешнего питания,
питается от резервного (батарейка)

Добавлено after 12 minutes 16 seconds:
попробую сформулировать вопрос
я не пойму : узнав это число после 2-3 дней и записав его в регистрах Alarm1 (DS3231)
при пропадании света в void setup () снова запишу в регистр 10h Aging offset и больше в коде ничего не нужно делать все с корректируется?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 07, 2025 19:38:45 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4900
Откуда: Минск
Рейтинг сообщения: 2
Если резервная батарейка стоит, то ничего больше делать не надо. Один раз записать - и всё.

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


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

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 839
Откуда: Рязанская область
Рейтинг сообщения: 0
Цитата:
А эта программка всего лишь позволяет за пару-тройку дней без лишних телодвижений выяснить

какая-то хрень, у меня Windows 10 64-bit и постоянно обрывается связь. ( пишут только с Linux нет проблем)...
Цитата:
Но ничто не мешает и самому эту поправку вычислить. Скажем, сегодня выставить в 0, а через 10 дней непрерывной работы часов посмотреть, на сколько секунд ушло и посчитать необходимое значение.

пожалуйста чуть чуть по подробнее :shock: что выставить и чего посмотреть ( прошу прощения для ВАС белый день для меня темный лес) :oops:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 07, 2025 22:09:08 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2927
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18895
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Serzh2000, а ты никогда не задумывался, что может пропасть не только внешнее питание, но и питание от батарейки?

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт янв 07, 2025 22:21:33 
Опытный кот
Аватар пользователя

Карма: 11
Рейтинг сообщений: 79
Зарегистрирован: Пт фев 27, 2015 12:00:53
Сообщений: 839
Откуда: Рязанская область
Рейтинг сообщения: 0
тык думал поэтому писал выше
Цитата:
в void setup () снова запишу в регистр 10h Aging offset


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

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4900
Откуда: Минск
Рейтинг сообщения: 2
пожалуйста чуть чуть по подробнее :shock: что выставить и чего посмотреть ( прошу прощения для ВАС белый день для меня темный лес) :oops:

Выставляете значение коррекции 0 и в течение нескольких дней наблюдаете за ходом часов. Выясняете, спешат или отстают часы и на сколько. После этого разово устанавливаете новое значение коррекции, чтобы компенсировать этот уход.

По даташиту, "At +25°C, one LSB typically provides about 0.1ppm change in frequency."

То есть изменение на единицу значения коррекции даёт изменение количества импульсов в минуту на 0.1. В сутки это даст компенсацию в 0,1 / (32768 * 60) * (60 * 60 * 24) = 0,0044 секунды.

Получается, значения от -128 до +127 позволяют скомпенсировать суточный уход вплоть до ±0,55 секунды (0,0044*127).

Если я всё правильно посчитал и нигде не ошибся...

P.S. Если у Вас за четыре недели часы отстают на 2 секунды, получается:

2 сек за 28 дней => 2/28 = 0.0714 сек за сутки => 0.0714/0.0044 = 16.

Теперь, если записать "-16" в регистр "Aging Offset", часы должны соответствующим образом ускориться.


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

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


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

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


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

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


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