اطلاعیه

Collapse
No announcement yet.

برنامه فرکانس مترم درست کار نمیکنه لطفا کمکم کنیدلطفففففا

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

    برنامه فرکانس مترم درست کار نمیکنه لطفا کمکم کنیدلطفففففا

    با سلام
    من یه برنامه تو کدویژن نوشتم واسه تشخیص فرکانس محیط که برای این کار از وقفه استفاده کردم و در تابع وقفه بدین ترتیب پیش رفتم:
    ریختم و با فرمول زیر زمان Mرا در متغیر TCNT0از یک لبه تا لبه ی بعدی تایمر را فعال کردم و مقدار
    را بدست اوردم و بعد هم فرکانس

    TIME=(N*(M+1))/F
    ولی مشکل اینجاست که تو پروتئوس با کلاکای مختلف یک فرکانس نشون میده
    لطفا به من کمک کنید و بگید اشتباهم کجاست؟
    اینم برنامه:
    /************************************************** ***
    Chip type : ATmega32
    Program type : Application
    Clock frequency : 8.000000 MHz
    Memory model : Small
    External RAM size : 0
    Data Stack size : 512
    ************************************************** ***/

    #include <mega32.h>
    #include <stdlib.h>
    #include <delay.h>
    #asm
    .equ __lcd_port=0x18 ;PORTB
    #endasm
    #include <lcd.h>
    static int i=0;
    long int M;
    int F;
    char*str;
    // External Interrupt 0 service routine
    interrupt [EXT_INT0] void ext_int0_isr(void)
    {
    i=i+1;
    // Place your code here
    TCNT0=0x03;
    //TCNT0=0B10010011;
    if(i==2)
    {

    i=0;
    TCNT0=M;
    TCNT0=0X00;

    }
    }

    // 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=0xFF;

    // 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: System Clock
    // Clock value: Timer 0 Stopped
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCCR0=0x00;
    TCNT0=0x00;
    OCR0=0x00;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;

    // External Interrupt(s) initialization
    // INT0: On
    // INT0 Mode: Rising Edge
    // INT1: Off
    // INT2: Off
    GICR|=0x40;
    MCUCR=0x03;
    MCUCSR=0x00;
    GIFR=0x40;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;

    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    lcd_init(16);
    // Global enable interrupts
    #asm("sei&quot

    while (1)
    {
    F=125000/(1+M);
    itoa(F,str);
    lcd_clear();
    lcd_puts(str);
    //delay_ms(100);
    // PORTA=F;
    // Place your code here

    };
    }

    #2
    پاسخ : برنامه فرکانس مترم درست کار نمیکنه لطفا کمکم کنیدلطفففففا

    سلام .
    اول اینو بگم که دنیای مجازی با دنیای واقعی تفاوتشون از زمین تا آسمون من چندتا پروژه توی پرتئوس بستم نتیجه با ساخت توی دنیای واقعی به کلی فرق داشت پس این توصیه از من که به پرتئوس اعتماد نکن.پس این اولین اشکالی که به برنامت وارده .
    این برنامه تقریبا بهم جواب داده و کمی با مال شما فرق داره ببین کارتو راه میندازه:
    //Project :
    //Version :
    //Date : 2007/01/25
    //Author : applecoinc
    //Company : avr
    //Comments:


    //Chip type : ATmega16
    //Program type : Application
    //Clock frequency : 8.000000 MHz
    //Memory model : Small
    //External SRAM size : 0
    //Data Stack size : 256
    //************************************************** ***/

    #include <mega32.h>
    #include <delay.h>
    #include <stdio.h>
    #include <lcd.h>

    #asm
    .equ __lcd_port=0x1B ;PORTA
    #endasm

    unsigned long int timer0_ov;
    unsigned long int in_freq;
    unsigned char lcd_buff[20];

    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    timer0_ov ++;
    }

    void main(void)
    {

    // Timer/Counter 0 initialization
    // Clock source: T0 pin Falling Edge
    // Mode: Normal top=FFh
    // OC0 output: Disconnected
    TCNT0=0x00;
    OCR0=0x00;
    TCCR0=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x01;

    // LCD module initialization
    lcd_init(16);

    while (1)
    {
    TCCR0=0x06; // Start Timer T0 pin Falling Edge
    #asm("sei&quot // Global enable interrupts
    delay_ms(1000);
    #asm("cli" // Global disable interrupts
    in_freq = timer0_ov * 256 + TCNT0;
    sprintf(lcd_buff,"Freqency=%d",in_freq);
    lcd_clear();
    lcd_puts(lcd_buff);
    TCCR0=0x00; //Stopt Timer0
    timer0_ov=0; //Prepare for next count
    TCNT0=0; //Clear Timer0
    };
    }
    علم و عمل پیوند نزدیک دارند , و کسی که دانست باید به آن عمل کند. چرا که علم عمل را فرا خواند, اگر پاسخش داد میماند و گر نه کوچ میکند. امام علی (ع)

    دیدگاه


      #3
      پاسخ : برنامه فرکانس مترم درست کار نمیکنه لطفا کمکم کنیدلطفففففا

      یا از کریستال خارجی استفاده کن و یا اینکه فیوزبیت مربوط به کلاکت رو تصحیح کن .
      موفق باشید .
      misagh_hi@yahoo.com

      دیدگاه

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