新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MAX5307程序調(diào)試中遇到的時(shí)鐘問(wèn)題

        MAX5307程序調(diào)試中遇到的時(shí)鐘問(wèn)題

        作者: 時(shí)間:2012-10-27 來(lái)源:網(wǎng)絡(luò) 收藏

        調(diào)試了好久終于調(diào)試出來(lái)了啊,原來(lái)罪魁禍?zhǔn)拙谷皇且粋€(gè)時(shí)鐘的問(wèn)題:

        DAC0(uchar t)
        { uchar i;
        uint x,y;//控制轉(zhuǎn)換的命令字節(jié)
        uint p_up;
        p_up=0xffff;
        EN138=1;
        A138=0;
        B138=0;
        //DA_CLK=1;//由于在下降沿輸出,故先拉高
        delay(5);
        for(i=0;i16;i++)
        {
        DA_DIN=(bit)(p_up0x8000);//取最高位傳送
        DA_CLK=1;
        delay(10);
        DA_CLK=0;
        delay(10);
        p_up=1;
        }
        EN138=1;//將5307的CS端拉高,準(zhǔn)備下次的數(shù)據(jù)輸入.
        A138=1;
        B138=1;
        delay(10);
        //********************************************以上將全部DA使能輸出
        EN138=1;
        A138=0;
        B138=0;
        //DA_CLK=1;//由于在下降沿輸出,故先拉高
        delay(5);
        for(i=0;i16;i++)
        {
        DA_DIN=(bit)(dandc0x8000);//取最高位傳送
        DA_CLK=1;
        delay(10);
        DA_CLK=0;
        delay(10);
        dandc=1;
        }
        EN138=1;//將5307的CS端拉高,準(zhǔn)備下次的數(shù)據(jù)輸入.
        A138=1;
        B138=1;
        delay(5);

        //**********************以上部分僅僅完成了數(shù)據(jù)的傳送
        x=0x0010;
        x=xt;//用1選中要進(jìn)行轉(zhuǎn)換的通道.
        y=0xe000;//啟動(dòng)轉(zhuǎn)換的命令
        y=y|x;
        EN138=1;
        A138=0;
        B138=0;
        //DA_CLK=1;//由于在下降沿輸出,故先拉高
        delay(10);
        for(i=0;i16;i++)
        {
        DA_DIN=(bit)(y0x8000);//取最高位傳送
        DA_CLK=1;
        delay(10);
        DA_CLK=0;
        delay(10);
        y=1;
        }
        delay(10);
        EN138=1;
        A138=1;
        B138=1;
        } 以上為正確的程序,嘔心瀝血啊。有看的就要回貼啊,哪怕是罵兩句。

        下面把錯(cuò)誤的程序也貼出來(lái),以供參考學(xué)習(xí):

        DAC0(uchar t)
        { uchar i;
        uint x,y;//控制轉(zhuǎn)換的命令字節(jié)
        uint p_up;
        p_up=0xffff;
        EN138=1;
        A138=0;
        B138=0;
        DA_CLK=1;//由于在下降沿輸出,故先拉高
        delay(5);
        for(i=0;i16;i++)
        {
        DA_DIN=(bit)(p_up0x8000);//取最高位傳送
        DA_CLK=0;
        delay(10);
        DA_CLK=1;
        delay(10);
        p_up=1;
        }
        EN138=1;//將5307的CS端拉高,準(zhǔn)備下次的數(shù)據(jù)輸入.
        A138=1;
        B138=1;
        delay(10);
        //********************************************以上將全部DA使能輸出
        EN138=1;
        A138=0;
        B138=0;
        DA_CLK=1;//由于在下降沿輸出,故先拉高
        delay(5);
        for(i=0;i16;i++)
        {
        DA_DIN=(bit)(dandc0x8000);//取最高位傳送
        DA_CLK=0;
        delay(10);
        DA_CLK=1;
        delay(10);
        dandc=1;
        }
        EN138=1;//將5307的CS端拉高,準(zhǔn)備下次的數(shù)據(jù)輸入.
        A138=1;
        B138=1;
        delay(5);

        //**********************以上部分僅僅完成了數(shù)據(jù)的傳送
        x=0x0010;
        x=xt;//用1選中要進(jìn)行轉(zhuǎn)換的通道.
        y=0xe000;//啟動(dòng)轉(zhuǎn)換的命令
        y=y|x;
        EN138=1;
        A138=0;
        B138=0;
        DA_CLK=1;//由于在下降沿輸出,故先拉高
        delay(10);
        for(i=0;i16;i++)
        {
        DA_DIN=(bit)(y0x8000);//取最高位傳送
        DA_CLK=0;
        delay(10);
        DA_CLK=1;
        delay(10);
        y=1;
        }
        delay(10);
        EN138=1;
        A138=1;
        B138=1;
        }

        兩個(gè)程序中綠色的部分為不一樣的地方,其實(shí)也就是時(shí)鐘的下降沿的時(shí)間有沒(méi)有延時(shí)的問(wèn)題,由于DA轉(zhuǎn)換和單片機(jī)部分用了光藕隔離所以才會(huì)出現(xiàn)這種需要延時(shí)的情況,如果沒(méi)有隔離的話,完全可以不用延時(shí),因?yàn)?a class="contentlabel" href="http://www.104case.com/news/listbylabel/label/MAX5307">MAX5307的最高可以達(dá)到15MHZ的轉(zhuǎn)換和數(shù)字傳輸頻率。



        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 云南省| 北海市| 北川| 灵宝市| 鞍山市| 平利县| 尉氏县| 射洪县| 石景山区| 潢川县| 乌什县| 锦州市| 驻马店市| 商丘市| 当阳市| 昌邑市| 合肥市| 象州县| 成武县| 盐边县| 布拖县| 瑞安市| 江西省| 德安县| 张北县| 尼木县| 九寨沟县| 睢宁县| 桃园县| 黄梅县| 柯坪县| 玉山县| 房产| 荥阳市| 周至县| 乌兰浩特市| 扶风县| 东乡族自治县| 永兴县| 桂林市| 彩票|