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

Проблема С Прерываниями На Atmega8


ARV.net

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

Всем привет. Пишу программу ампер-вольтметра на ATmega8, в программе есть два прирывания, одно по оканчанию преобразований АЦП, второе по прерыванию таймерасчетчика 2 которое выводит данные на семисегментную индикацию на сдвиговых регистрах, это всё работает. Проблема в том что кроме прерываний не чего больше в прграмме не выполняется, т.е. в бесконечном цикле главной функции будет ещё ряд задач по упровлению, а цикл выполняется только один раз после запуска. Если запретить прерывания то всё работает. Я ещё только учусь программированию на МК и не как не могу догнать в чём дело. Подскажите, зарание спасибо.

Проект в CodeVision 2.05.0 + Proteus 7.10 Project_AVR (7 segment).rar

Скрины из протеуса на всякий случай scrin.rar

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

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

Использовать delay в обработчике прерывания, мягко говоря, не совсем правильно. Думаю поэтому ничего кроме прерываний не выполняется, потому как delay может прервать только прерывание, и так по кругу..

Изменено пользователем TDSS

Иван Сусанин - первый полупроводник

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

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

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

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

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

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

Использовать delay в обработчике прерывания, мягко говоря, не совсем правильно.

А что посоветуешь?

Изменено пользователем ARV.net
Ссылка на комментарий
Поделиться на другие сайты

Особенности хранения литиевых аккумуляторов и батареек

Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>>

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

Вот не смог понять, если задержку между переключениями сегментов делает таймер, зачем там в обработчике ещё дополнительные программные задержки ? Что они делают ?

Использование задержки в обработчике АЦП тоже для меня осталось загадкой. Зачем это нужно ?

Изменено пользователем TDSS

Иван Сусанин - первый полупроводник

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

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

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

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

Вот не смог понять, если задержку между переключениями сегментов делает таймер, зачем там в обработчике ещё дополнительные программные задержки ? Что они делают ?

Я то же не знаю зачем они там но без них на индикацию выводится что попало

post-165242-0-56708000-1352985484_thumb.png

первый сегмент вообще не отображается и второй мерцает с большой переодичностью

Использование задержки в обработчике АЦП тоже для меня осталось загадкой. Зачем это нужно ?

А здесь, я гдето вычетал что задержка нужна для уменьшения погрешности АЦП, :unknw:

Да и их удаление проблемы не решает.

Изменено пользователем ARV.net
Ссылка на комментарий
Поделиться на другие сайты

Попробуй сконфигурировать таймер чтоб он переполнялся раз в 5 мс(приблизительно) и убрать задержки из обработчика прерывания.

Для уменьшения погрешности АЦП нужно делать несколько замеров, а затем вычислять среднее арифметическое.

На какой частоте работает МК ?

Изменено пользователем TDSS

Иван Сусанин - первый полупроводник

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

Попробуй установить предделитель таймера на 256 (получится задержка около 8мс) и удали задержку из обработчика.

TCCR2 |= (1 << CS22)|(1 << CS21);	    // Предделитель на 256

Иван Сусанин - первый полупроводник

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

1. поменял предделитель, убрал задержки на индикацию выводятся данные вообще не соответствующие действительности, запустил пошаговую отладку в переменную amper_out записывается то ток, то напряжение, в переменную volt_out показания тока. Цикл не выполняется

2. поменял предделитель, оставил задержки, всё отображается. Цикл не выполняется

:wall:

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

Задержку удалил из обработчика прерывания таймера, а в АЦП оставил ?

Изменено пользователем TDSS

Иван Сусанин - первый полупроводник

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

Тогда уже теплее. От задержки в переключении сегментов мы избавились. Теперь надо думать что делать с АЦП.

Иван Сусанин - первый полупроводник

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

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

Иван Сусанин - первый полупроводник

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

Нет, с делителем АЦП все нормально, он задает частоту АЦП 125кГц.

Самый простой способ, это отключить прерывание АЦП, и из его обработчика перенести всё в главный цикл.

Можно задействовать еще один таймер. И перенести в его обработчик то, что было в обработчике прерывания АЦП.

Правда непонятно почему не сработал вариант просто убрать задержку из обработчика АЦП...

Изменено пользователем TDSS

Иван Сусанин - первый полупроводник

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

Вычесление показаний тока и напряжения вынес в главный цикл, всё заработало без прерываний,

в цикл набросал небольшой код для проверки всё в норме

Это получается что МК слишком долго обрабатывал прерыание по АЦП?

Ну в общем спасибо, очень помог!

Изменено пользователем ARV.net
Ссылка на комментарий
Поделиться на другие сайты

Не слишком долго обрабатывал, а вечно. Пока МК обрабатывает задержку в прерывании уже будет сгенерирована целая очередь прерываний в каждом из которых опять задерка...... (время за которое возникает прерывание у нас намного меньше чем длительность задержки).

Поэтому никогда нельзя использовать программные задержки в прерывании.

Изменено пользователем TDSS

Иван Сусанин - первый полупроводник

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

  • 9 лет спустя...
В 15.11.2012 в 17:45, TDSS сказал:

Сам делал нечто похожее

Я так понимаю это блок питания? Я вот тоже недавно сделал с автопереключением обмоток. Но т. к.  переключениями занимается Atmega8 я все никак не успокоюсь и думаю какие новые функции прикрутить в новой версии прошивки. Посмотрел в протеусе Ваш проект и это тоже натолкнуло на определенные мысли. Думаю нужно добавить настраиваемый уровень напряжения переключения обмоток. 

Экспереминтатор должен быть достаточно ленив, чтобы не копаться в мелочах!

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

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

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

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

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

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

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

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

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

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

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

    • ((102+02+02+02+02+02+02+02+02+02)/10) Iэфф=sqrt((102+0)/10)=sqrt(10)=3.16228 Тогда мощность будет равна P=I2∙R=(3.16228)2·1=10 Вт
    • и забить, для вопрошающего (и не только) https://ozon.ru/t/DlZ2gjE лучшие электролиты в цепи сигнала это их отсутствие. Если из Г. и П. собирать, где на вторичке одна обмотка - моё сочувствие.
    • А вы на себя, Звука, Мура и прочих  подобных со стороны не смотрели? Обсираете всех подряд, не помогаете толком никому, и при этом хамите. Я во всех темах кроме своей исключительно помогаю другим, и хамить и троллить могу только в ответ другим таким же индивидам которые уже начали это делать. Если говорить конкретно и вашими же словами и опрелелениями, вы это и есть пример идеальных трол лей и быдлей. И похер мне что я после этого бан получу скорее всего навсегда, как вы это сделали с моим твинком. Я по крайней мере рад, что действительно смог помочь авторам таких тем и новичкам которым помогал ранее. Идеальный пример хороших радиотехников это finn32, СКУПОЙ, Владислав2 и им подобные. Адекватные люди, которые помогают таким же адекватным людям и не хамят. А вот как вы "дослужились" до поста модератора это уже очень большой вопрос, и главный вопрос как после такого множества нарушений вами правил форума вас до сих пор не сняли с роли модератора и не забанили к чертям. Регулярно поносите всех как угодно, троллите и флудите, 18+ картинки часто кидаете, и почему-то всем на это плевать. Какой пример вы даëте пользователям?
    • Виталий, вы сами не замечаете, но ведете вы себя как БЫДЛО. Вы на сегодняшний день самый БЫДЛАН форума. Слушать не хотите, учиться не хотите, читать не хотите, на любое сообщение отвечаете с агрессией... Еще и пытаетесь людей учить, не разбираясь в электротехнике от слова совсем! Может ну его? Может на танцы? Или может вы художник от бога? Тикток опять же, блохерство? Не? Вы упрямо срете во все уже темы форума! Мы же договаривались, не? Вы не вылазите дальше своей курилковской темы - я вас не трогаю. Нет?  Ну вот опять((
    • Есть у меня , ещё из 2000-х. Между рядами 17,5 мм, шаг вроде 1,75 мм.
    • @СКУПОЙ ну Вы блин даёте. там же 10 ампер, а не 1. быстрее удаляйте наши сообщения, пока Хохол не увидел.
×
×
  • Создать...