RP2040 Измерение времени менее 1 мкс

согласен, если бы мне нужна была камера онлайн к примеру я взял бы роутер с USB натянул туда OpenWRT и имел всё из коробки

А в условиях RTOS (собственно, любой ОС) измерять время с точностью выше 1 мкс - абсурдно. Единственный вид измерения, при котором точность выше 1 мкс и которые имеют хоть какой-нибудь смысл, это измерения в тактах процессора при запрещенных прерываниях. Если у CPU есть такая инструкция - хорошо, нет - в пролете.

да и с микросекундами надо уметь обращаться

volatile unsigned long M;
unsigned long M_old;
bool flag = false;
//--------
void setup()
{
  multicore_launch_core1(main2);
  Serial.begin(115200);
  while (!Serial);
}
//--------
void loop()
{
  if(!flag)  M = micros();
}
//--------
void loop2()
{
  if ((M - M_old) >= 1000000)
  {
    flag = true;
    M_old = M;
    flag = false;
    Serial.print(" M = ");
    Serial.println(M_old);
  }
}
//--------
void main2() {
  while (1) {
    loop2();
  }
}
  1. Я отвечал не в тему, а коллеге UA6EM, про использование двух ядер.
  2. Нет, ты не прав. Один из наиболее разумных и часто применяемых способов измерения интервалов времени это ТАЙМЕР в режеме “инпут капча”. Заметь, а отличии от некоторых коллег, я не написал “единственный” :wink: :wink: И этот способ НИКАК не зависит от применяемой ОС. Хоть Линукс, хоть Виндоус, хоть МасОС.
  3. Добавлю при апдейте опвета: Измерять интервалы в тактах процессора при запрещенных прерываниях можно очень не часто, обычно на очень древних архитектурах, таких как ABR, даже на ARM это уже практически невозможно из-за влияния периферии на такты задержки при выполнении команд. Не пишу: “никогда” и “все” и “всегда” :wink:

насколько я знаю вас, то вы вовсе высказываете только мнения, которые доказать не можете))) стоит спросить уверенны ли вы, так вы вовсе отмалчиваться будите, и таких тут 10ки)))

WladDrakula этот такой же…

будут факты мальчики, обращайтесь))) без скорее всего, кто то там, где то был)))
что то непонятно так спросите конкретно, указав что вас смущает, то что вам показалось там, пока вы не спросили меня как то не интересует)))
а то может оказаться что я за пин дергал всего то с этой скоростью)))

ua6em а вы не ответили на вопрос который перефразирую, вы готовы пойти на работу с зп 10 рублей за каждые 50 секунд нановремени, при условии что вы потратили достаточно времени на обучение ?)

я потратил на обучение 2112912873 секунды, мой тариф 7 т.р. за 4 часа (только это уже никому не нужно)
PS убирать картофель не предлагать

ua6em нет, это так не работает!

я предлагаю вам 10 рублей за каждые 50 наносекунд вашего времени!
при условии что вы знаете - обучались не меньше необходимого, иначе ваша зп будет меньше…

секунда 1
миллисекунды 1000
микросекунды 1000000
наносекунды 1000000000
вот таблица, а то может кто то не знает как время считать… и это не про вас…

вы согласны ? и если да, то будем считать какую зп вам платить…

А ты деньги у мамки уже выпросил? :wink:

я жеж дзен-буддист, работаю безвозмездно, то-есть задаром (даже не за доширак, правда я не знаю что это такое, тут всё время всплывает)

диявол кроется в деталях, зачем ему платить если можно заключить контракт по которому меньше 1 копейки можно платить так как он не затратил алеф нуль на обучение https://www.youtube.com/watch?v=vlIA0ujw8lI
посчитаем разницу, и выходит что я даже буду платить ему на сверхбесконечности больше, потому что я хороший, и люблю своих работников в разных смыслах))))

но у него уже чуйка развитая, не ведется зараза…

А как Вы догадались, что я американский шпион? Тут вроде не видно, что я негр и гуляю по Москве.
Ну так кто то напишет цену за которую он готов написать одну строчку кода?

ну какая одна строчка кода, косяк в коде увидел?

эх понять бы что вам нужно…
но может это просто я тупой)))

все такие, а ты думал, что какой-то особенный? )))

но вы хотя бы поняли что нужно ?)))
потому что у меня может быть наберется 10ток вариантов что пытаются сделать…
с учетом того что новичок, и просто не теми словами объясняет…

Неужели так трудно понять, что мне нужно. Нужно чтобы переменная М считывала значение таймера и это значение таймера менялось чаще чем 1 раз в 1 мкс.

if ((M - M_old) >= 1000000)

попробуйте тут пару нолей стереть… помогло ?

открой функцию микрос() и посмотри, как там регистр таймера читается читается

Т.е. денег у тебя нет, ты по обыкновению звиздишь… ))

я не понял вы меня в чем то обвиняете ?
в том что у меня нет 1 копейки ?
я вас правильно понял ?
если и вы мои сообщения поняли по своему, я не виноват)))
я должен был лишь сделать так что бы у вас потекли слюньки, и вы подписали контракт))) не знаю что вы там нафантазировали, и в чем вы меня обвиняете мне не понятно…

а вы букву ( с ) не пропустили негде ?
не подскажете мне, нубяре, какие там минимальные и максимальные циферки можно указывать ? а то вдруг нюансы есть… читать так лень… (просто хотелось бы быть уверенным что вы не от балды что то советуете))) )