Отговори на тема  [ 8 мнения ] 
PIC18F45K50 timer1 problem 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Авг 07, 2009 4:58 pm
Мнения: 273
Мнение PIC18F45K50 timer1 problem
Здравейте! Правя RTC с този микроконтролер, като ползвам таймер 1 с външен кварц 32.768kHz. Кондензаторите са 12pF. Кодът за таймера съм го взел от друг мой проект с ПИК18, не очаквах проблеми там. Ползвам и библиотеката на Майкрочип за USB. Проблемът е, че таймерът избързва с около секунда на минута.
Като мерим сигнала на кварца, се вижда синусоида, която е в обхвата около +/- 200mV. На другия проект с ПИК18, се измерва синисоида около обхвата 400mV - 600mV. Прикачам кода за таймера, пробвах както с TRIS битове 0b00, така и с 0b11, без ефект. Някакви идеи?


Прикачени файлове:
TMR1-problem.txt [1.81 KiB]
321 пъти
Сря Юли 01, 2015 6:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Фев 25, 2005 1:58 pm
Мнения: 4585
Местоположение: US
Мнение Re: PIC18F45K50 timer1 problem
За този професор има следния бъг за TMR1/TMR3:

Цитат:
Module: Timer1/3 Module with Gate
Control
When using the Timer1 or Timer3 module, either
separately or simultaneously, a false overflow
event may occur after reloading the timer. The
event only occurs when the timer is configured for
Asynchronous Counter mode operation, and is
only problematic if the timer's interrupt is enabled.
During the Interrupt Service Routine (ISR), after
reloading the timer register (TMR1 and/or TMR3)
with a new value, the false overflow event can
occur upon the very next increment of the timer.
This sets the TMRx Overflow Interrupt Flag bit
(TMRxIF) and if the timer’s interrupts are enabled,
the interrupt service handler will again branch to
the interrupt vector on the next instruction clock,
after leaving the ISR. If interrupts are not enabled,
the TMRx Overflow Interrupt Flag bit will be set,
however, the firmware will not branch to the
interrupt vector.

Work around
While inside the Interrupt Service Routine (ISR),
create a loop routine that tests the timer for a
minimum increment of one count. Once the timer
has incremented by a minimum of one count, test
the Overflow Interrupt Flag bit (TMRxIF) and clear
it if set before leaving the ISR.


_________________
Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....


Сря Юли 01, 2015 7:18 pm
Профил WWW
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Авг 07, 2009 4:58 pm
Мнения: 273
Мнение Re: PIC18F45K50 timer1 problem
Благодаря много за точния отговор!!!

Направих съответните промени в прекъсването на таймера и за сега изглежда, може би, задоволително добре - за 2-3 часа сякаш избърза спрямо компютъра с около 1s. Оставям го цяла нощ, да видя как ще е сабахлян.


Чет Юли 02, 2015 6:01 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: PIC18F45K50 timer1 problem
Ами аз за сега не съм докарвал RTC да работи точно като швейцарски часовник(не че съм се и опитвал)! Винаги се разминава с реалното време. Така че някакви секунди на 24 часа ми се струват ОК!

_________________
www.elkran.com


Пет Юли 03, 2015 1:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: PIC18F45K50 timer1 problem
Нама причина RTC-то да не работи, но всичко зависи от резонатора който се използва, дали е точен и дали е подходящ за съответното приложение. Нормално кварцовите часовници дават отклонение от 3-4 минути на година, но ако се компенсират температурно точността може да се повиши значително.


Пет Юли 03, 2015 2:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение Re: PIC18F45K50 timer1 problem
А м/у другото трябва да имаш една настройка в чипа. Имаше едно калибриране ама сега не мога да си спомня какво беше точно. Можеш там да бутнеш да видиш дали ще има подобрение. Макар че ако не си се постарал с хардуера, няма да има кой знае какво подобрение.
Поздрави!

_________________
www.elkran.com


Пет Юли 03, 2015 4:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Яну 24, 2006 6:34 pm
Мнения: 1753
Местоположение: Варна
Мнение Re: PIC18F45K50 timer1 problem
Бях правил часовник с 68705Р3 , та чалъма дето го вкарах за по финна корекция: На примерно 12345 минути , 'бутвам' 0.1 s напред(или назад) броилката :)

_________________
За пари сичко праим,даже и работим...


Пет Юли 03, 2015 7:59 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: PIC18F45K50 timer1 problem
Ами при кварцофите основната нестабилност идва от температурата, кварца може да го подбереш да е много точен, или пък да го компенсираш но не компенсираш ли температурата може много да мръдне, особенно ако не на цикли ами ами само в едната посока, примерно само топло или само студено. Някои микроконтролери имат вградеи тмеп. сензори на база на които може да се прави някаква компенсация, верно не е 100% актуална но върши работ за да знаеш дали си на 20 или на 40 градуса.


Пет Юли 03, 2015 8:10 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 8 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни