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





دیدگاه