millis(). Принцип работы.

GreenDer
Offline
Зарегистрирован: 06.09.2013

Доброго времени суток, коллеги. Может кто подскажет как работает millis()? От какого источника она тактируется?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А вам недостаточно того что это просто часы, показывающие время, которое можно в любой момент считать? ( как те, который висят на кухне). Желаете в дебри залезть? Тогда к Лешаку. ( но лучьше не тревожить его по пустякам)

Тактируются от внешнего кварца (там где он есть) или от внутреннего генератора (там где кварца нет).

GreenDer
Offline
Зарегистрирован: 06.09.2013

Меня интересует использует она каки-то прерывания или как-то иначе работает. А в дебри лезть к сожалению надо :(

DimaP.
Offline
Зарегистрирован: 21.04.2013

Функция Millis и micros использут 8 битный Т0, Данный таймер все время тикает и как натикивает 1 милли секунду или микро секунду, увеличивают переменную на 1; это как я понял принцип работы данной функции

GreenDer
Offline
Зарегистрирован: 06.09.2013

Думал есть какое-то другое решение... Ну да ладно. Спасибо :)

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Решение чего?

GreenDer
Offline
Зарегистрирован: 06.09.2013

Да это я совсем в дебри залез. Имел в виду принцип работы millis().

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

GreenDer пишет:

Думал есть какое-то другое решение... Ну да ладно. Спасибо :)

других решений в камне нету.... вот так сделали !

если вы хотите решить вашу задачу - есть и другие способы.... НО камень сделали не для ваших задач, а под общие задачи.... у вас - какая задача ? спросите по другому...

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

...перенастроите счётчик_Т0 - вылезут проблемы с миллис, с микро и с ШИМ-ом в 2-ух каналах :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

JollyBiber пишет:

Решение чего?

...примите соболезнования по поводу окончания отпуска ( пребывания в чужих землях ) :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

DimaP. пишет:

Функция Millis и micros использут 8 битный Т0, Данный таймер все время тикает и как натикивает 1 милли секунду или микро секунду, увеличивают переменную на 1; это как я понял принцип работы данной функции

...ент уж - позвольте !

это принцип работы счётчика_Т0...   а вот уж функция возвращает текущее значение счётчика от момента запуска кода... АБСОЛЮТНОЕ время в тиках....

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

SU-27-16 пишет:

...примите соболезнования по поводу окончания отпуска ( пребывания в чужих землях ) :)

Принимаю :) Но только из-за того что я не выспался.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

добрейший души человек ! некоторые - сразу ....ф...Й посылают :)

 

Привет. зёма ! давно не виделись... , где был ?

В больнице...

Чё лечил ?

Нервы...

Что-что, извини ?

ННЕЕРРВВЫЫ !!!!!!!!!!!!!!!!!!!!!!!! , БЛЯТЬ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

GreenDer
Offline
Зарегистрирован: 06.09.2013

SU-27-16 пишет:

GreenDer пишет:

Думал есть какое-то другое решение... Ну да ладно. Спасибо :)

 у вас - какая задача ? спросите по другому...

Да я тут у вас промышленным шпионажем занимаюсь :)

На самом деле я использую чистую атмегу и среду разработки Atmel Studio. В штатных библиотеках аналогов Ардуиновской millis() нет, народ на форумах либо не знает как реализовать либо умничает. Вот решил у вас поспрошать, мож знает кто.

Вроде кто-то это реализовал через прерывание от аналогового компаратора но я пока не понял как он это сделал.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

GreenDer пишет:

SU-27-16 пишет:

GreenDer пишет:

Думал есть какое-то другое решение... Ну да ладно. Спасибо :)

 у вас - какая задача ? спросите по другому...

Да я тут у вас промышленным шпионажем занимаюсь :)

На самом деле я использую чистую атмегу и среду разработки Atmel Studio. В штатных библиотеках аналогов Ардуиновской millis() нет, народ на форумах либо не знает как реализовать либо умничает. Вот решил у вас поспрошать, мож знает кто.

Вроде кто-то это реализовал через прерывание от аналогового компаратора но я пока не понял как он это сделал.

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

- выделите счётчик под ето дело ( в сетапе - его нуно обнулить )

- на его вход подайте такты с кварца - и пусть сибе считает независимо ни от чего....

- его показания ( счётчика ) всегда можно считать и перевести в размерность ВРЕМЯ

GreenDer
Offline
Зарегистрирован: 06.09.2013

Я вас понял. Всем спасибо за оказанное внимание.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

:)

MaksMS
Offline
Зарегистрирован: 11.03.2013

Нет ничего сложного вытащить исходник функции millis() из ардуино иде и использовать его в Atmel Studio..

Valentinych
Offline
Зарегистрирован: 13.08.2014

SU-27-16 пишет:
...от аналогового компаратора это сделать невозможно...
Возможно. Но потребует некоторых схемотехнических ухищрений - источника стабильного тока для заряда времязадающей емкости, и ключа для разряда этой емкости. Скорость заряда емкости и уровень срабатывания компаратора будут определять рабочую частоту. По этому принципу строится большинство аналоговых генераторов во всем диапазоне частот. Посмотрите, хотя бы, таймер NE555.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

согласен :) - возможно, но зачем МК гнобить-то ? так можно вернуться и к аналоговым умножителям....

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

SU-27-16 пишет:

согласен :) - возможно, но зачем МК гнобить-то ? так можно вернуться и к аналоговым умножителям....


В смысле костяшки на счетах перекидывать?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

абак - удобнее ! 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

SU-27-16 пишет:

абак - удобнее ! 


Не соглашусь. На счетах такт удобнее отбить.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

это у вас счёты старые..... у моих - встроенный такГенератор на 2 Гц внедрён..... НО абак - лучшеееееее ! на нём и в нарды мона поиграть.....

ATkRnr
Offline
Зарегистрирован: 22.10.2013

*ываыв

GreenDer
Offline
Зарегистрирован: 06.09.2013

MaksMS пишет:

Нет ничего сложного вытащить исходник функции millis() из ардуино иде и использовать его в Atmel Studio..

Как?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Ну там функцию millis в исходниках через поиск найти и скопировать.. Правда нужна ещё будет настройка таймеров - это тоже можно найти там же..

mihtm
Offline
Зарегистрирован: 02.09.2014
Logik
Offline
Зарегистрирован: 05.08.2014

Нету там принцыпа работы. Безпринципно всё. Тактовая идет через прескаллер, (при 16Мгц он делит на 64 при других не пробовал), и таймер 0 инкрементится каждые 4мксек. как таймер по кругу прощелкает прерывание вызвалось, и в счетчике добавилось. Причем с дробной частю милисекунды. А millis просто счетчик возвращает. Та чё там базарить - сами читайте здесь ...arduino-1.0.4\hardware\arduino\cores\arduino\wiring.c  micros() ещё и текущее состояние таймера 0 добавляет.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Могу предложить альтернативный способ отсчета временных интервалов. Например использовать ADC для этого ;) Может ТС его компаратором назвал ? Или ватч дог зарядить под эти цели. Правда и тот и другой метод имеют много большую погрешность, при условии, что процессор тактируется от кварца, но вам хотелось альтернативы :)

GreenDer
Offline
Зарегистрирован: 06.09.2013

А вот про собаку я и не думал. Всё равно без дела сидит. Надо помозговать. Спасибо.