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

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

?? mcp2510.c

?? pic單片機驅動mcp2510源代碼
?? C
字號:
/*
** Copyright (C)1999 KVASER AB, http://www.kvaser.com
** This code may be freely distrubuted and used if the source is indicated.
**
** Description:
**   Contains routines for handling the MCP2510 CAN controller.
**   Uses the SPI bus routines found in another file.
*/


#include <stdio.h>
#include <conio.h>
// #undefine uchar
#include "..\inc\std.h"
#include "..\inc\spi.h"
#include "..\inc\spi_mcp.h"
#include "..\inc\mcp2510.h"
// #include "..\inc\mcp2510t.h"



void mcp_reset(void)
{
    SPI_mcp_reset();
}

/*
 ** Read one or more registers in the MCP2510, starting at address
 ** readdata.
 */
void mcp_read( uchar MCPaddr, uchar* readdata, uchar length )
{
    uchar loopCnt;
    SPI_mcp_select(); // Select the MCP device at the SPI bus
    // Start reading and set first address
    SPI_mcp_RD_address(MCPaddr);

    for (loopCnt=0; loopCnt < length; loopCnt++) {
        // Get a byte and store at pointer
        *readdata  = SPI_putch(MCPaddr);
        // Increment the pointers to next location
        // Test++;
        MCPaddr++;
        readdata++;
    }

    SPI_mcp_unselect();
}


/*
 ** Write to one or more registers in the MCP2510, starting at address
 ** writedata.
 */
void mcp_write( uchar MCPaddr, const uchar* writedata, uchar length )
{
    uchar loopCnt;
    SPI_mcp_select();
    // Start write and set first address
    SPI_mcp_WR_address( MCPaddr );
    for (loopCnt=0; loopCnt < length; loopCnt++) {
        // Write a byte
        SPI_putch( *writedata  );
        // Increment the pointer to next location
        writedata++;
    }
    SPI_mcp_unselect();
}


void mcp_read_can_id( uchar mcp_addr, uchar* ext, unsigned long* can_id )
{
    uchar tbufdata[4];
    *ext = 0;
    *can_id = 0;
    mcp_read( mcp_addr, tbufdata, 4);
    *can_id = (tbufdata[SIDH]<<3) + (tbufdata[SIDL]>>5);
    if ( (tbufdata[SIDL] & TXB_EXIDE_M) ==  TXB_EXIDE_M ) {
        *can_id = (*can_id<<2) + (tbufdata[SIDL] & 0x03);
        *can_id <<= 16;
        *can_id = *can_id +(tbufdata[EID8]<<8) + tbufdata[EID0];
        *ext = 1;
    }
}

// Buffer can be 4..5
void mcp_read_can( uchar buffer, uchar* ext, unsigned long* can_id,
                   uchar* dlc, uchar* rtr, uchar* data )
{

    uchar mcp_addr = buffer*16 + 0x21, ctrl;
    mcp_read_can_id( mcp_addr, ext, can_id );
    mcp_read( mcp_addr-1, &ctrl, 1 );
    mcp_read( mcp_addr+4, dlc, 1 );
    if (/*(*dlc & RTR_MASK) || */(ctrl & 0x08)) {
        *rtr = 1;
    } else {
        *rtr = 0;
    }
    *dlc &= DLC_MASK;
    mcp_read( mcp_addr+5, data, *dlc );
}


void mcp_write_can( uchar buffer, uchar ext, unsigned long can_id,
                    uchar dlc, uchar rtr, const uchar* data )
{
    uchar mcp_addr = buffer*16 + 0x21;
    mcp_write(mcp_addr+5, data, dlc );  // write data bytes
    mcp_write_can_id( mcp_addr, ext, can_id );  // write CAN id
    if ( rtr == 1)  dlc |= RTR_MASK;  // if RTR set bit in byte
    mcp_write((mcp_addr+4), &dlc, 1 );            // write the RTR and DLC
}

void mcp_write_can_id( uchar mcp_addr, uchar ext, unsigned long can_id )
{
    unsigned int canid;
    uchar tbufdata[4];
    canid = (unsigned int)(can_id & 0x0FFFF);
    if ( ext == 1) {
        tbufdata[EID0] = (uchar) (canid & 0xFF);
        tbufdata[EID8] = (uchar) (canid / 256);
        canid = (unsigned int)( can_id / 0x10000L );
        tbufdata[SIDL] = (uchar) (canid & 0x03);
        tbufdata[SIDL] += (uchar) ((canid & 0x1C )*8);
        tbufdata[SIDL] |= TXB_EXIDE_M;
        tbufdata[SIDH] = (uchar) (canid / 32 );
    }
    else {
        tbufdata[SIDH] = (uchar) (canid / 8 );
        tbufdata[SIDL] = (uchar) ((canid & 0x07 )*32);
        tbufdata[EID0] = 0;
        tbufdata[EID8] = 0;
    }
    mcp_write( mcp_addr, tbufdata, 4 );
}



/*
 ** Start the transmission from one of the tx buffers.
 */
void mcp_transmit(uchar mcp_addr)
{
    SPI_mcp_write_bits(mcp_addr, TXB_TXREQ_M, TXB_TXREQ_M);
    //  uchar data;
    //  mcp_read( mcp_addr, &data, 1);
    //  data |= TXB_TXREQ_M;
    //  mcp_write( mcp_addr, &data, 1);
}


/*
 ** Initialize the MCP2510.
 */
void mcp_init(void)
{
    uchar data;
    uchar i,j,a;

    data = MODE_CONFIG;
    // Go into configuration mode
    mcp_write(CANCTRL, &data, 1);

    //
    // Bit rate calculations.
    //
    // In this case, we'll use a speed of 125 kbit/s.
    // If we set the length of the propagation segment to 7 bit time quanta,
    // and we set both the phase segments to 4 quanta each,
    // one bit will be 1+7+4+4 = 16 quanta in length.
    //
    // If you have a 4 MHz clock, setting the prescaler (BRP) to 1
    // gives a bit length of 16 * 0.5 us = 8 us => 125 kbit/s.
    //
    // If you have a 16 MHz clock, setting the prescaler (BRP) to 4
    // gives the same result.
    //
    data = SJW1 + BRP4;
    mcp_write(CNF1, &data, 1);

    data=(BTLMODE_CNF3+SEG4*8+SEG7);  // Phase Seg 1 = 4, Prop Seg = 7
    mcp_write(CNF2, &data, 1);

    data = SEG4; // Phase Seg 2 = 4
    mcp_write(CNF3, &data, 1);

    // Disable interrups.
    data = NO_IE;
    mcp_write(CANINTE, &data, 1);

    // Mark all filter bits as don't care:
    mcp_write_can_id(RXM0SIDH, 1, 0);
    mcp_write_can_id(RXM1SIDH, 1, 0);
    // Anyway, set all filters to 0:
    mcp_write_can_id(RXF0SIDH, 0, 0);
    mcp_write_can_id(RXF1SIDH, 0, 0);
    mcp_write_can_id(RXF2SIDH, 0, 0);
    mcp_write_can_id(RXF3SIDH, 0, 0);
    mcp_write_can_id(RXF4SIDH, 0, 0);
    mcp_write_can_id(RXF5SIDH, 0, 0);


    data = MODE_NORMAL + CLKEN + CLK1;
    mcp_write(CLKCTRL, &data, 1);

    // Clear, deactivate the three transmit buffers
    data = 0;
    a = TXB0CTRL;
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 14; j++) {
            mcp_write(a, &data, 1);
            a++;
        }
        a += 2; // We did not clear CANSTAT or CANCTRL
    }
    // and the two receive buffers.
    mcp_write(RXB0CTRL, &data, 1);
    mcp_write(RXB1CTRL, &data, 1);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人午夜片在线观看高清观看| 国产香蕉久久精品综合网| 亚洲欧美一区二区三区孕妇| a亚洲天堂av| 亚洲美女区一区| 欧美美女bb生活片| 裸体一区二区三区| 26uuu国产在线精品一区二区| 国产最新精品精品你懂的| 亚洲国产精品ⅴa在线观看| jiyouzz国产精品久久| 一区二区三区国产豹纹内裤在线| 欧美午夜不卡在线观看免费| 蜜桃视频免费观看一区| 久久精品夜色噜噜亚洲a∨| 成人午夜激情片| 一区二区三区在线观看动漫| 在线成人午夜影院| 国产高清精品网站| 亚洲男人都懂的| 欧美一区午夜精品| 国产成人亚洲综合a∨婷婷| 亚洲精品网站在线观看| 7777精品伊人久久久大香线蕉| 玖玖九九国产精品| 亚洲天堂a在线| 日韩欧美的一区| 97精品国产97久久久久久久久久久久 | 日本网站在线观看一区二区三区| 精品福利视频一区二区三区| 99精品一区二区三区| 亚洲大片在线观看| 中文字幕欧美国产| 欧美一区二区在线免费播放| 成人av资源在线观看| 琪琪久久久久日韩精品| 国产精品久久久久久久久久久免费看 | 不卡视频一二三| 喷水一区二区三区| 亚洲免费在线播放| wwwwxxxxx欧美| 欧美喷潮久久久xxxxx| 成人综合在线网站| 久草精品在线观看| 午夜激情一区二区三区| 中文字幕人成不卡一区| 精品裸体舞一区二区三区| 91福利视频网站| 成人午夜大片免费观看| 美洲天堂一区二卡三卡四卡视频| 亚洲伦理在线免费看| 国产日韩v精品一区二区| 欧美一卡二卡三卡| 欧美亚洲一区二区三区四区| av电影天堂一区二区在线| 国产精品影视天天线| 日本不卡视频在线| 天天综合色天天综合| 一区二区三区四区国产精品| 国产精品理伦片| 久久综合给合久久狠狠狠97色69| 欧美另类高清zo欧美| 色哟哟在线观看一区二区三区| 国产成人精品亚洲777人妖| 蜜臀va亚洲va欧美va天堂| 亚洲一本大道在线| 怡红院av一区二区三区| 亚洲美女区一区| 亚洲欧美区自拍先锋| 中文字幕色av一区二区三区| 亚洲国产高清aⅴ视频| 国产欧美日韩亚州综合 | 蜜桃精品视频在线| 日韩在线一区二区三区| 午夜欧美大尺度福利影院在线看| 一区二区三区电影在线播| 亚洲精品久久久久久国产精华液 | 一区二区三区在线视频观看58| ...av二区三区久久精品| 亚洲欧洲av在线| 亚洲婷婷综合色高清在线| 中文字幕一区二区三区在线观看| 国产精品伦一区| 亚洲天堂成人在线观看| 亚洲影院久久精品| 亚洲成人激情av| 免费精品视频最新在线| 激情综合色综合久久综合| 国产在线精品免费| 成人网页在线观看| 色哟哟在线观看一区二区三区| 欧美主播一区二区三区美女| 欧美精品丝袜中出| 精品少妇一区二区三区视频免付费| 久久影院午夜片一区| 久久久91精品国产一区二区精品| 国产日本一区二区| 亚洲男人的天堂在线观看| 婷婷六月综合网| 国精品**一区二区三区在线蜜桃| 成人h动漫精品| 欧美日韩一本到| 精品国产一区a| 中文字幕一区二区三区不卡 | 欧美三级日本三级少妇99| 7777精品伊人久久久大香线蕉超级流畅 | 国产一区二区三区四区五区入口| 高清在线不卡av| 欧洲一区二区av| 26uuu欧美| 夜夜嗨av一区二区三区四季av| 日韩电影网1区2区| 国产精品综合一区二区| 色婷婷国产精品| 精品入口麻豆88视频| 亚洲欧洲精品一区二区精品久久久 | 欧美丝袜第三区| 久久这里只有精品视频网| 亚洲日本电影在线| 免费成人av在线| 91麻豆视频网站| 欧美大胆一级视频| 亚洲激情在线播放| 国产一区二区不卡在线| 色欧美乱欧美15图片| 精品免费视频.| 亚洲综合清纯丝袜自拍| 国产原创一区二区三区| 欧美亚洲免费在线一区| 国产婷婷色一区二区三区在线| 亚洲第一福利视频在线| 成人一区二区视频| 日韩一区二区不卡| 一区二区三区在线视频免费| 国产成人午夜片在线观看高清观看| 在线播放国产精品二区一二区四区| 国产色产综合色产在线视频| 日本亚洲三级在线| 在线观看一区二区视频| 中文字幕第一区| 精品亚洲成a人| 欧美放荡的少妇| 一个色综合网站| 成人污视频在线观看| 欧美精品一区二区三区很污很色的 | 亚洲精品免费播放| 成人综合婷婷国产精品久久蜜臀| 日韩欧美成人激情| 天堂一区二区在线| 日本伦理一区二区| 亚洲人成网站色在线观看| 国产成人av资源| 精品国产91亚洲一区二区三区婷婷| 性做久久久久久免费观看| 99精品偷自拍| 亚洲色欲色欲www在线观看| 不卡视频在线观看| 国产精品久久久久久亚洲伦| 国产精品中文有码| 国产欧美视频一区二区三区| 国产精品一区二区在线观看不卡 | 欧美人与禽zozo性伦| 亚洲综合男人的天堂| 99re在线视频这里只有精品| 中文字幕+乱码+中文字幕一区| 国产一区不卡精品| 久久综合色鬼综合色| 国产在线乱码一区二区三区| 精品国产一区二区三区忘忧草| 美女看a上一区| 欧美电影精品一区二区| 久久精品av麻豆的观看方式| 精品人在线二区三区| 激情六月婷婷久久| 中文字幕乱码亚洲精品一区 | 国产综合久久久久久久久久久久 | 91视频在线观看| 亚洲精品中文在线观看| 色狠狠色狠狠综合| 亚洲第一电影网| 日韩精品一区国产麻豆| 久久91精品国产91久久小草| 国产欧美一区二区精品仙草咪| 成人免费高清在线| 一区二区在线观看免费| 欧美日本在线视频| 麻豆成人91精品二区三区| 久久毛片高清国产| 91视频在线看| 日本免费新一区视频| 国产三级欧美三级日产三级99| 成人性生交大片免费看视频在线 | 综合久久国产九一剧情麻豆| 欧美日韩精品欧美日韩精品一综合| 天堂va蜜桃一区二区三区漫画版| 日韩一区二区三区电影在线观看 | 欧美在线影院一区二区| 天天色综合天天| 国产亚洲欧美在线| 日本韩国一区二区三区|