Секундомер на Nrf24l01+

Обсуждаем контроллеры компании Atmel.
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Секундомер на Nrf24l01+

Сообщение roman.com »

[uquote="bootooz",url="/forum/viewtopic.php?p=4283642#p4283642"]Конечно лучше писать без библиотек. Подумаю над тем чтобы всё переписать) :write: :beer:[/uquote]
Замечательная идея))
А главное что и писать ничего не надо... Всё уже давно написано (см. выше). И без глюков.
Реклама
bootooz
Родился
Сообщения: 13
Зарегистрирован: Пт авг 27, 2021 18:43:47

Re: Секундомер на Nrf24l01+

Сообщение bootooz »

Писал сообщение минут 30-40, отправил. А радио-кот решил что меня нужно разлогинить.. ‍♂️

Добавлено after 5 minutes 24 seconds:
В общем сделал синхронизацию времени между блоками.
Время считаю по прерыванию таймера с частотой 1000Гц инкрементирую глобальную переменную.

Сделал тестовый режим который стартует и финиширует автоматически через заданные интервалы времени. Результат всегда один и тот же.

Но по прошествии получаса заметно что по факту между стартом и финишем много меньше времени чем эталонное время тестового режима.

При ручном запуске секундомера, при одновременном нажатии на старт и финиш время фиксируется сильно больше чем реальный результат. При одновременном нажатии результат доходит до 1.5 секунд. Хотя тестовый режим показывает верное время..

Радиокот всю охоту отбил что-либо подробно расписывать.. :(
В общем кому интересно пообщаться - го в телеграм (@stkudryashov)
Реклама
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Секундомер на Nrf24l01+

Сообщение roman.com »

bootooz писал(а):При одновременном нажатии результат доходит до 1.5 секунд.
Какие нафиг 1.5 секунд...
:facepalm:
Nrf24l01+ передаёт пакет максимум 1.5 миллисекунды... Поэтому точность не может быть хуже 1.5 миллисекунды.
Выше код кидал.
:tea:
У меня нет телеграм.
Аватара пользователя
MLX90640
Опытный кот
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Re: Секундомер на Nrf24l01+

Сообщение MLX90640 »

А насколько точно само время отсчитывается? Могут быть пропуски прерываний или не точный осцилл тор или дедьтель таймера.
К тому же, если вы каждую миллисекунд передаёт по радиоканалу, то в зависимости от количества передаваемых байт и скорости SPI и скорости по радиоэфиру, может банально не хватать времени между посылками. Учитывая обычно низкую производительность кода под АВРку, этот вариант вполне реален.
Я бы вообще отключил подтверждение передачи/приёма, поскольку оно сильно много времени тратит на внутреннее переключение приема/передачи.

Процедура передачи PTX выглядит так:
- опустить csn и отправить команду W_TX_PAYLOAD и принять ответный байт по SPI, это будет содержимое регистрпа STATUS.
- в принятом байте проверить бит 0 (TX_FIFO_full flag)
- если этот бит = 0, можно приступить к загрузке байтов отправляемые данныхпосле загрузки поднять CSN. Если бит = 1, закрыть текущую операцию переводом CSN в высокий уровень и затем перевести в низкий и передать команду FLUSH_TX и снова закрыть CSN. Затем повторить все сначала.
- сформировать импульс CE длительностью не менее 10 мск.
CE можно держать в высоком уровне постоянно, тогда передача новой посылки начнётся сразу после загрузки пакета в TX FIFO и поднятия CSN. Этим можно сэкономить немного времени.
- Ожидать сигнала на выводе INT (переход в низкий уровень)
По получению этого сигнала отправить команду W_REGISTER с номеном регистра STATUS. Принять по SPI байт ответа.
- в этом байте прочитать биты TX_DS и MAX_RT и отправить байт с 1 в этих битах для сброса прерывания INT.

Фууух, писал с мобилы, неудобно. А ещё про приём на приемнике надо написать
Реклама
Эиком - электронные компоненты и радиодетали
bootooz
Родился
Сообщения: 13
Зарегистрирован: Пт авг 27, 2021 18:43:47

Re: Секундомер на Nrf24l01+

Сообщение bootooz »

В общем спасибо всем за помощь! Неточность времени я победил.
Проблема была в расхождении времени между 2мя микроконтроллерами т.к синхронизацию я делал один раз при старте. Теперь 3 раза в секунду синхронизирую. Теперь всё довольно точно.

Прикрепил фото устройства кому интересно)
Вложения
210CF1EC-2B13-4B97-AF18-AE0B07DC2077.jpeg
Слева направо, финиш, старт, табло.
(144.61 КБ) 68 скачиваний
Реклама
Ответить

Вернуться в «AVR»