اطلاعیه

Collapse
No announcement yet.

اجرای وقفه تایمر بعد از 3 ثانیه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اجرای وقفه تایمر بعد از 3 ثانیه

    سلام

    میخوام با استفاده از تایمر هر سه ثانیه یه بار تابع وقفه تایمر رو فراخوانی کنم و دستورات توش رو اجرا کنم. با سی به چه صورت باید بنویسمش؟

    #2
    پاسخ : اجرای وقفه تایمر بعد از 3 ثانیه

    با سلام.
    شما می تونید با اتصال یک کریستال 32.768 (کریستال ساعت) به پین های 28 و 29 مگا 32 یا 16 و یا پایه های مشابه در سایر میکروها و استفاده از تایمر 2 در مد اسنکرون زمان یک ثانیه رو به صورت دقیق شبیه سازی کنید و در هر ثانیه و یا وقفه می تونید یک متغیر رو افزایش بدین که با رسیدن اون به عدد 3 زیرروال مربوطه اجرا بشه.
    امیدوارم منظورتون رو درست درک کرده باشم.
    موفق باشید
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


      #3
      پاسخ : اجرای وقفه تایمر بعد از 3 ثانیه

      من از کریستال 16 مگاهزتر استفاده میکنم. میشه یه برنامه خیلی ساده برای این کار با سی بدید؟

      دیدگاه


        #4
        پاسخ : اجرای وقفه تایمر بعد از 3 ثانیه

        دوست عزیز کریستال متصل به پین های 12 و 13 از این کریستال جداست.
        در برنامه زیر تایمر 2 در مد اسنکرون قرار داده شده و هر 3 ثانیه پورت B را معکوس(toggle)می کنه.شما می تونید برنامه موردنیازتون رو به جای شرطی که من قرار دادم بنویسید.

        کد:
        #include <mega32a.h>
        #include <delay.h>
        #include <stdlib.h>
        // Alphanumeric LCD Module functions
        #include <alcd.h>
        unsigned int x=0;
        
        // Timer2 overflow interrupt service routine
        interrupt [TIM2_OVF] void timer2_ovf_isr(void)
        {
        x++;
        if (x==3) 
        {
        	PORTB=0b10101010;
            delay_ms(500);
        	PORTB~=PORTB;
            delay_ms(500);
        }
        }
        
        // Declare your global variables here
        
        void main(void)
        {
        // Declare your local variables here
        
        // Input/Output Ports initialization
        // Port A initialization
        // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
        // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
        PORTA=0x00;
        DDRA=0x00;
        
        // Port B initialization
        // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
        // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
        PORTB=0x00;
        DDRB=0xff;
        
        // Port C initialization
        // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
        // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
        PORTC=0x00;
        DDRC=0x00;
        
        // Port D initialization
        // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
        // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
        PORTD=0x00;
        DDRD=0x00;
        
        // Timer/Counter 0 initialization
        // Clock source: T0 pin Rising Edge
        // Mode: Normal top=0xFF
        // OC0 output: Disconnected
        TCCR0=0x07;
        TCNT0=0x00;
        OCR0=0x00;
        
        // Timer/Counter 1 initialization
        // Clock source: System Clock
        // Clock value: 1000.000 kHz
        // Mode: Normal top=0xFFFF
        // OC1A output: Discon.
        // OC1B output: Discon.
        // Noise Canceler: Off
        // Input Capture on Falling Edge
        // Timer1 Overflow Interrupt: Off
        // Input Capture Interrupt: Off
        // Compare A Match Interrupt: Off
        // Compare B Match Interrupt: Off
        TCCR1A=0x00;
        TCCR1B=0x02;
        TCNT1H=0x00;
        TCNT1L=0x00;
        ICR1H=0x00;
        ICR1L=0x00;
        OCR1AH=0x00;
        OCR1AL=0x00;
        OCR1BH=0x00;
        OCR1BL=0x00;
        
        // Timer/Counter 2 initialization
        // Clock source: TOSC1 pin
        // Clock value: PCK2/128
        // Mode: Normal top=0xFF
        // OC2 output: Disconnected
        ASSR=0x08;
        TCCR2=0x05;
        TCNT2=0x00;
        OCR2=0x00;
        
        // External Interrupt(s) initialization
        // INT0: On
        // INT0 Mode: Rising Edge
        // INT1: On
        // INT1 Mode: Rising Edge
        // INT2: Off
        GICR|=0xC0;
        MCUCR=0x0F;
        MCUCSR=0x00;
        GIFR=0xC0;
        
        // Timer(s)/Counter(s) Interrupt(s) initialization
        TIMSK=0x40;
        
        // USART initialization
        // USART disabled
        UCSRB=0x00;
        
        // Analog Comparator initialization
        // Analog Comparator: Off
        // Analog Comparator Input Capture by Timer/Counter 1: Off
        ACSR=0x80;
        SFIOR=0x00;
        
        // ADC initialization
        // ADC disabled
        ADCSRA=0x00;
        
        // SPI initialization
        // SPI disabled
        SPCR=0x00;
        
        // TWI initialization
        // TWI disabled
        TWCR=0x00;
        
        // Alphanumeric LCD initialization
        // Connections specified in the
        // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
        // RS - PORTA Bit 0
        // RD - PORTA Bit 1
        // EN - PORTA Bit 2
        // D4 - PORTA Bit 4
        // D5 - PORTA Bit 5
        // D6 - PORTA Bit 6
        // D7 - PORTA Bit 7
        // Characters/line: 16
        lcd_init(16);
        
        // Global enable interrupts
        #asm("sei")
        
        while (1);
        }

        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه

        لطفا صبر کنید...
        X