Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 18 из 18
  1. #11
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Глупый вопрос по ардуино

    millis обнуляется через 50 дней беспрерывной работы
    Если сработал WatchDog Timer то все регистры обнуляются, потому что происходит сброс контроллера.

  2. #12
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    193

    По умолчанию Re: Глупый вопрос по ардуино

    Цитата Сообщение от Chip Посмотреть сообщение
    millis обнуляется через 50 дней беспрерывной работы
    Это я прочитал. А что есть "прерывание" работы кроме снятия питающего напряжения? RESET - прерывание работы? А "софтовый" перезапуск таймера?
    Если сработал WatchDog Timer то все регистры обнуляются, потому что происходит сброс контроллера.
    Это я тоже представляю, но не знаю, где хранится величина, возвращаемая millis. Если в регистре, то значит будет обнуляться?
    Последний раз редактировалось edw123; 13.12.2011 в 21:44.

  3. #13
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Глупый вопрос по ардуино

    Цитата Сообщение от edw123 Посмотреть сообщение
    Это я прочитал. А что есть "прерывание" работы кроме снятия питающего напряжения? RESET - прерывание работы? А "софтовый" перезапуск таймера?
    RESET можно грубо сравнить со снятием питания и потом его подключением.
    Про таймер не понял вопроса.

    Цитата Сообщение от edw123 Посмотреть сообщение
    Это я тоже представляю, но не знаю, где хранится величина, возвращаемая millis. Если в регистре, то значит будет обнуляться?
    в регистре и будет обнулятся при RESET

  4. #14
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    193

    По умолчанию Re: Глупый вопрос по ардуино

    Цитата Сообщение от Chip Посмотреть сообщение
    Про таймер не понял вопроса.
    Я тут "в начале" и не совсем... Если правильно я понял, то: при WatchDog - обнулится. При RESET - обнулится. При начале нового цикла loop - НЕ обнулится?

    ПРо таймер - в библиотеке timer есть функция сброса таймера setTimer() - вот я её имел ввиду - с её помощью можно обнулить Millis()? Ну и ли по другому - как в тексте скетча сделать обнуление millis()?

  5. #15
    Пользователь
    Регистрация
    07.10.2011
    Сообщений
    23
    Вес репутации
    158

    По умолчанию Re: Глупый вопрос по ардуино

    Первая часть правильно, вторая, про таймер, неправильно.
    setTimer и библиотека timer никакого отношения к функции millis() не имеет.
    Если хочется "обнулить" millis(), то надо использовать свою переменную, записав в нее значение millis() в момент обнуления, а затем вычитать это значение из результата millis(), тогда, когда надо выполнить отсчет времени.

    примерно так:

    long t0; // глобальная переменная
    ...
    t0 = millis(); // "обнуление"
    ...
    t = millis() - t0; // получение интервала времени, с учетом обнуления
    ...

  6. #16
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    193

    По умолчанию Re: Глупый вопрос по ардуино

    Цитата Сообщение от _msd Посмотреть сообщение
    Первая часть правильно, вторая, про таймер, неправильно.
    setTimer и библиотека timer никакого отношения к функции millis() не имеет.
    Насколько я понимаю, millis() использует при своей работе таймер. Вот его и хочется обнулить.
    Цитата Сообщение от _msd Посмотреть сообщение
    Если хочется "обнулить" millis(), то надо использовать свою переменную, записав в нее значение millis()
    Это "слишком просто" и не интересно. Интересно иметь в millis() значение в типе word, а не unsigned long и не заниматься многоразрядной арифметикой.
    Последний раз редактировалось edw123; 14.12.2011 в 22:10.

  7. #17
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Глупый вопрос по ардуино

    По моему проще таймер настроить и использовать свою переменную

  8. #18
    Местный
    Регистрация
    10.11.2010
    Сообщений
    144
    Вес репутации
    193

    По умолчанию Re: Глупый вопрос по ардуино

    Цитата Сообщение от Chip Посмотреть сообщение
    По моему проще таймер настроить и использовать свою переменную
    Ну такой вариант я тоже рассматриваю, но надо же и до конца с millis() разобраться...
    Millis() таймером и отрабатывается и наверное сбросить его можно ассемблерной вставкой записью в регистр таймера?
    Последний раз редактировалось edw123; 15.12.2011 в 21:44.

Страница 2 из 2 ПерваяПервая 12

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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