改进AVR DDS信号发生器是在这里。 第一AVR单片机的DDS V1.0发电机只是一个没有任何幅度控制运行的DDS算法的尝试。 这一次,我仍然想保持如普遍使用的电路元件,单面电路板上加上良好的功能来的最低计数简单的事情。
![]() V2.0的主要AVR的DDS信号发生器的功能:
![]()
正如你可以看到设备需要几个电压:+5 V,- 12V,+12 V,GND。 - 12V和+12 V用于胶印和幅度控制。 在这种情况下,电源结构使用简单的变压器和稳压器很少。
![]() ![]() ![]() ![]() 重要通知,有一个单独的菜单改变频率步进。 如果您需要更改发生器频率范围宽,这是很方便。 这允许设置任何频率相对较少的按钮点击。 噪音的产生,没有频率设置。 它使用简单兰特()函数,结果连续输出DDS输出。 高速信号有4个频率可供选择:1,2,4和8MHz。 电路图和PCB 的DDS发生器(不含电源)电路原理图,非常简单容易的访问组件。 它使用了以下几个部分:
![]() ![]() ![]() ![]() 无效的静态内嵌Signal_OUT(CONST uint8_t uint8_t *信号,uint8_t AD2,uint8_t AD1,AD0) { ASM挥发(EOR R18,R18,R18 <-0“,” N T“ “EOR R19,R19,R19 <-0”的“ n T” “1:” N T“ #p#分页标题#e# “添加R18,0%; 1个周期”的“ n T” “ADC,1%R19; 1个周期”的“ n T” “ADC%A3%2; 1个周期”的“ n T” “防止山泥倾泻; 3个周期”的“ n T” “%4 出,__tmp_reg__; 1个周期”,“ N T” “SBIS 5%,2,1个周期,如果没有跳过”,“ N T “ “RJMP 1B,2个周期。 共有10个周期“,” N T“ : :“R”(AD0),“R”(AD1),“R”(AD2),“E”(信号),“我”(_SFR_IO_ADDR(PORTA)),“我”(_SFR_IO_ADDR(SPCR)) “R18”,“R19” #p#分页标题#e# );} DDS信号表放置在闪光路段地址与0xXX00开始。 因此,这些路段将在适当的内存位置的makefile定义: #定义路段存储信号表 LDFLAGS + = - WL -节启动=. MySection1 = 0x3A00 LDFLAGS + = - WL -节启动=. MySection2 = 0x3B00 LDFLAGS + = - WL -节启动=. MySection3 = 0x3C00 LDFLAGS + = - WL -节启动=. MySection4 = 0x3D00 LDFLAGS + = - WL -节启动=. MySection5 = 0x3E00 LDFLAGS + = - WL -节启动=. MySection6 = 0x3F00 这里描述的LCD控制库。 我不想去代码讨论太深。 源代码的评论非常好,如果会有关于源代码的任何问题和建议 - 随意删除评论。 测试和讨论 我已经测试信号发生器,示波器和频率计数器。 信号看起来像所有频率的范围[1至65535Hz]预期。 振幅和偏移调节工程确定。 如果offset设置为5V,那么最大的明确信号幅度可能是5V另一5V已经用于抵消(相同的是如果偏移量为- 5V)。 #p#分页标题#e# 下面是一些测试信号示波器屏幕上: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() (责任编辑:admin) |