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

Про Pic16F84


dimas5552

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

Подскажите пожалуйста, что означает "Выбор активного фронта сигнала на входе внешнего

прерывания INT" ??? Что такое T0SE - "Выбор фронта приращения TMR0 при внешнем такте" я понял - это выбор стороны такта, на котором будет происходить переключение состояние счетчика (наростание или спад) при условии что T0CS будет установлен в 1. Вот только что такое INTEDG ну никак не допру :unknw: . И главное в датащите на TMR0, ссылку не который Вы указали выше, в схеме нет его :o

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

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

  • Ответов 126
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

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

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

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

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

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

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

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

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

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

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

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

Насколько я понял - INT это контакт RB0 и бит INTEDG контроллирует, при какой стороне такта (наростание или убывание) произойдет уход рабой точки программы в подпрогамму прерывания, верно???

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

Еще вопрос: где дополнительно в таймере TMR0 происходит деление на 256 (прескалер) ведь на схеме есть всего лиш деление на 2 (SYNC)...

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

И где Вы увидели деление на 2? Вы хотя бы текст прочтите. Все по русски. Это СИНХРОНИЗАЦИЯ с ЗАДЕРЖКОЙ на 2 цикла. После сброса или установки таймер начнет считать не сразу, а с задержкой в 2 маш.цикла. Это время на синхронизацию. Это исключительно синхронный счетчик.

Красным обведен прескалер. Минимальный коэф.деления 1:2, если нужно без деления, то переключается мультиплексор между прескалером и таймером и выбирается только системные тики без предделителя.

post-35709-091572700 1283586578_thumb.jpg

戦う前に相手のベルトの色に注目

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

Спрошу по другому: помните я задавал вопрос про задержку в 1 секунду? Если поставить предделитель на 1:32 то получится, что переполнение таймера наступит через 0,008192 секунды и значит для реализации задержки в 1 секунду эту паузу (0,008192 сек) нужно повторить 122 раза. То есть получается формула: 1/((32*256)/1000000) = 122. 1 - это одна секунда, 32 - установка предделителя, 1000000 - количество микросекунд в секунде, а 256 (дополнительное деление тактов) откуда тогда берётся???

Вот Ваша цитата:

Машинный цикл равен 4 периодам кварца. т.е. 1 мкс. Прескалер и сам счетчик дадут 2 последовательных делителя на 256. Т.е. на 65536. Ровно столько машинных циклов потребуется таймеру от нуля до переполнения.

Здесь речь шла о установке на 256 - это предделитель, который вы обвели красным на рисунке выше а где тогда прескаллер?

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

Здесь речь шла о установке на 256 - это предделитель, который вы обвели красным на рисунке выше а где тогда прескаллер?

при установке предделителя на 256 на выходе предделителя импульс появляется каждые 256 машинных циклов

каждое появление импульса увеличивает регистр TMR0 на 1 при переходе 255->0 выдается прерывание

TMR0 и есть прескаллер

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

Во ПОНЯЛ!!! За каждые 256 импульсов таймер увеличивает свое состояние на 1, но сам таймер имеет переполнение при 255 + 1 прерывание = 256. И итог 256 * 256 :rolleyes:

Тогда что называется прескаллером?

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

Выходит, что 0 будет отображаться в момент переполнения счетчика (в момент перехода 255 -> 256) и в момент когда там действительно 0 (переход 256 -> 0), то есть на протяжении двух машинных циклов ?...

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

Тогда что называется прескаллером?

возможность предустановки TRM0 программно

Давайте не путать товарища глупостями. Он и так себя путает без меры.

prescaler [англ.] - предварительный делитель частоты.

Т.е. это и есть предделитель.

Если прескалер в данном примере установить в 1/32, то на вход самого таймера поступят импульсы с периодом 32 мкс.

Значит интервал переполнения таймера (при условии, что его не предустанавливают) составит 32*256=8192 мкс.

Чтобы получить секундные интервалы, потребуется насчитать 122 переполнения.

Это нужно делать ПРОГРАММНО. Для этого заводят переменную, присваивают ей в начале цикла значение 122 и после каждого переполнения ее декрементируют. Как только она станет равной нулю, так секунда прошла.

戦う前に相手のベルトの色に注目

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

my504 спасибо за подтверждение моей мысли ;) Собственно я это и написал в 85 посте только другими словами :)

А почему минимальная установка прескалера 1:2 ? Почему 1:1 нельзя (пропускать напрямую), тем самым отсчитывая каждый машинный цикл?

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

Ну почему же нельзя? Можно. Для этого нужно установить бит PSA регистра OPTION_REG в 1. Тогда прескалер будет отключен от счетчика, а системные тактовые импульсы попадут напрямую на его вход. Внимательно смотрите схему. Я же вам ее специально вырезал из даташита.

戦う前に相手のベルトの色に注目

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

Выходит, что 0 будет отображаться в момент переполнения счетчика (в момент перехода 255 -> 256) и в момент когда там действительно 0 (переход 256 -> 0), то есть на протяжении двух машинных циклов ?...

Запишем число 256 в двоичной форме: 1 0000 0000. Это ДЕВЯТИРАЗРЯДНОЕ число. ВОСЬМИРАЗРЯДНЫЙ счетчик не может считать до 256. Только до 255. Всего состояний счетчика может быть 256: от 0 до 255. После 255 будет 0.

Но PSA=1 это сторожевой таймер, который постоянно будет сбрасывать МК... :unsure:

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

Включение или выключение вачдога (он же WDT, он же сторожевой таймер) в данном контроллере производится в регистре конфигурации при программировании МК и программно НЕ УПРАВЛЯЕТСЯ.

Сброс включенного вачдога делается в главном цикле программы путем вставки команды clrwdt

戦う前に相手のベルトの色に注目

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

Я немножко другое имел в виду: PSA кстати управляет 3 мультиплексорами (на схеме в датащите 11-6) и определяет куда "тыкать" предделитель: перед TMR0 или же после WDT. Но если поставить PSA=1 то мы всего лиш удлиним паузу между тактами сторожилы WDT, который управляет сбросом микроконтроллера... Получается без сброса программы подсчитать количество машинных тактов напрямую нельзя, но можно коственно, умножив значение в TMR0 на 2 (если прескаллер на минимуме - 1:2).

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

Что здесь имеется в виду под синхронизацией и зачем она нужна?

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

Есть предложение не фантазировать.

Вачдог - это СЧЕТЧИК с RC генератором. Он не имеет к TMR0 никакого отношения, если не считать совместно (но не одновременно) используемый предделитель.

Если предделитель подключить к вачдогу, то TMR0 будет считать прямо системные тики. Но мы не рассматриваем включенный вачдог. Его вообще лучше никогда не включать.

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

Таким образом подключение прескалера к вачдогу просто отключает прескалер от нашего нулевого таймера.

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

Объясняю.

Синхронный счетчик инкрементирует свое состояние не по событию счета, а по БЛИЖАЙШЕМУ ПОСЛЕ СОБЫТИЯ СЧЕТА импульсу синхронизации.

Таким образом, если нулевой таймер сконфигурировать на счет не системных импульсов, а ВНЕШНЕЙ частоты подаваемой на пин T0CKI, то увеличение счетчика на единицу будет происходить не по активному фронту счета, а по блищайшему после этого активного фронта импульсу системной частоты контроллера.

Если допустить асинхронный счет, то считывать такой таймер "на лету" (не останавливая его) НЕЛЬЗЯ. Будет возникать коллизия чтения. Возможно чтение в момент переключения и тогда будет считана абракадабра. Какие то разряды успеют переключится, а какие то нет (так называемые "гонки фронтов").

Плата за синхронизм - потеря двух импульсов синхронизации...

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

戦う前に相手のベルトの色に注目

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

А если после WDT стоит предделитель, который установлен допустим на максимум - 1:128 то получается, что при кварце в 4 МГц будет задержка 128*128=16384 мкс или 0,016 секунды... как тогда в той программе - мигалке с задействованием сторожилы МК сбрасывался примерно через 0,2 секунды??

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

Период переполнения WDT НЕ КВАРЦОВАН, не зависит от тактовой частоты контроллера и составляет БЕЗ ПРЕСКАЛЕРА около 18 миллисекунд (0,018с). Т.е. если включить WDT и еще к нему скоммутировать прескалер с максимальным коэф.деления 128, то период вачдога составит 2,3 секунды.

Прескалер после вачдога ничем не хуже счетчика, просто разрядов управления прескалером всего три. Инженеры микрочипа приняли такие таблицы управления предделителем для счетчика и таймера. Кстати деление на 1 - это всегда выключение прескалера (сигнал берется с его входа).

Использование вачдога в программе не по его основному назначению - это дурной тон программирования. Поэтому я даже и не разбираю с вами ту программу. Как программный фокус - сойдет. Но как метод - это неправильное решение.

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

戦う前に相手のベルトの色に注目

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

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...