-
طراحی سیگنال ژنراتور
سلام
من یه سوال داشتم یه سیگنال ژنراتور ساده نوشتیم که موج های مربعی و سینوسی و مثلثی تولید میکنه حالا میخواییم یه جوری تغییرش بدیم که دامنه و فرکانس سیگنال خروجی قابل
تنظیم باشه. کسی میتونه راهنماییمون کنه . من کلا با ARM خیلی اشنایی ندارم.
کد:
#ifndef __ARM_dac_h
#define __ARM_dac_h
/* set p0.26 to DAC output */
void dac_init( void )
{
LPC_PINCON->PINSEL1 |= 0x00200000;
return;
}
/* dac function */
void dac_value(unsigned int dac)
{
dac_init();
LPC_DAC->DACR = (dac << 6) | 0x00010000;
}
#endif
//#include "ARM_delay.h"
uint16_t DAC1[36] =
{
700,690,680,650,630, 600,550, 500,450, 400,350,300,250,200,180,150,130,110,100,
110,130,150,180,200,250,300,350,400,450,500,550,600,630,650,680,690
};
uint16_t DAC2[36] =
{
700, 600, 500, 400,300,200,100,100,100,100,100,100,100,700, 600, 500, 400,300,200,100,100,100,100,
100,100,100,700, 600, 500, 400,300,200,100,100,100,100,
};
uint16_t DAC3[36] =
{
700, 700, 700, 700, 700, 700, 700, 700, 700,
200, 200, 200, 200, 200, 200, 200, 200, 200,
700, 700, 700, 700, 700, 700, 700, 700, 700,
200, 200, 200 , 200 ,200 , 200 , 200, 200 , 200
};
int main()
{
uint8_t i;
//LPC_PINCON->PINSEL0=0 ;
//LPC_PINCON->PINSEL1=0 ;
//LPC_PINCON->PINMODE0=0;
//LPC_GPIO1->FIODIR = LPC_GPIO0->FIODIR&(~1<<8);
//LPC_GPIO0->FIOMASK=0xffffff00;
LPC_GPIO0->FIODIR = 0xffffffff;
LPC_GPIO1->FIODIR = 0xffffffff;
LPC_GPIO2->FIODIR = 0xffffffff;
LPC_GPIO3->FIODIR = 0xffffffff;
LPC_GPIO4->FIODIR = 0xffffffff;
LPC_GPIO0->FIOPIN = 0;
LPC_GPIO1->FIOPIN = 0;
LPC_GPIO2->FIOPIN = 0;
LPC_GPIO3->FIOPIN = 0;
LPC_GPIO4->FIOPIN = 0;
while (1)
{
if(((LPC_GPIO0->FIOPIN)&(1<<8))==0)
{
for (i = 0; i < 36; i++)
{
dac_value(DAC1[i]*1023/818);
}
}
if(((LPC_GPIO0->FIOPIN)&(1<<9))==0)
{
for (i = 0; i < 36; i++)
{
dac_value(DAC2[i]*1023/818);
}
}
if(((LPC_GPIO0->FIOPIN)&(1<<10))==0)
{
for (i = 0; i < 36; i++)
{
dac_value(DAC3[i]*1023/818);
}
}
}
}
-
خوب الان مشکلتان چیه؟
dac که به سادگی راه اندازی میشه و بر اساس مقداری که در ان قرار میدهید هم ولتاژ کم و زیاد دمیشه. زمان را هم بهتره برای دقیق تر بدن از تایمر استفاده کنید که فرکانس را کم زیاد می کنه.
ما بقی برنامه نویسی است. شاید منظورتان این بوده که من کلا با
برنامه نویسی سی خیلی اشنایی ندارم!؟