亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gene_sinus.c

?? 這是ARM的一個例子
?? C
字號:
//*----------------------------------------------------------------------------
//*      ATMEL Microcontroller Software Support  -  ROUSSET  -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name           : dac_sine.c
//* Object              : Sinus wave generation for the AT91EB55
//*
//* 1.0 00/00/00 JCZ    : Creation
//*----------------------------------------------------------------------------

#ifndef AT91_DEBUG_NONE
#include <stdio.h>
#endif

#include <math.h>
#define _pi_       3.14159265358979323846

#include "parts/m55800/lib_m55800.h"
#include "targets/eb55/eb55.h"
#include "drivers/analog/analog.h"
#include "lib_tools.h"

extern AnalogDACTimerIrqDesc it_timer;
extern AnalogDescDac AnalogDac;
//* assembly Handler for software PDC
extern TypeAICHandler at91_asm_irq_timer_loop;

extern TypeAICHandler at91_asm_irq_check_pdc;


extern u_int mcki;

//* Local Variable
extern u_short sinus_table[4096*2];
const u_short sinus[]= {
    0x0200,    0x020C,    0x0218,    0x0224,    0x0231,    0x023D,    0x0249,    0x0255,
    0x0261,    0x026D,    0x0279,    0x0285,    0x0291,    0x029D,    0x02A9,    0x02B4,
    0x02C0,    0x02CB,    0x02D6,    0x02E1,    0x02EC,    0x02F7,    0x0302,    0x030C,
    0x0316,    0x0321,    0x032B,    0x0334,    0x033E,    0x0347,    0x0351,    0x035A,
    0x0362,    0x036B,    0x0373,    0x037C,    0x0384,    0x038B,    0x0393,    0x039A,
    0x03A1,    0x03A8,    0x03AE,    0x03B4,    0x03BA,    0x03C0,    0x03C5,    0x03CA,
    0x03CF,    0x03D4,    0x03D8,    0x03DC,    0x03E0,    0x03E3,    0x03E6,    0x03E9,
    0x03EC,    0x03EE,    0x03F0,    0x03F2,    0x03F3,    0x03F4,    0x03F5,    0x03F5,
    0x03F6,    0x03F5,    0x03F5,    0x03F4,    0x03F3,    0x03F2,    0x03F0,    0x03EE,
    0x03EC,    0x03E9,    0x03E6,    0x03E3,    0x03E0,    0x03DC,    0x03D8,    0x03D4,
    0x03CF,    0x03CA,    0x03C5,    0x03C0,    0x03BA,    0x03B4,    0x03AE,    0x03A8,
    0x03A1,    0x039A,    0x0393,    0x038B,    0x0384,    0x037C,    0x0373,    0x036B,
    0x0362,    0x035A,    0x0351,    0x0347,    0x033E,    0x0334,    0x032B,    0x0321,
    0x0316,    0x030C,    0x0302,    0x02F7,    0x02EC,    0x02E1,    0x02D6,    0x02CB,
    0x02C0,    0x02B4,    0x02A9,    0x029D,    0x0291,    0x0285,    0x0279,    0x026D,
    0x0261,    0x0255,    0x0249,    0x023D,    0x0231,    0x0224,    0x0218,    0x020C,
    0x01FF,    0x01F3,    0x01E7,    0x01DB,    0x01CE,    0x01C2,    0x01B6,    0x01AA,
    0x019E,    0x0192,    0x0186,    0x017A,    0x016E,    0x0162,    0x0156,    0x014B,
    0x013F,    0x0134,    0x0129,    0x011E,    0x0113,    0x0108,    0x00FD,    0x00F3,
    0x00E9,    0x00DE,    0x00D4,    0x00CB,    0x00C1,    0x00B8,    0x00AE,    0x00A5,
    0x009D,    0x0094,    0x008C,    0x0083,    0x007B,    0x0074,    0x006C,    0x0065,
    0x005E,    0x0057,    0x0051,    0x004B,    0x0045,    0x003F,    0x003A,    0x0035,
    0x0030,    0x002B,    0x0027,    0x0023,    0x001F,    0x001C,    0x0019,    0x0016,
    0x0013,    0x0011,    0x000F,    0x000D,    0x000C,    0x000B,    0x000A,    0x000A,
    0x000A,    0x000A,    0x000A,    0x000B,    0x000C,    0x000D,    0x000F,    0x0011,
    0x0013,    0x0016,    0x0019,    0x001C,    0x001F,    0x0023,    0x0027,    0x002B,
    0x0030,    0x0035,    0x003A,    0x003F,    0x0045,    0x004B,    0x0051,    0x0057,
    0x005E,    0x0065,    0x006C,    0x0074,    0x007B,    0x0083,    0x008C,    0x0094,
    0x009D,    0x00A5,    0x00AE,    0x00B8,    0x00C1,    0x00CB,    0x00D4,    0x00DE,
    0x00E9,    0x00F3,    0x00FD,    0x0108,    0x0113,    0x011E,    0x0129,    0x0134,
    0x013F,    0x014B,    0x0156,    0x0162,    0x016E,    0x017A,    0x0186,    0x0192,
    0x019E,    0x01AA,    0x01B6,    0x01C2,    0x01CE,    0x01DB,    0x01E7,    0x01F3
} ;

#define SIZE_BUFFER (sizeof(sinus)/sizeof(u_short))
// * Local variable
static const char main_menu[]=
{
"\n\r  COMMAND MENU:Sinus Gene\n\r"
"  0)  Info \n\r"
"  1)  Get timer value \n\r"
"  2)  Get sinus val \n\r"
"  3)  Rampping \n\r"
"  4)  get 256 pt sinus val \n\r"
"  5)  Print \n\r"
"  6)  Stop DAC 0\n\r"
"  7)  Stop DAC 1\n\r"
"  8)  Run DAC 0 in loop mode not guarantee\n\r"
"  9)  Run DAC 1 in loop mode not guarantee\n\r"
" 10)  Run DAC 0 with Software PDC \n\r"
" 11)  Run DAC 0 with Software PDC \n\r"
" 12)  Set echo \n\r"
" 99)  Quit program\n\r"
"Enter command to execute: "
};

//*----------------------------------------------------------------------------
//* Function Name       : Get_Command_sinus
//* Object              : Get command val
//* Input Parameters    : None
//* Output Parameters   : int : Command num
//*----------------------------------------------------------------------------
int Get_Command_sinus(void)
{
  int command;
  at91_print_frame(&COM,(char *)main_menu,sizeof(main_menu));
  at91_scanf(&COM,"%d", &command);
  at91_print_crlf(&COM);
  return command;
}

//*----------------------------------------------------------------------------
//* Function Name       : menu
//* Object              : check general menu
//* Input Parameters    : None
//* Output Parameters   : None
//*----------------------------------------------------------------------------
void menu_sinus(void)
{
    int command = 0;
    int tioc;
    int tc_div = TC_CLKS_MCK32;
    int begin_val,end_val,nb_point,cmpt,min,max;
    int step;
    int div;
    u_short *sinus_gene = &sinus_table[1];

    double sin_val;
    sinus_table[0]=0x03FF;
    //*int val
    nb_point = 25;
    tioc = 100;
    begin_val=0x100;
    end_val=0x3A0;
         for (cmpt = 0,max = 0 ,min =-1; cmpt < nb_point;cmpt++)
         {
            //* compute sinus  by point
                sin_val = sin((2*_pi_)*((double)cmpt/(double)nb_point));
            //* scale
            sin_val= sin_val * ((end_val-begin_val)/2);
            sin_val += ((end_val -begin_val)/2);
            sin_val += begin_val;
            sinus_gene[cmpt]= (u_short )sin_val ;
            if ( max > sinus_gene[cmpt]) max =sinus_gene[cmpt];
                if ( min < sinus_gene[cmpt]) min = sinus_gene[cmpt];
        }
     timer_interrup.echo =0;

while(command!=99)
  {
    command = Get_Command_sinus();
    switch(command)
    {
     case 0:          /*  Info */
        sprintf(message," output min 0x%04X max 0x%04X nb point %d 0x%04X \n\r",min,max,nb_point,nb_point);
        at91_print(&COM,message);
        print_timer_mode(tioc,tc_div);


    // * calculate the frequnecy
        if (tc_div == TC_CLKS_MCK1024) div = 1024;
        if (tc_div == TC_CLKS_MCK128) div = 128;
        if (tc_div == TC_CLKS_MCK32) div = 32;
        if (tc_div == TC_CLKS_MCK8) div = 8;
        if (tc_div == TC_CLKS_MCK2) div = 2;
        div = (tioc*nb_point*div);
        if (div > mcki)
        sprintf(message," frequency generation = %d mhZ\n\r",(mcki*1000)/div);
        else
        sprintf(message," frequency generation = %d Hz\n\r", mcki/div );
        at91_print(&COM,message);

     break;
     case 1:         /* Set Timer*/
        get_timer_mode(&tioc,&tc_div);

     break;

     case 2:        /* Get Sinus Val*/
     //* Get Value
        at91_print(&COM,"Low DC Value (Hex):");
        at91_scanf(&COM,"%X", &begin_val);
        sprintf(message,"\n\r%d Hex:%04X\n\r",begin_val,begin_val);
        at91_print(&COM,message);
        at91_print(&COM,"MAX DC Value (Hex):");
        at91_scanf(&COM,"%X", &end_val);
        sprintf(message,"\n\r%d Hex:%04X\n\r",end_val,end_val);
        at91_print(&COM,message);
        at91_print(&COM," nb_point (dec):");
        at91_scanf(&COM,"%d", &nb_point);
        sprintf(message,"\n\r%d Hex:%04X\n\r",nb_point,nb_point);
        at91_print(&COM,message);
     //* Compute sinus
         for (cmpt = 0,max = 0 ,min =-1; cmpt < nb_point;cmpt++)
         {
            //* compute sinus  by point
                sin_val = sin((2*_pi_)*((double)cmpt/(double)nb_point));
            //* scale
            sin_val= sin_val * ((end_val-begin_val)/2);
            sin_val += ((end_val -begin_val)/2);
            sin_val += begin_val;
            sinus_gene[cmpt]= (u_short )sin_val ;
            if ( max > sinus_gene[cmpt]) max =sinus_gene[cmpt];
                if ( min < sinus_gene[cmpt]) min = sinus_gene[cmpt];
        }
    //* print result
        sprintf(message," min 0x%04X max 0x%04X nb val %d \n\r",max,min,cmpt);
        at91_print(&COM,message);
        break;
     case 3:         /* Set DC Value */
        at91_print(&COM," begin DC Value (Hex):");
        at91_scanf(&COM,"%X", &begin_val);
        sprintf(message," \n\r%d Hex:%04X \n\r",begin_val,begin_val);at91_print(&COM,message);
        at91_print(&COM," step (dec):");
        at91_scanf(&COM,"%d", &step);
        sprintf(message," \n\r%d Hex:%04X \n\r",step,step);at91_print(&COM,message);
        at91_print(&COM," nb (HEX):");
        at91_scanf(&COM,"%X", &nb_point);
        sprintf(message," \n\r%d Hex:%04X \n\r",nb_point,nb_point);at91_print(&COM,message);
        sinus_gene[0]= begin_val;
        for (cmpt = 1,max = 0 ,min =-1; cmpt <= nb_point;cmpt++)
        {
            sinus_gene[cmpt]= sinus_gene[cmpt-1]+ step;
            if ( max > sinus_gene[cmpt]) max =sinus_gene[cmpt];
            if ( min < sinus_gene[cmpt]) min =sinus_gene[cmpt];
        }
        for (; cmpt <= 2* nb_point ;cmpt++)
        {
            sinus_gene[cmpt]= sinus_gene[cmpt-1]- step;
            if ( max > sinus_gene[cmpt]) max =sinus_gene[cmpt];
            if ( min < sinus_gene[cmpt]) min =sinus_gene[cmpt];
        }
         sprintf(message," min %04X max %04X nb val %d \n\r",max,min,cmpt);at91_print(&COM,message);
        nb_point=cmpt-1;
        break;

     case 4:
        for ( max = 0 ,min =-1 ,cmpt = 0,nb_point=0; cmpt <SIZE_BUFFER ;cmpt++)
        {
            sinus_gene[cmpt] = sinus[cmpt];
            if ( max > sinus_gene[cmpt]) max =sinus_gene[cmpt];
            if ( min < sinus_gene[cmpt]) min =sinus_gene[cmpt];
            nb_point++;
        }
        break;
     case 5:
        for (cmpt = 0; cmpt < nb_point;cmpt++)
        {
            if ( !(cmpt %8)) at91_print_crlf(&COM);
            sprintf(message,"%04X ",sinus_gene[cmpt]);at91_print(&COM,message);
        }
        break;
     case 6:      /* Command Reset */
        AnalogDac.dac=&DAC0_DESC;
        AnalogDac.timer=timer_base.TC_dac0;
        at91_analog_close_dac( &AnalogDac);
     break;
     case 7:      /* Command Reset */
        AnalogDac.dac=&DAC1_DESC;
        AnalogDac.timer=timer_base.TC_dac1;
        at91_analog_close_dac(&AnalogDac);
     break;

     case 8:       /*  DAC0 PDC hard  */
        AnalogDac.dac=&DAC0_DESC;
        AnalogDac.timer=timer_base.TC_dac0;
//      at91_analog_open_dac_loop(&AnalogDac,timer_base.trig_selection_dac0 ,tioc,tc_div,sinus_table,nb_point);
        //* Open the interrupt on the AIC
         at91_irq_open ( AnalogDac.timer->periph_id, 7, AIC_SRCTYPE_INT_EDGE_TRIGGERED, &at91_asm_irq_check_pdc ) ;
         //* Enable the RC Compare interrupt
        AnalogDac.timer->tc_base->TC_IER = TC_CPCS ;
        break;
    case 9:      /*  DAC1 PDC hard  */
        AnalogDac.dac=&DAC1_DESC;
        AnalogDac.timer=timer_base.TC_dac1;
//      at91_analog_open_dac_loop(&AnalogDac,timer_base.trig_selection_dac1,tioc,tc_div,sinus_table,nb_point);
        //* Open the interrupt on the AIC
         at91_irq_open ( AnalogDac.timer->periph_id, 7, AIC_SRCTYPE_INT_EDGE_TRIGGERED, &at91_asm_irq_check_pdc ) ;
         //* Enable the RC Compare interrupt
        AnalogDac.timer->tc_base->TC_IER = TC_CPCS ;
        break;

    case 10:         /*  DAC0 PDC soft  */
        it_timer.dac=&DAC0_DESC;
        it_timer.timer=timer_base.TC_dac0;
        it_timer.AsmDacHandler=&at91_asm_irq_timer_loop;
        timer_interrup.cmpt=0;
        at91_analog_open_dac_loop_soft(&it_timer,timer_base.trig_selection_dac0 ,tioc,tc_div,sinus_gene,nb_point);
        break;
    case 11:         /*  DAC1 PDC soft  */
        it_timer.dac=&DAC1_DESC;
        it_timer.timer=timer_base.TC_dac1;
        it_timer.AsmDacHandler=&at91_asm_irq_timer_loop;
        timer_interrup.cmpt=0;
        at91_analog_open_dac_loop_soft(&it_timer,timer_base.trig_selection_dac1,tioc,tc_div,sinus_gene,nb_point);
         break;
    case 12:         /*  set echo  */
        at91_print(&COM,"\n\r set the echo :");
        timer_interrup.echo = at91_get_val(&COM,timer_interrup.echo );
        break;
    case 99:         /*  quit  */
        break;

    default:         /*  invalid command  */
        at91_print(&COM,"Invalid command entered. Please enter again!\n\r");
    }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本在线看| 国产亚洲一区二区在线观看| 国产在线视频不卡二| 天堂午夜影视日韩欧美一区二区| 日本一区二区高清| 日本一区二区电影| 中文字幕第一区二区| 欧美激情一区在线观看| 国产日韩综合av| 国产精品久久久久久亚洲毛片| 精品国产免费一区二区三区四区| 日韩一区二区三区四区| 日韩欧美在线网站| 中文字幕欧美三区| 国产精品美女www爽爽爽| 国产精品美女久久久久高潮| 中文字幕制服丝袜成人av | 亚洲免费av在线| 亚洲男人的天堂在线aⅴ视频| 亚洲激情在线激情| 亚洲第四色夜色| 久草精品在线观看| 国产不卡视频在线观看| 色婷婷久久久综合中文字幕| 91国偷自产一区二区使用方法| 欧美日本在线播放| 精品处破学生在线二十三| 欧美激情在线观看视频免费| 亚洲一区二区在线免费看| 精品在线播放午夜| 色综合咪咪久久| 日韩免费一区二区| 国产精品久久久久一区二区三区 | 国产精品污www在线观看| 亚洲丝袜另类动漫二区| 肉色丝袜一区二区| 不卡免费追剧大全电视剧网站| 欧美中文字幕一区| 欧美精品一区二区三区高清aⅴ| 国产精品美女久久久久久| 丝袜a∨在线一区二区三区不卡| 91视频国产资源| 欧美日韩亚洲综合在线| 国产亚洲精品bt天堂精选| 亚洲成人在线免费| 国产成人啪午夜精品网站男同| 日本精品一区二区三区高清| 久久香蕉国产线看观看99| 亚洲午夜激情网站| 成人小视频免费在线观看| 欧美日韩电影一区| 日韩一区在线免费观看| 精品一区二区在线观看| 91豆麻精品91久久久久久| 国产午夜精品美女毛片视频| 三级精品在线观看| 色系网站成人免费| 中文字幕av一区 二区| 美女国产一区二区| 欧美精品精品一区| 一区二区三区四区激情| 成人av电影在线网| 国产午夜精品在线观看| 久久精品国内一区二区三区| 欧美体内she精视频| 中文字幕日韩一区| 成人一级黄色片| 国产性色一区二区| 久久99精品久久久| 日韩精品一区国产麻豆| 人禽交欧美网站| 91精品久久久久久久91蜜桃| 亚洲国产wwwccc36天堂| 欧美亚洲国产一区二区三区| 亚洲黄色免费网站| 91高清在线观看| 亚洲电影激情视频网站| 欧美日韩国产首页在线观看| 一区av在线播放| 欧美日韩国产电影| 日韩成人精品在线| 精品欧美乱码久久久久久1区2区| 全国精品久久少妇| 欧美国产精品中文字幕| 国产高清不卡二三区| 国产日韩欧美激情| 成人av电影在线观看| 亚洲欧美日韩电影| 欧美性xxxxxx少妇| 日本 国产 欧美色综合| 精品区一区二区| 懂色av一区二区三区免费看| 国产精品成人网| 欧美唯美清纯偷拍| 秋霞影院一区二区| 久久精品免费在线观看| 色综合一区二区| 午夜精品久久久久久久| 久久天天做天天爱综合色| 国产高清不卡一区二区| 亚洲靠逼com| 欧美午夜精品一区二区三区 | 蜜桃视频一区二区| 国产偷v国产偷v亚洲高清| 91免费观看视频在线| 亚洲成av人片www| 久久久久免费观看| 色婷婷精品大在线视频| 无吗不卡中文字幕| 国产日韩欧美亚洲| 欧美性猛片xxxx免费看久爱| 麻豆久久一区二区| 18成人在线观看| 日韩免费观看高清完整版在线观看| 国产精品自拍一区| 亚洲午夜国产一区99re久久| 26uuu成人网一区二区三区| 99久久国产免费看| 国产一区视频在线看| 亚洲美女偷拍久久| 日韩三级在线免费观看| 色一区在线观看| 国产精品影视在线| 免费一区二区视频| 一区二区在线看| 欧美国产日韩a欧美在线观看| 欧美群妇大交群中文字幕| 成人av电影在线网| 国产在线国偷精品产拍免费yy| 国产一区二区免费看| 亚洲最快最全在线视频| 欧美激情在线免费观看| 日韩欧美一区二区不卡| 日本韩国欧美一区二区三区| 国产福利一区二区三区视频| 天天综合网天天综合色| 亚洲视频小说图片| 日本一区二区成人| 久久九九国产精品| 精品国产不卡一区二区三区| 欧美日韩免费高清一区色橹橹| 99久久久久免费精品国产 | 97超碰欧美中文字幕| 国产又黄又大久久| 黑人巨大精品欧美一区| 午夜电影网一区| 亚洲国产精品一区二区www在线 | 91免费观看视频在线| 成人黄色av电影| 丁香婷婷综合网| 国产精品一二三四五| 韩国中文字幕2020精品| 裸体在线国模精品偷拍| 日本网站在线观看一区二区三区| 日韩中文字幕一区二区三区| 亚洲线精品一区二区三区 | 日韩一区二区在线看| 欧美久久久久久久久久| 欧美日韩国产另类一区| 欧美日韩一二三区| 日韩女优毛片在线| 精品国产伦一区二区三区观看方式| 欧美成人高清电影在线| 久久综合久色欧美综合狠狠| 久久久精品国产免大香伊| 亚洲成人福利片| 免费的国产精品| 国产一区二区三区在线观看免费 | 欧美一区二区三区在线视频| 日韩欧美在线123| 久久精品人人做人人综合| 中文字幕第一区综合| 一区二区日韩电影| 男男成人高潮片免费网站| 国产精品白丝jk黑袜喷水| 成人激情电影免费在线观看| 色婷婷综合久久| 日韩欧美在线不卡| 国产精品超碰97尤物18| 亚洲综合视频在线观看| 久久99热99| 97aⅴ精品视频一二三区| 欧美偷拍一区二区| 久久久久久日产精品| 亚洲三级在线免费| 奇米一区二区三区| 成人动漫一区二区| 91精品国产综合久久福利| 国产夜色精品一区二区av| 夜夜操天天操亚洲| 国产精品亚洲成人| 欧洲精品视频在线观看| 欧美精品一区二区久久久| 亚洲男人的天堂在线观看| 精品在线观看免费| 欧美三级三级三级| 国产日产欧美一区| 日韩在线观看一区二区| 成人97人人超碰人人99| 日韩精品一区二区三区在线 |