⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 comm_i2cm.h

📁 PIC Kit serial source code.
💻 H
字号:
//==================================================================== 
//--- COPYRIGHT
//==================================================================== 
// Copyright 2006 Microchip Technology Inc.
// 
// Microchip Technology Inc. ("Microchip") licenses this software to
// you solely for use with Microchip products. The software is owned
// by Microchip and is protected under applicable copyright laws. All
// rights reserved.
// 
// SOFTWARE IS PROVIDED IN AN "AS IS." MICROCHIP EXPRESSLY DISCLAIMS ANY
// WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL MICROCHIP
// BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL
// DAMAGES, LOST PROFITS OR LOST DATA, HARM TO YOUR EQUIPMENT, COST OF
// PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS
// BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF),
// ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER SIMILAR COSTS.
// 
//==================================================================== 
//--- TITLE
//==================================================================== 
//    Filename:            comm_i2cm.h
//    Microcontroller:     PIC18F2550
//    Compiled using:      C18 V3.00
//
//    Author:              Mark Enochson
//    Company:             Microchip Technology Inc.
//
//==================================================================== 
//--- DESCRIPTION
//==================================================================== 
//
//==================================================================== 
//--- HISTORY
//==================================================================== 
//
//    0001 - 08-01-06 - ME
//    - initial release
//
//==================================================================== 
#ifndef __COMM_I2CM_H
#define __COMM_I2CM_H


//==========================================================
//--- RESOURCES
//==========================================================
#define  COMM_I2CM_SCK              LATBbits.LATB1
#define  COMM_I2CM_SDA              LATBbits.LATB0
#define  COMM_I2CM_SCK_TRIS         TRISBbits.TRISB1     
#define  COMM_I2CM_SDA_TRIS         TRISBbits.TRISB0     
#define  COMM_I2CM_ADC_SDA_TRIS     TRISAbits.TRISA1
#define  COMM_I2CM_ADC_SCL_TRIS     TRISAbits.TRISA2

#define  I2CM_AUX1_TRIS    TRISCbits.TRISC6
#define  I2CM_AUX2_TRIS    TRISCbits.TRISC7
#define  I2CM_AUX1_PORT    PORTCbits.RC6
#define  I2CM_AUX2_PORT    PORTCbits.RC7

//==========================================================
//--- PROTOTYPES
//==========================================================
TD_BYTE comm_i2cm_init(void);
void comm_i2cm_reset(void);
void comm_i2cm_svc(void);
void comm_i2cm_postproc(void);
void comm_i2cm_adc_bus(void);


//==========================================================
//--- DEFINITIONS / DECLARATIONS
//==========================================================
#define  COMM_TAG_I2CM_INIT               0x80
#define  COMM_TAG_I2CM_START              0x81
#define  COMM_TAG_I2CM_STOP               0x82
#define  COMM_TAG_I2CM_RESTART            0x83
#define  COMM_TAG_I2CM_WRITE_BYTES        0x84
#define  COMM_TAG_I2CM_READ_BYTES         0x85
#define  COMM_TAG_I2CM_READ_BLOCK         0x86
#define  COMM_TAG_I2CM_BITRATE            0x87
//#define  COMM_TAG_I2CM_RESET              0x88
#define  COMM_TAG_I2CM_READ_BYTES_NLB     0x89
#define  COMM_TAG_I2CM_READ_BLOCK_NLB     0x8A

#define  COMM_TAG_I2CM_AUX1_RST           0x90
#define  COMM_TAG_I2CM_AUX1_SET           0x91
#define  COMM_TAG_I2CM_AUX1_OUT           0x92
#define  COMM_TAG_I2CM_AUX1_IN            0x93
#define  COMM_TAG_I2CM_AUX1_WAIT_0        0x94
#define  COMM_TAG_I2CM_AUX1_WAIT_1        0x95
#define  COMM_TAG_I2CM_AUX2_RST           0x96
#define  COMM_TAG_I2CM_AUX2_SET           0x97
#define  COMM_TAG_I2CM_AUX2_OUT           0x98
#define  COMM_TAG_I2CM_AUX2_IN            0x99
#define  COMM_TAG_I2CM_AUX2_WAIT_0        0x9A
#define  COMM_TAG_I2CM_AUX2_WAIT_1        0x9B



#define  COMM_TAG_I2CM_EVENT_START        0x80
#define  COMM_TAG_I2CM_EVENT_STOP         0x81
#define  COMM_TAG_I2CM_EVENT_RESTART      0x82
#define  COMM_TAG_I2CM_EVENT_ACK_TX       0x83
#define  COMM_TAG_I2CM_EVENT_NACK_TX      0x84
#define  COMM_TAG_I2CM_EVENT_ACK_RX       0x85
#define  COMM_TAG_I2CM_EVENT_NACK_RX      0x86
#define  COMM_TAG_I2CM_EVENT_BYTE_WRITE   0x87
#define  COMM_TAG_I2CM_EVENT_BYTE_READ    0x88
#define  COMM_TAG_I2CM_XACT_ERR           0x89
#define  COMM_TAG_I2CM_STATUS_ERR         0x8A

#define  COMM_I2CM_SSPCON1_DFLT     0x28;
#define  COMM_I2CM_SSPCON1_IDLE     0x00;
//#define  COMM_I2CM_SSPADD_DFLT      0x7f;


//==========================================================
//--- COMM I2CM CONTROL BLOCK
//==========================================================
#define  COMM_CB_I2CM_EVENT_START_TX_FLAG    exec_control_B[16].bit0
#define  COMM_CB_I2CM_EVENT_STOP_TX_FLAG     exec_control_B[16].bit1
#define  COMM_CB_I2CM_EVENT_RESTART_TX_FLAG  exec_control_B[16].bit2
#define  COMM_CB_I2CM_EVENT_ACK_TX_FLAG      exec_control_B[16].bit3
//#define  COMM_CB_I2CM_EVENT_NACK_TX_FLAG     exec_control_B[16].bit4
#define  COMM_CB_I2CM_EVENT_ACK_RX_FLAG      exec_control_B[16].bit5
//#define  COMM_CB_I2CM_EVENT_NACK_RX_FLAG     exec_control_B[16].bit6
#define  COMM_CB_I2CM_EVENT_BYTE_TX_FLAG     exec_control_B[16].bit7

#define  COMM_CB_I2CM_EVENT_BYTE_RX_FLAG     exec_control_B[17].bit0
#define  COMM_CB_I2CM_EVENT_XACT_ERR_FLAG    exec_control_B[17].bit1
#define  COMM_CB_I2CM_EVENT_STATUS_ERR_FLAG  exec_control_B[17].bit2

#define  COMM_CB_I2CM_AUX1_PORT_FLAG         exec_control_B[21].bit0
#define  COMM_CB_I2CM_AUX2_PORT_FLAG         exec_control_B[21].bit1
#define  COMM_CB_I2CM_AUX1_TRIS_FLAG         exec_control_B[21].bit2
#define  COMM_CB_I2CM_AUX2_TRIS_FLAG         exec_control_B[21].bit3

#define  COMM_CB_I2CM_BITRATE_REG            exec_control_B[23]._byte

//==========================================================
//--- COMM I2CM STATUS BLOCK
//==========================================================
#define  COMM_SB_I2CM_WCOL_FLAG              exec_status_B[12].bit0
#define  COMM_SB_I2CM_SSPOV_FLAG             exec_status_B[12].bit1
#define  COMM_SB_I2CM_NACK_FLAG              exec_status_B[12].bit2
#define  COMM_SB_I2CM_ERR_FLAG               exec_status_B[12].bit7
#define  COMM_SB_I2CM_ERR_REG                exec_status_B[12]._byte
#define  COMM_SB_I2CM_ERR_REG_MASK           (TD_BYTE)0x7F

#define  COMM_SB_I2CM_AUX1_PORT_FLAG         exec_status_B[16].bit0
#define  COMM_SB_I2CM_AUX2_PORT_FLAG         exec_status_B[16].bit1
#define  COMM_SB_I2CM_AUX1_TRIS_FLAG         exec_status_B[16].bit2
#define  COMM_SB_I2CM_AUX2_TRIS_FLAG         exec_status_B[16].bit3

#define  COMM_SB_I2CM_ADC_SDA_REG            exec_status_B[17]._byte
#define  COMM_SB_I2CM_ADC_SCL_REG            exec_status_B[18]._byte
#define  COMM_SB_I2CM_BITRATE_REG            exec_status_B[19]._byte

#define  COMM_SB_I2CM_REG12                  exec_status_B[12]._byte
#define  COMM_SB_I2CM_REG13                  exec_status_B[13]._byte
#define  COMM_SB_I2CM_REG14                  exec_status_B[14]._byte
#define  COMM_SB_I2CM_REG15                  exec_status_B[15]._byte
#define  COMM_SB_I2CM_REG16                  exec_status_B[16]._byte
#define  COMM_SB_I2CM_REG17                  exec_status_B[17]._byte
#define  COMM_SB_I2CM_REG18                  exec_status_B[18]._byte
#define  COMM_SB_I2CM_REG19                  exec_status_B[19]._byte

//------------------------------------------------
//--- ADC:
//------------------------------------------------
#define  COMM_I2CM_ADCON0_SDA    0x07  // CH:1
#define  COMM_I2CM_ADCON0_SCL    0x0B  // CH:2
#define  COMM_I2CM_ADCON2        0x3D  // JUST:L,TAQ:20TAD,TAD:F/16

//--- TIMER
#define  COMM_I2CM_ADC_TIMER        timer0_A1
#define  COMM_I2CM_ADC_INTV_MSEC    100
#define  COMM_I2CM_ADC_INTV_TA      COMM_I2CM_ADC_INTV_MSEC * 1000.0 / TIMER0_A_USEC

#endif // __COMM_I2CM_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -