Таймера atmega328p

NikiMikh
Offline
Зарегистрирован: 29.08.2022

Всем добрый день.

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

На первый взгляд я подумал, что задача легкая, но как всегда вылезли подводные камни, которые я пока не понимаю как сдвинуть.

Для беспрерывного считывания я использовал первончально фри ран мод и меня это устраивало до тех пор, пока не встала задача отправлять данные раз в 50мкс. Я просто хотел использовать millis(), но как я понял, когда перенастраиваешь биты для фри ран мода, можно забыть про millis(). 

Немного покопавшись в интернете я нашел библиотеку GyverTimers. По описанию я подумал, что это решение подойдет, но или я что-то не так пишу или библиотека не предназначена для моих целей. Проблема в том, что я запускаю 2 таймера с периодом в 5мкс и 50мкс, по отдельности они работают, но вместе уже не могут, работает последний таймер, который прописан в коде.

Решил покопаться в даташите atmega328p, но перенастройкой таймеров я никогда не занимался и испытываю сложность с настройкой.

Можете подсказать куда копать/ что почитать/ дать совет?

 

rkit
Offline
Зарегистрирован: 23.11.2016

В даташите всё есть.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

У atmega328 целых три таймера...

NikiMikh
Offline
Зарегистрирован: 29.08.2022

Удивительно, что так не отвечают под всеми ветками форму ;-)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

так микро или милли?

NikiMikh
Offline
Зарегистрирован: 29.08.2022

ua6em пишет:

так микро или милли?

 

мили =)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

NikiMikh пишет:

ua6em пишет:

так микро или милли?

мили =)

показывай код

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Ты спрашивал, что почитать?  Универсальный ответ (и правильный) - datasheet.  Там самая точная и полная информация. 

Upper
Offline
Зарегистрирован: 23.06.2020

NikiMikh пишет:

Я просто хотел использовать millis(), но как я понял, когда перенастраиваешь биты для фри ран мода, можно забыть про millis(). 

Насколько я знаю, одно другому не мешает.
Или имеется в виду "забыть" потому, что становится не целесообразным использовать millis() ?

b707
Offline
Зарегистрирован: 26.05.2017

NikiMikh пишет:

Проблема в том, что я запускаю 2 таймера с периодом в 5мкс и 50мкс, по отдельности они работают, но вместе уже не могут, работает последний таймер, который прописан в коде.

 

а зачем их два? Если период таймеров кратен друг другу - запускай более частый и в нем заведи счетчик. Как отсчитал 10 раз по 5 мс - значит прошло 50

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

NikiMikh пишет:
нашел библиотеку GyverTimers

Которая сделана на тех же самых миллис, про которые можно забыть?

NikiMikh пишет:
Проблема в том, что я запускаю 2 таймера с периодом в 5мкс и 50мкс, по отдельности они работают, но вместе уже не могут

Это к автору - https://community.alexgyver.ru/

NikiMikh пишет:
перенастройкой таймеров я никогда не занимался и испытываю сложность с настройкой

Неприятно слышать.

NikiMikh пишет:
Можете подсказать куда копать/ что почитать/ дать совет?

Ну, читать даташит. А если хотите задавать вопросы, то приводите Ваш код и задавайте вопросы по нему.

И вообще, почитайте первую тему в разделе "Песочница" - там написано как правильно вопросы задавать.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

 А если хотите задавать вопросы, то приводите Ваш код и задавайте вопросы по нему.

"ишь, петь хотели заставить" )))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

NikiMikh, то, что написано в заглавном сообщении темы, вряд ли реализуемо на atmega 328. Даже если какую-то часть удастся реализовать, придется забыть о том, чтобы "найти библиотеку" - все придется писать самому. Ну не работает Ардуина на тех скоростях, которые Вы хотите. И то, что таймеры якобы не работают, - скорее всего, они просто не успевают.

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

Ну либо взять контроллер помощнее, например, BluePill.

Green
Offline
Зарегистрирован: 01.10.2015

О чём можно говорить, если человек путает мс с мкс!

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Green пишет:

О чём можно говорить, если человек путает мс с мкс!

Да, на МКС такие грибы не растут, не успевают вырасти ))))

NikiMikh
Offline
Зарегистрирован: 29.08.2022

Green пишет:

О чём можно говорить, если человек путает мс с мкс!

 

Так не говорите ничего и не пишите. Проблема в чем? 

NikiMikh
Offline
Зарегистрирован: 29.08.2022

ЕвгенийП пишет:

Ну, читать даташит. А если хотите задавать вопросы, то приводите Ваш код и задавайте вопросы по нему.

И вообще, почитайте первую тему в разделе "Песочница" - там написано как правильно вопросы задавать.

 

Хорошо, спасибо

Green
Offline
Зарегистрирован: 01.10.2015

NikiMikh пишет:

Green пишет:

О чём можно говорить, если человек путает мс с мкс!

 

Так не говорите ничего и не пишите. Проблема в чем? 


Проблема не у меня. Проблема у вас. Вы ведь не можете разобраться и просите помощи.
При этом не можете сформулировать что вам надо.

NikiMikh пишет:

ua6em пишет:

так микро или милли?

 

мили =)

NikiMikh
Offline
Зарегистрирован: 29.08.2022

Green пишет:

 

Проблема не у меня. Проблема у вас. Вы ведь не можете разобраться и просите помощи.
При этом не можете сформулировать что вам надо.

 

У меня проблем нет, адекватный человек заметил, что я допустил опечатку и спросил, а не язвил как ребенок. 

-NMi-
Offline
Зарегистрирован: 20.08.2018

Выкинь к чертям дурдуину! У тебя ТРИ таймера + таймер на адс фрееран + вачдоговский таймер! Неужели для такой простой задачи тебе не хватает ПЯТИ таймеров??? )))))))))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

у мня есть таймеры, полнО. Спроси меня как. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

у мня есть таймеры, полнО. Спроси меня как. 

а я хотел сразу предложить, да ты молчишь, ну думаю и я промолчу...