کار با تایمرهای PIC که خیلی راحته.
اگه زمانهای کم و دقیق می خوای بهتره از تایمر 2 استفاده کنی و اگه زمانهای طولانی و دقیق می خوای بهتره از تایمر 1 به همراه مد compare از ماژول CCP استفاده کنی.
از چه میکرویی و با چه فرکانس کلاکی استفاده میکنی و می خوای چه زمان سرریزی داشته باشی؟
خویشتن را اصلاح کنید تا خداوند کارها را اصلاح کند. امیر المومنین علی (ع)
کار با تایمرهای PIC که خیلی راحته.
اگه زمانهای کم و دقیق می خوای بهتره از تایمر 2 استفاده کنی و اگه زمانهای طولانی و دقیق می خوای بهتره از تایمر 1 به همراه مد compare از ماژول CCP استفاده کنی.
از چه میکرویی و با چه فرکانس کلاکی استفاده میکنی و می خوای چه زمان سرریزی داشته باشی؟
PIC16F877 و میخوام زمان یک ثانیه رو بسازم و کریستالم 20M هرتزه
به طور کلی شما با کلاک 20 مگ هیچ وقت نمی تونی وقفه 1 ثانیه ای داشته باشی.
ولی می تونی مثلا یک وقفه 0.1 ثانیه ای داشته باشی و توی ISR مربوطه یک دونه شمارنده بذاری و 10 بار بشماری تا یک ثانیه ایجاد شه.
در ضمن استفاده از اون لینکی که گذاشتم رو فراموش نکن.
الان با استفاده از همون لینک بالا یک وقفه 0.1 ثانیه ای میسازم (صرفا جهت آموزش)http://ifile.it/f0zvlak
خویشتن را اصلاح کنید تا خداوند کارها را اصلاح کند. امیر المومنین علی (ع)
به طور کلی شما با کلاک 20 مگ هیچ وقت نمی تونی وقفه 1 ثانیه ای داشته باشی.
ولی می تونی مثلا یک وقفه 0.1 ثانیه ای داشته باشی و توی ISR مربوطه یک دونه شمارنده بذاری و 10 بار بشماری تا یک ثانیه ایجاد شه.
در ضمن استفاده از اون لینکی که گذاشتم رو فراموش نکن.
الان با استفاده از همون لینک بالا یک وقفه 0.1 ثانیه ای میسازم (صرفا جهت آموزش)http://ifile.it/f0zvlak
lممنون از راهنماییتون فرمولی برای محاسبه دستی هم هست ؟ که هم.ن مقادیر نرم افزار رو بده
دوست عزیز بهترین کار اینه که به datasheet میکروکنترلر مربوطه مراجعه کنید وبخش مربوط به تایمرها رو مرور کنید چون استفاده از تایمرها یک سری ریزه کاری داره که با داشتن فرمول نمیتونید به کار باهاش مسلط بشید.
سلام به همگی
با تشکر از راهنمایی های همگی من موفق شدم با استفاده از تایمر 1 یک LED رو خاموش روشن کنم به این صورت که وقتی با یک میکرو سوئیچ پین سوم پورت C رو یک میکنم بعد از یک ثانیه LED ای که به پین هفتم پورت B وصل کردم روشن میشه و یک ثانیه بعد هم خاموش میشه . اینم کد های برنامه :
/*
* Source Code For PIC Timer1
*THis toggle LED on PORTB.F7 after 1 second to show interrupt rates after pressing push button
*/
// Interrupt Function
char count=0;
void interrupt()
{
// Timer1 Interrupt - Freq = 10.00 Hz - Period = 0.1
if (PIR1.TMR1IF == 1) // timer 1 interrupt flag
{
count++;
PIR1.TMR1IF = 0; // interrupt must be cleared by software
TMR1H = 11; // preset for timer1 MSB register
TMR1L = 250; // preset for timer1 LSB register
if (count==10)
{
// PORTB.F7= ~PORTB.F7; // Toggle PORTB bit1 LED
PORTB.F7= 1; //
}
if (count==25)
{
PORTB.F7= 0;
count=0;
T1CON.TMR1ON = 0;
}
}
}
// code starts here...
void main()
{
// setup portb to show the interrupts by blibking LEDs
TRISB = 0x00; // PORT is all output...to show the interrupts
PORTB = 0; // start with all outputs low
TRISC=0xff;
PORTC=0;
//Timer1 Registers Prescaler= 8 - TMR1 Preset = 3066 - Freq = 10.00 Hz - Period = 0.1
دیدگاه