اطلاعیه

Collapse
No announcement yet.

اعداد علامت دار در کد آقای کی نژاد

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

    اعداد علامت دار در کد آقای کی نژاد

    با سلام و تشکر فراوان از استاد گران قدرم آقای کی نژاد
    من در بخش 49 آموزش های xmega در قسمت کد نمونه تولید شکل موج توسط واحد DAC به مشکل بر خوردم و این قسمت از کد رو که با عدد 2048 جمع شده رو متوجه نمی شم . البته تا اونجایی که از مدار منطقی یادم هست مثل اینکه از سیستم علامت گذاری متمم مبتا استفاده شده ، ولی فرمول متمم مبتا به این صورت می باشد ؟!!!!!
    [N] = 2^n -(N)

    کد استاد کی نژاد :
    کد:
    [FONT=Yekan]/*[/FONT] * XMEGA_dac_0.c
     * Author: Ozhan KD
     * www.KnowledgePlus.ir
     
     This program produces two sine waves with different frequencies on DACB outputs (PB2 and PB3)
     PC speaker must be connected to output jack
     
     */ 
    
    
    #define F_CPU 32000000UL
    #include <avr/io.h>
    #include <avr/pgmspace.h>
    #include <util/delay.h>
    
    
    const signed int sine[256] PROGMEM={
     0 , 50 , 100 , 151 , 201 , 251 , 300 , 350 , 399 , 449 , 497 , 546 , 594 , 642 , 690 , 737 ,
     783 , 830 , 875 , 920 , 965 , 1009 , 1052 , 1095 , 1137 , 1179 , 1219 , 1259 , 1299 , 1337 , 1375 , 1411 ,
     1447 , 1483 , 1517 , 1550 , 1582 , 1614 , 1644 , 1674 , 1702 , 1729 , 1756 , 1781 , 1805 , 1828 , 1850 , 1871 ,
     1891 , 1910 , 1927 , 1944 , 1959 , 1973 , 1986 , 1997 , 2008 , 2017 , 2025 , 2032 , 2037 , 2041 , 2045 , 2046 ,
     2047 , 2046 , 2045 , 2041 , 2037 , 2032 , 2025 , 2017 , 2008 , 1997 , 1986 , 1973 , 1959 , 1944 , 1927 , 1910 ,
     1891 , 1871 , 1850 , 1828 , 1805 , 1781 , 1756 , 1729 , 1702 , 1674 , 1644 , 1614 , 1582 , 1550 , 1517 , 1483 ,
     1447 , 1411 , 1375 , 1337 , 1299 , 1259 , 1219 , 1179 , 1137 , 1095 , 1052 , 1009 , 965 , 920 , 875 , 830 ,
     783 , 737 , 690 , 642 , 594 , 546 , 497 , 449 , 399 , 350 , 300 , 251 , 201 , 151 , 100 , 50 ,
     0 ,-50 ,-100 ,-151 ,-201 ,-251 ,-300 ,-350 ,-399 ,-449 ,-497 ,-546 ,-594 ,-642 ,-690 ,-737 ,
     -783 ,-830 ,-875 ,-920 ,-965 ,-1009 ,-1052 ,-1095 ,-1137 ,-1179 ,-1219 ,-1259 ,-1299 ,-1337 ,-1375 ,-1411 ,
     -1447 ,-1483 ,-1517 ,-1550 ,-1582 ,-1614 ,-1644 ,-1674 ,-1702 ,-1729 ,-1756 ,-1781 ,-1805 ,-1828 ,-1850 ,-1871 ,
     -1891 ,-1910 ,-1927 ,-1944 ,-1959 ,-1973 ,-1986 ,-1997 ,-2008 ,-2017 ,-2025 ,-2032 ,-2037 ,-2041 ,-2045 ,-2046 ,
     -2047 ,-2046 ,-2045 ,-2041 ,-2037 ,-2032 ,-2025 ,-2017 ,-2008 ,-1997 ,-1986 ,-1973 ,-1959 ,-1944 ,-1927 ,-1910 ,
     -1891 ,-1871 ,-1850 ,-1828 ,-1805 ,-1781 ,-1756 ,-1729 ,-1702 ,-1674 ,-1644 ,-1614 ,-1582 ,-1550 ,-1517 ,-1483 ,
     -1447 ,-1411 ,-1375 ,-1337 ,-1299 ,-1259 ,-1219 ,-1179 ,-1137 ,-1095 ,-1052 ,-1009 ,-965 ,-920 ,-875 ,-830 ,
     -783 ,-737 ,-690 ,-642 ,-594 ,-546 ,-497 ,-448 ,-399 ,-350 ,-300 ,-251 ,-201 ,-151 ,-100 ,-50};
    
    
    int main(void)
    {
     unsigned char i=0;
     
     //configuration of system clock , 32MHZ internal
     OSC_CTRL|=OSC_RC32MEN_bm;
     while(!(OSC_STATUS & OSC_RC32MRDY_bm));
     CCP=CCP_IOREG_gc;
     CLK_CTRL=CLK_SCLKSEL_RC32M_gc; 
     
     //configuration of DAC
     DACB_CTRLB=DAC_CHSEL_DUAL_gc;
     DACB_CTRLC=DAC_REFSEL_AREFA_gc;
     DACB_CTRLA=DAC_CH1EN_bm|DAC_CH0EN_bm|DAC_ENABLE_bm; 
     
     while (1) 
     {    
      while ( !(DACB_STATUS & DAC_CH0DRE_bm));
      DACB_CH0DATA = 2048+pgm_read_word(&sine[i]);
      while ( !(DACB_STATUS & DAC_CH1DRE_bm));
      DACB_CH1DATA= 2048+pgm_read_word(&sine[(unsigned char)(i<<1)]);
      i++;
      _delay_us(10);
      
     }
    [FONT=Yekan]}[/FONT]
    جدیدترین ویرایش توسط hfhossein; ۲۳:۳۸ ۱۳۹۶/۱۱/۲۸.
    IN GOD WE TRUST

    #2
    پاسخ : اعداد علامت دار در کد آقای کی نژاد

    2048 در واقع معرف سطح DC شکل موج است. با توجه به 12 بیتی بودن DAC در XMEGA محدوده تغییرات دیتای آن بین 0 تا 4095 است. در جدول، اعداد بین مثبت و منفی 2047 تغییرات دارند که حاصل جمع این اعداد با 2048 در نهایت عدد مثبتی را برای قرار گرفتن در رجیستر دیتای DAC ایجاد می کند.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه

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