音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

DS2401加密芯片 讀出錯(cuò)誤數(shù)據(jù) 竟然過了CRC校驗(yàn) 呵呵 概率多大

作者:IC1008 欄目:單片機(jī)
DS2401加密芯片 讀出錯(cuò)誤數(shù)據(jù) 竟然過了CRC校驗(yàn) 呵呵 概率多大
讀了錯(cuò)誤的東西出來竟然過了CRC校驗(yàn)

我的主程序 調(diào)用 ReadRS2401ID();
讀出DS2401的數(shù)據(jù)

因?yàn)樽xDS2401是死循環(huán),CRC失敗就繼續(xù)讀 讀到成功為止

使得讀出錯(cuò)誤數(shù)據(jù)的一個(gè)東西 出現(xiàn)了 我沒有關(guān)中斷 呵呵

沒有關(guān)中斷的讀數(shù)據(jù)錯(cuò)誤,然后讀CRC的數(shù)據(jù)又錯(cuò)誤,或者幾個(gè)數(shù)據(jù)的錯(cuò)誤使得CRC又正確了,導(dǎo)致讀出數(shù)據(jù)成功 但是是錯(cuò)誤的數(shù)據(jù) 所以我才覺得我的程序進(jìn)入時(shí)候有一段跟平常不一致的停頓,想必是等待錯(cuò)挫得對(duì)的CRC數(shù)據(jù)

屏蔽了中斷之后一切正常

//DS2401.c
unsigned CHAR DS2401IDBuf[8];

unsigned CHAR InitDS2401(void)    //復(fù)位DS2401
{
    unsigned CHAR tmp;
    DS2401_1;
    tmp=DS2401RD;
    if(!tmp)
        return 0;
    DS2401_0;
    delay_us(250);    
    delay_us(250);    
    DS2401_1;
    delay_us(60);
    tmp=DS2401RD;
    delay_us(210);
    delay_us(210);
    if(tmp)
        return 0;
    else
        return 1;
}

void WriteDS2401(unsigned CHAR d)   //寫2401命令
{
    unsigned CHAR i;
    for(i=0;i<8;i++)
    {
        DS2401_0;
        delay_us(12);
        if(d&1)
        {
            DS2401_1;
        }
        d>>=1;
        delay_us(80);
        DS2401_1;
        delay_us(4);
    }
}

unsigned CHAR ReadDS2401()   //讀2401數(shù)據(jù)
{
    unsigned CHAR i,d;
    for(i=0;i<8;i++)
    {
        d>>=1;
        DS2401_0;
        delay_us(5);
        DS2401_1;
        delay_us(10);
        if(DS2401RD)
            d|=0x80;
        delay_us(105);        
    }
    return d;
}

unsigned CHAR crctest()   //進(jìn)行CRC校驗(yàn)
{
    unsigned CHAR i1,i2,crc=0;
    for(i1=0;i1<8;i1++)
    {
        crc^=DS2401IDBuf[i1];
        for(i2=0;i2<8;i2++)
        {
            if (crc & 0x01)
            crc = (crc >> 1) ^ 0x8C;
            else
            crc >>= 1;
        }
    }
    return crc;
}

void ReadRS2401ID()    //讀出DS2401
{
    unsigned CHAR i;
    do{
        while(!InitDS2401())
            WDR();
        WriteDS2401(0x33);
        for(i=0;i<8;i++)
            DS2401IDBuf[i]=ReadDS2401();
    }while(crctest());   //直到CRC校驗(yàn)成功
}


2樓: >>參與討論
千尋喬子
DS2401加密芯片 讀出錯(cuò)誤數(shù)據(jù) 竟然過了CRC校驗(yàn) 呵呵 概率多大
我是ATMEL芯片的一級(jí)代理,我是喬小姐希望可以幫助到你,我也做DALLAS的原裝貨,我電話:13713758355,QQ:499340587

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
24C02問題,防真讀出來的值為什么不對(duì)滴?
關(guān)于譯碼器
24C02調(diào)試中遇到的怪問題(高手請(qǐng)進(jìn))
1602LCD與89S52靜電脈沖干擾死機(jī)怎么辦?急死
7805兩邊的電容能互換位置嗎
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)