|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 9:14 am
|
Страница 1 от 1
|
[ 8 мнения ] |
|
PIC18F45K50 timer1 problem
| Автор |
Съобщение |
|
marcuka68
Ранг: Ориентиран
Регистриран на: Пет Авг 07, 2009 4:58 pm Мнения: 273
|
 PIC18F45K50 timer1 problem
Здравейте! Правя RTC с този микроконтролер, като ползвам таймер 1 с външен кварц 32.768kHz. Кондензаторите са 12pF. Кодът за таймера съм го взел от друг мой проект с ПИК18, не очаквах проблеми там. Ползвам и библиотеката на Майкрочип за USB. Проблемът е, че таймерът избързва с около секунда на минута. Като мерим сигнала на кварца, се вижда синусоида, която е в обхвата около +/- 200mV. На другия проект с ПИК18, се измерва синисоида около обхвата 400mV - 600mV. Прикачам кода за таймера, пробвах както с TRIS битове 0b00, така и с 0b11, без ефект. Някакви идеи?
|
| Сря Юли 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 |
|
 |
|
marcuka68
Ранг: Ориентиран
Регистриран на: Пет Авг 07, 2009 4:58 pm Мнения: 273
|
 Re: PIC18F45K50 timer1 problem
Благодаря много за точния отговор!!!
Направих съответните промени в прекъсването на таймера и за сега изглежда, може би, задоволително добре - за 2-3 часа сякаш избърза спрямо компютъра с около 1s. Оставям го цяла нощ, да видя как ще е сабахлян.
|
| Чет Юли 02, 2015 6:01 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC18F45K50 timer1 problem
Ами аз за сега не съм докарвал RTC да работи точно като швейцарски часовник(не че съм се и опитвал)! Винаги се разминава с реалното време. Така че някакви секунди на 24 часа ми се струват ОК!
_________________www.elkran.com
|
| Пет Юли 03, 2015 1:27 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
 Re: PIC18F45K50 timer1 problem
Нама причина RTC-то да не работи, но всичко зависи от резонатора който се използва, дали е точен и дали е подходящ за съответното приложение. Нормално кварцовите часовници дават отклонение от 3-4 минути на година, но ако се компенсират температурно точността може да се повиши значително.
|
| Пет Юли 03, 2015 2:41 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC18F45K50 timer1 problem
А м/у другото трябва да имаш една настройка в чипа. Имаше едно калибриране ама сега не мога да си спомня какво беше точно. Можеш там да бутнеш да видиш дали ще има подобрение. Макар че ако не си се постарал с хардуера, няма да има кой знае какво подобрение. Поздрави!
_________________www.elkran.com
|
| Пет Юли 03, 2015 4:58 pm |
|
 |
|
mitko_el
Ранг: Форумен бог
Регистриран на: Вто Яну 24, 2006 6:34 pm Мнения: 1753 Местоположение: Варна
|
 Re: PIC18F45K50 timer1 problem
Бях правил часовник с 68705Р3 , та чалъма дето го вкарах за по финна корекция: На примерно 12345 минути , 'бутвам' 0.1 s напред(или назад) броилката 
_________________ За пари сичко праим,даже и работим...
|
| Пет Юли 03, 2015 7:59 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30684 Местоположение: София
|
 Re: PIC18F45K50 timer1 problem
Ами при кварцофите основната нестабилност идва от температурата, кварца може да го подбереш да е много точен, или пък да го компенсираш но не компенсираш ли температурата може много да мръдне, особенно ако не на цикли ами ами само в едната посока, примерно само топло или само студено. Някои микроконтролери имат вградеи тмеп. сензори на база на които може да се прави някаква компенсация, верно не е 100% актуална но върши работ за да знаеш дали си на 20 или на 40 градуса.
|
| Пет Юли 03, 2015 8:10 pm |
|
|
|
Страница 1 от 1
|
[ 8 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 11 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|