اطلاعیه

Collapse
No announcement yet.

اشکال در تایمر کپچر مگا۱۲۸

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

    اشکال در تایمر کپچر مگا۱۲۸

    آقا ما مشکلاتمون با این میکروی ۱۲۸ تمومی نداره
    میشه منو راهنمایی کنید آدرس محل ذخیره شدن icp3 دقیقا گجاست؟؟؟
    طبق دیتاشیت صفحه 362:
    آدرس icp1 دقیقا تو خونه حافظه 0x26 هستش:
    آدرس icp3 رو میزنه 0x80
    وقتی وارد میکنی میزنه همچین آدرسی تو محدوده نیست!
    وقتی بصورت هگزا هم بخوتهی بزنی میبینی اصلا 8 مورد قبول نیست!!!!
    تو کد ویژن برای برنامه زیر باید آدرس icp3 رو بدی تا برنامه کار کنه!!!!
    الان بصورت پیشفرض آدرس icp1رو داره و لازم نداره ولی موقع کامپایل اصلا ICP3 رو نمیشناسه و ارور میده!!!!
    جدیدترین ویرایش توسط offlineone23; ۰۱:۲۳ ۱۴۰۰/۰۳/۰۶.

    #2
    پاسخ : اشکال در تایمر کپچر مگا۱۲۸


    #include <mega128a.h>
    #include <delay.h>
    #include <stdlib.h>
    #include <alcd.h>




    // Declare your global variables here
    int tacho,spd;
    char ch[8];
    // Timer1 input capture interrupt service routine
    interrupt [TIM1_CAPT] void timer1_capt_isr(void)
    {
    static int tlastpulse;
    tacho=ICR1-tlastpulse;
    tlastpulse=ICR1;


    }


    // Timer3 input capture interrupt service routine
    interrupt [TIM3_CAPT] void timer3_capt_isr(void)
    {
    static int slastpulse;
    spd=ICR3-slastpulse;
    slastpulse=ICR3;


    }


    void main(void)
    {
    // Declare your local variables here


    DDRD=0x00;
    DDRE=0x00;


    {
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=0xFF
    // OC0 output: Disconnected
    ASSR=0<<AS0;
    TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);
    TCNT0=0x00;
    OCR0=0x00;


    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Disconnected
    // OC1B output: Disconnected
    // OC1C output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Rising Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: On
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    // Compare C Match Interrupt: Off
    TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<COM1C1) | (0<<COM1C0) | (0<<WGM11) | (0<<WGM10);
    TCCR1B=(0<<ICNC1) | (1<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10);
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    OCR1CH=0x00;
    OCR1CL=0x00;


    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    TCCR2=(0<<WGM20) | (0<<COM21) | (0<<COM20) | (0<<WGM21) | (0<<CS22) | (1<<CS21) | (0<<CS20);
    TCNT2=0x00;
    OCR2=0x00;


    // Timer/Counter 3 initialization
    // Clock source: System Clock
    // Clock value: Timer3 Stopped
    // Mode: Normal top=0xFFFF
    // OC3A output: Disconnected
    // OC3B output: Disconnected
    // OC3C output: Disconnected
    // Noise Canceler: Off
    // Input Capture on Rising Edge
    // Timer3 Overflow Interrupt: Off
    // Input Capture Interrupt: On
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    // Compare C Match Interrupt: Off
    TCCR3A=(0<<COM3A1) | (0<<COM3A0) | (0<<COM3B1) | (0<<COM3B0) | (0<<COM3C1) | (0<<COM3C0) | (0<<WGM31) | (0<<WGM30);
    TCCR3B=(0<<ICNC3) | (1<<ICES3) | (0<<WGM33) | (0<<WGM32) | (0<<CS32) | (0<<CS31) | (0<<CS30);
    TCNT3H=0x00;
    TCNT3L=0x00;
    ICR3H=0x00;
    ICR3L=0x00;
    OCR3AH=0x00;
    OCR3AL=0x00;
    OCR3BH=0x00;
    OCR3BL=0x00;
    OCR3CH=0x00;
    OCR3CL=0x00;


    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=(0<<OCIE2) | (0<<TOIE2) | (1<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);
    ETIMSK=(1<<TICIE3) | (0<<OCIE3A) | (0<<OCIE3B) | (0<<TOIE3) | (0<<OCIE3C) | (0<<OCIE1C);
    }


    // Global enable interrupts
    #asm("sei")
    lcd_init(16);
    while (1)
    {

    lcd_clear();
    lcd_gotoxy(0,0);
    itoa(tacho,ch);
    lcd_puts(ch);
    lcd_gotoxy(0,1);
    itoa(spd,ch);
    lcd_puts(ch);
    }
    }



    این هم متن برنامه!!!!
    جدیدترین ویرایش توسط offlineone23; ۰۱:۱۴ ۱۴۰۰/۰۳/۰۶. دلیل: تغییر برنامه

    دیدگاه

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