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

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


maksimdag0

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

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

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

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

32.png

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

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

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

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

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

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

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

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

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

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

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

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

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

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

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

delay_ms(65535) ;

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

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

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

это герлянда

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

 

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

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

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

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

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

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

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

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

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

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

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

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 пользователей онлайн

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