Перейти к содержанию

Задержка delay не работает правильно


maksimdag0

Рекомендуемые сообщения

Приветствую всех. Господа знатоки, выручайте, несколько дней уже не могу разобраться, весь инет просерфил так и не получилось разобраться. Проблема в следующим – при написании кода для atmega8 (пишу прошифки в CodeVisionAVR) использовал функцию delay_ms. Написал простой код –включение двигателя каждые 4 секунды (4 секунды двигатель работает, 4 секунды не работает), использовал задержку delay_ms =4000, все работает, но если я поставлю задержку, например,  на 2 минуты или больше то задержка длится только 55 секунд (цифры приблизительные), хотя задержка равна delay_ms = 120000. Подскажите пожалуйста почему так происходит, ведь задержка delay может длиться почти 50 суток?  

Двигатель подключен к внешнему источнику питания через транзисторный ключ (напряжение на PINе есть – транзистор открывается, двигатель работает; напряжения нет  - не работает).

Частота МК стоит 1МГц

32.png

Ссылка на комментарий
Поделиться на другие сайты

65536 ничего не напоминает? например предел 16 битного числа?

кстати 55 000 мс в него влазит.

Жизнь не белая или чёрная, а в мелкую серенькую полосочку...

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, maksimdag0 сказал:

ведь задержка delay может длиться почти 50 суток

Ужас... Затупить проц в цикл на 50 суток - это уже верх мазохизма :wacko:

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Как было уже написано, задержка работает правильно. Нужно найти файл delay.h(должен быть где-то в папке include, которая в свою очередь в папке с CVAvr находится). Посмотреть в этом файле объявление функции delay(),  скорее всего аргумент будет типа int  или uint(16 bit).

Для больших задержек в минуты, часы, дни, месяцы, годы лучше подключить к мк часы реального времени(rtc clock) или что-то типа того, и там уже настраивать будильником или таймером или еще как-то. 

Если нужна одна задержка с фиксированной длительностью и не высокой точностью, можно ее реализовать на ne555. С помощью мк можно длительностью этой задержки управлять в определенных пределах, если подключить цап или цифровой потенциометр в обвязку  ne555. 

Ну и брутальный вариант:

for(i=0; i < 65534; i++) {

delay_ms(65535) ;

} или с любым другим циклом. 

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

08.04.2021 в 09:56, maksimdag0 сказал:

Приветствую всех. Господа знатоки, выручайте, несколько дней уже не могу разобраться, весь инет просерфил так и не получилось разобраться. Проблема в следующим – при написании кода для atmega8 (пишу прошифки в CodeVisionAVR) использовал функцию delay_ms. Написал простой код –включение двигателя каждые 4 секунды (4 секунды двигатель работает, 4 секунды не работает), использовал задержку delay_ms =4000, все работает, но если я поставлю задержку, например,  на 2 минуты или больше то задержка длится только 55 секунд (цифры приблизительные), хотя задержка равна delay_ms = 120000. Подскажите пожалуйста почему так происходит, ведь задержка delay может длиться почти 50 суток?  

Двигатель подключен к внешнему источнику питания через транзисторный ключ (напряжение на PINе есть – транзистор открывается, двигатель работает; напряжения нет  - не работает).

Частота МК стоит 1МГц

32.png

Лучше использовать таймер в прерываниях

main.c

это герлянда

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

 

9 часов назад, Ivan Rusev сказал:

задержку delay_ms =4000, все работает, но если я поставлю задержку, например,  на 2 минуты

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

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

Вы и найти это не можете потому что это очевидные вещи, для тех кто вырос в этом мире, а вы из другого мира получается (и это не хорошо и не плохо, может вы в чем то другом лучше ориентируетесь, просто это такая данность).

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

16.04.2021 в 08:24, ruhi сказал:

 

16.04.2021 в 08:24, ruhi сказал:
5.04.2021 в 22:51, Ivan Rusev сказал:

задержку delay_ms =4000, все работает, но если я поставлю задержку, например,  на 2 минуты

 

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

Ссылка на комментарий
Поделиться на другие сайты

13 часов назад, Ivan Rusev сказал:

я это не говорил

ага, вижу! промахнулся с автором (надо же как подставили ), это было к:

08.04.2021 в 09:56, maksimdag0 сказал:

delay_ms =4000, все работает, но если я поставлю задержку, например,  на 2 минуты

Это конечно поразительно, как можно просерфить весь интернет и не найти элементарного знания про то как числа сохраняются в переменных ...

Можно сделать все! Но чем больше можно, тем больше нельзя!

Ссылка на комментарий
Поделиться на другие сайты

8 часов назад, ruhi сказал:

ага, вижу! промахнулся с автором (надо же как подставили ), это было к:

Это конечно поразительно, как можно просерфить весь интернет и не найти элементарного знания про то как числа сохраняются в переменных ...

Это вы мне? У меня по простому без наворотов.

 

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...