Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Добрый день. Вопрос конечно чайниковский до ужаса но вот туплю по страшному. В общем собирал я некоторые устройства на пиках но там никогда не использовались не часы не таймеры больше 1 минуты. А тут понадобился таймер на 3 часа. И тут вот и началось. В данный момент вот так и конечно же не точно считает.
Код:
if (TMR0IF) { sys1++; TMR0=63500; TMR0IF = 0; }
В регистрах включен 16 битный таймер. Прескалер выключен вообще то есть 1:1.
Я в инете нашел несколько примеров но по ним не работает. Частота тактовая 8Мгц проца.
Может кто рассчитает для моего?? Или формулу киньте пожалуйста. Я задолбался, вообще туго даётся программирование и математика, но оочень интересно это.
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Пт мар 27, 2015 11:31:37
Модератор
Карма: 90
Рейтинг сообщений: 1337
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4558 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Цитата:
не точно считает
Что значит "неточно" ? И что для Вас будет "точно" ? Точность, в первую очередь, будет зависеть от точности исходной частоты. В данном случае - от частоты тактирования таймера.
Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России.
На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Пт мар 27, 2015 11:59:11
Потрогал лапой паяльник
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Вот точность я ловил но замучаешься, как то поидее рассчитать надо. Хотелось бы в sys1 получать 1 миллисекунду. Тогда все мои счётчики что я намутил заработают точно. Это программа расчёта расхода энергии, ваттметр в общем.
Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO
подробнее>>
AVT-28
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Пт мар 27, 2015 12:01:44
Потрогал лапой паяльник
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Vano79 писал(а):
AVT-28 писал(а):
Я в инете нашел несколько примеров но по ним не работает. .. но оочень интересно это.
А чему там не работать? В нете примеров рабочих до кучи с интервалами хоть годы. Как вариант: делаете тик на 10 мс, далее 1 с, 1мин, 1 час,
Код:
тик на 10мс. if (TMR0IF) { tmr_ms++; if (tmr_ms == 100) { tmr_ms = 0; tmr_Sec++;} //1 sec if (tmr_Sec == 60) { tmr_Sec = 0; tmr_Min++;} //1 min ...
Это всё понятно, не понятно как TMR0 рассчитать для 8 мегагерц. Я так понимаю что 1 такт проца занимает судя по калькулятору для 8 мгц 0.000000125 сек. без делителя??? Или делитель есть какой то уже по умолчанию?? 1:2 например? может в этом ошибка?
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Пт мар 27, 2015 12:23:54
Потрогал лапой паяльник
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Мне что бы понять что то самому нужно вникнуть полностью в каждую мелочь, иногда просто не могу понять какую то мелочь и не могу понять вообще ничего. Если разбирать камень по полочкам то TMR0 прибавляет каждый такт, это верно или нет?? И если включить делитель к примеру 1:2 то TMR0 тикает каждые 2 такта, так??
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Пт мар 27, 2015 12:32:10
Модератор
Карма: 90
Рейтинг сообщений: 1337
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4558 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Для периодично-повторяющихся отсчётов времени лучше взять таймер с аппаратным сбросом при соответствии с установленным значением. Для этого никаких лишних "телодвижений" (типа переустановка таймера на n-ное кол-во тактов) не нужно выполнять. Такие таймеры в PIC'ах существуют, курите даташит. Благо документация у Микрочипа путёвая. По таймерам достаточно рисунков с архитектурой таймера, чтобы понять что он из себя представляет.
Цитата:
Если разбирать камень по полочкам то TMR0 прибавляет каждый такт, это верно или нет?? И если включить делитель к примеру 1:2 то TMR0 тикает каждые 2 такта, так??
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Пт мар 27, 2015 12:55:09
Модератор
Карма: 90
Рейтинг сообщений: 1337
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4558 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Много ли человеку нужно для счастья ? Всего-лишь привести кусок из даташита Не забывайте, что даташит - это документация. И сделана она специально для того, чтобы не ходить по форумам и не выпрашивать объяснений
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Пт мар 27, 2015 15:02:25
Потрогал лапой паяльник
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
у меня вообще пока что при 16 bit таймере, 8 бит не выходит точно считать, или отстаёт или бежит сильно. В общем TMR0=63649 дёргаю ногу через таймер, получилось ровно 500.018 герц. Я думаю если и будет вперёд время бежать то за 3 часа далеко не убежит.
До формулы я так и не добрался, я решил сперва просто изучить вообще таймер и как он работает, просто основы. Посмотрел даташит, поклацал калькулятором. Потом решил просто TMR0=0 посмотреть осциллографом и TMR=255 посмотреть в 8 бит режиме таймера. так вот TMR=255 это 3.09кгц а если 0 то блин потерял цифру, заново измерять не могу, собрал в корпус уже всё. Вообще выяснилось что у меня уже стоит предделитель /4 то есть тактовая частота 8мгц выставлена а на самом деле буд то 2мгц, а кстати может я чего и там накосячил, может на самом деле на 2 мгц и работает. Но OSCCON = 0b01111110; PLLx4 выключен точно. PSA = 1; то есть делители выключены. Получается что всеж таки по умолчанию делитель на 4 есть.
В общем переключился я на 16 бит а тут ну совсем же другая задница, в общем выставил от фонаря 63000 и прям почти точно попал в точку, ну тут уже спортивный интерес, 63500 выставил и прям почти совсем попал. В общем доподбирался до 63649. затем по такой формуле посчитал уже после подбора, 65535 - (частота/1000/(делитель 4)) но вот нихрена не точно получается. Все равно подобралось точнее. по формуле 63535 получается 499 с чем то кгц, у меня встроенный генератор и может поэтому гуляет тактовая.
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Пт мар 27, 2015 15:48:39
Потрогал лапой паяльник
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Ну вот 1 час прошел , секунда в секунду, что надо, даже если бы на 1 сек уходило это ерунда. Задача выпонена. Конечно опыта мало хотя я 5 лет назад уже начал заниматься МК, но практики очень мало. Вообще нужен по любому кварц 32768, просто я заранее не подумал об этом, а щас плату переделывать уже никак не охото..
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Сб мар 28, 2015 01:24:46
Потрогал лапой паяльник
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
PSA: Timer0 Prescaler Assignment bit 1 = TImer0 prescaler is not assigned. Timer0 clock input bypasses prescaler. 0 = Timer0 prescaler is assigned. Timer0 clock input comes from prescaler output.
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Сб мар 28, 2015 08:06:01
Модератор
Карма: 90
Рейтинг сообщений: 1337
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4558 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
AVT-28 писал(а):
1 = TImer0 prescaler is not assigned. Timer0 clock input bypasses prescaler. 0 = Timer0 prescaler is assigned. Timer0 clock input comes from prescaler output.
Ха, вот это ляп в даташите. А по картинке - наоборот
Заголовок сообщения: Re: Таймер в 18F2520 настроить.
Добавлено: Сб мар 28, 2015 23:31:16
Потрогал лапой паяльник
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
В том то и дело что не ляп. На самом деле так. Включаешь делитель и всё жууутко тормозит. Вот в схеме ляп. Прежде чем отписаться специально 0 поставил и всё стало тормозить жутко, то есть делитель включился.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения