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

📄 comm_gen.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_gen.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_GEN_H
#define __COMM_GEN_H

#include "typedefs.h"
#include "exec.h"

//==========================================================
//--- RESOURCES
//==========================================================
#define  COMM_IO_1A_PIN    PORTCbits.RC6
#define  COMM_IO_4A_PIN    PORTBbits.RB0
#define  COMM_IO_5A_PIN    PORTBbits.RB1
#define  COMM_IO_6A_PIN    PORTCbits.RC7

#define  COMM_IO_1A_DIR    TRISCbits.TRISC6
#define  COMM_IO_4A_DIR    TRISBbits.TRISB0
#define  COMM_IO_5A_DIR    TRISBbits.TRISB1
#define  COMM_IO_6A_DIR    TRISCbits.TRISC7

#define  COMM_IO_1B_PIN    PORTAbits.RA5
#define  COMM_IO_4B_PIN    PORTAbits.RA1
#define  COMM_IO_5B_PIN    PORTAbits.RA2
#define  COMM_IO_6B_PIN    PORTAbits.RA3

#define  COMM_IO_1B_DIR    TRISAbits.TRISA5
#define  COMM_IO_4B_DIR    TRISAbits.TRISA1
#define  COMM_IO_5B_DIR    TRISAbits.TRISA2
#define  COMM_IO_6B_DIR    TRISAbits.TRISA3

#define  COMM_PULLUP_TRIS  TRISAbits.TRISA4
#define  COMM_PULLUP_PIN   LATAbits.LATA4


//==========================================================
//--- PROTOTYPES
//==========================================================
TD_BYTE comm_data_get(void);
void comm_svc(void);
void comm_gen(void);
void comm_post_data(void);
void comm_post_event_macro_loop(void);
void comm_post_cbuf2(TD_BYTE data_byte);
void comm_post_cbuf2_time(TD_BYTE data_byte);
void comm_post_cbuf3(TD_BYTE data_byte);
void comm_post_event(TD_BYTE b0);
void comm_post_event_1b(TD_BYTE b0, TD_BYTE b1);
void comm_post_event_2b(TD_BYTE b0, TD_BYTE b1, TD_BYTE b2);
void comm_post_event_time(void);
void comm_post_event_time_get(void);
void comm_led_busy_data(void);
void comm_init(void);
void comm_init_mode(TD_BYTE mode);
void comm_reset(void);
void comm_varbs_clear(void);
void comm_clear(void);
void comm_gen_reset(void);
void comm_gen_config(void);

#define  COMM_VSRC_TIMER            timer0_A3
#define  COMM_VSRC_MEAS_INTV_MSEC   100
#define  COMM_VSRC_MEAS_INTV_TA     COMM_VSRC_MEAS_INTV_MSEC * 1000.0 / TIMER0_A_USEC

//==========================================================
//--- DECLARATIONS / DEFINITIONS
//==========================================================
extern TD_BYTE comm_state;
extern TD_BYTE comm_data;
extern TD_BYTE comm_data_2;
extern TD_BYTE comm_data_3;
extern TD_BYTE comm_cmnd_count_1;
extern TD_BYTE comm_cmnd_count_2;
extern TD_BYTE comm_cmnd_macro_count_1;
extern TD_BYTE comm_cmnd_macro_count_2;
extern TD_WORD_W comm_macro_count_1_W;
extern TD_WORD_W comm_macro_count_2_W;
extern TD_BYTE_B comm_flags1_B;
extern TD_BYTE_B comm_flags2_B;
extern TD_BYTE_B comm_varbs_B[16];

//------------------------------------------------
//--- COMM CONTROL BLOCK
//------------------------------------------------
#define  COMM_CB_EVENT_FLAG               exec_control_B[9].bit0
#define  COMM_CB_EVENT_TIME_FLAG          exec_control_B[9].bit1
#define  COMM_CB_PULLUP_ENABLE_FLAG       exec_control_B[9].bit4
#define  COMM_CB_VSRC_ENABLE_FLAG         exec_control_B[9].bit5
#define  COMM_CB_VSRC_VAR_FLAG            exec_control_B[9].bit6
#define  COMM_CB_MACRO_ABORT_FLAG         exec_control_B[9].bit7

#define  COMM_CB_EVENT_MACRO_LOOP_FLAG    exec_control_B[10].bit0
#define  COMM_CB_EVENT_MACRO65K_FLAG      exec_control_B[10].bit1
#define  COMM_CB_EVENT_MACRO_DONE_FLAG    exec_control_B[10].bit2
#define  COMM_CB_EVENT_TIMEOUT_AB0_FLAG   exec_control_B[10].bit3
#define  COMM_CB_EVENT_TIMEOUT_AB1_FLAG   exec_control_B[10].bit4
#define  COMM_CB_EVENT_STATUS_ERR_FLAG    exec_control_B[10].bit5

#define  COMM_CB_MODE_REG                 exec_control_B[8]._byte

#define  COMM_CB_VSRC_SETPOINT_REG        exec_control_B[12]._b
#define  COMM_CB_VSRC_FAULTLEVEL_REG      exec_control_B[13]._b

//------------------------------------------------
//--- COMM STATUS BLOCK
//------------------------------------------------
#define  COMM_SB_TIMEOUT_AB0_FLAG         exec_status_B[4].bit0
#define  COMM_SB_TIMEOUT_AB1_FLAG         exec_status_B[4].bit1
#define  COMM_SB_INIT_ERR_FLAG            exec_status_B[4].bit2
#define  COMM_SB_VSRC_FAULT_FLAG          exec_status_B[4].bit3
#define  COMM_SB_BAD_CMND_FLAG            exec_status_B[4].bit4
#define  COMM_SB_CBUF2_OVF_FLAG           exec_status_B[4].bit5
#define  COMM_SB_CBUF3_OVF_FLAG           exec_status_B[4].bit6
#define  COMM_SB_GEN_ERR_FLAG             exec_status_B[4].bit7

#define  COMM_SB_GEN_ERR_REG              exec_status_B[4]._b
#define  COMM_SB_GEN_ERR_REG_MASK         (TD_BYTE) 0x7F

#define  COMM_SB_BUSY_FLAG                exec_status_B[5].bit0
#define  COMM_SB_MACRO_BUSY_FLAG          exec_status_B[5].bit1
#define  COMM_SB_MACRO_CONT_FLAG          exec_status_B[5].bit2
#define  COMM_SB_WAIT_FLAG                exec_status_B[5].bit3
#define  COMM_SB_BUTTON_FLAG              exec_status_B[5].bit6
#define  COMM_SB_END_SCRIPT_FLAG          exec_status_B[5].bit7

#define  COMM_SB_VSRC_MEAS_REG            exec_status_B[7]._b

//--- all STATUS_BLOCK locations used by communications
#define  COMM_SB_REG_FIRST                4
#define  COMM_SB_REG_LAST                 19

#define  COMM_SB_MODE_REG                 exec_status_B[6]._byte

//------------------------------------------------
//--- COMM "FLAGS"
//------------------------------------------------

//--- valid per instruction ("gen" module)
#define  COMM_0_FLAG                comm_flags1_B.bit0
#define  COMM_1_FLAG                comm_flags1_B.bit1
#define  COMM_2_FLAG                comm_flags1_B.bit2
#define  COMM_3_FLAG                comm_flags1_B.bit3
//--- valid per instruction (protocol specific module)
#define  COMM_4_FLAG                comm_flags1_B.bit4
#define  COMM_5_FLAG                comm_flags1_B.bit5
#define  COMM_6_FLAG                comm_flags1_B.bit6
#define  COMM_7_FLAG                comm_flags1_B.bit7

//--- valid across multiple instructions
#define  COMM_PROC_LOOP_FLAG        comm_flags2_B.bit0
#define  COMM_MACRO_FLAG            comm_flags2_B.bit1
#define  COMM_TIMEOUT_AB0_FLAG      comm_flags2_B.bit2
#define  COMM_TIMEOUT_AB1_FLAG      comm_flags2_B.bit3
#define  COMM_PROC_DISABLE_FLAG     comm_flags2_B.bit4
#define  COMM_GIEL1_FLAG            comm_flags2_B.bit5
#define  COMM_GIEL2_FLAG            comm_flags2_B.bit6
#define  COMM_GIEL3_FLAG            comm_flags2_B.bit7

//------------------------------------------------
//--- COMM CONTROLLER "STATE"
//------------------------------------------------
#define  COMM_STATE_GEN_RESET             0x00
#define  COMM_STATE_GEN_NEXT              0x00
#define  COMM_STATE_GEN_NEXT_             0x01
#define  COMM_STATE_GEN_MACRO_X_INIT      0x02
#define  COMM_STATE_GEN_STALL             0x0F
#define  COMM_STATE_GEN_MAX               0x7F

#define  COMM_TAG_MIN                     0x10
#define  COMM_TAG_GEN_WAIT_1              0x10
#define  COMM_TAG_GEN_LED1                0x12
#define  COMM_TAG_GEN_LED2                0x13
//#define  COMM_TAG_GEN_LED3                0x14
#define  COMM_TAG_GEN_TIMEOUT_AB0_SET     0x15
#define  COMM_TAG_GEN_TIMEOUT_AB0_RST     0x16
#define  COMM_TAG_GEN_TIMEOUT_AB1_SET     0x17
#define  COMM_TAG_GEN_TIMEOUT_AB1_RST     0x18
#define  COMM_TAG_GEN_MACRO_CLEAR         0x19
#define  COMM_TAG_GEN_MACRO_DATA          0x1A
#define  COMM_TAG_GEN_MACRO_RUN           0x1B
#define  COMM_TAG_GEN_END_SCRIPT          0x1C
#define  COMM_TAG_GEN_MACRO_DATA_START    0x1D
#define  COMM_TAG_GEN_MACRO_DATA_END      0x1E
#define  COMM_TAG_GEN_MARKER_HOST         0x1F
#define  COMM_TAG_GEN_TIMER_RESET         0x20

#define  COMM_TAG_GEN_DATA                0x10
#define  COMM_TAG_GEN_DATA_BYTES          0x11
#define  COMM_TAG_GEN_EVENT_MACRO_LOOP    0x12
#define  COMM_TAG_GEN_EVENT_TIME          0x13
#define  COMM_TAG_GEN_EVENT_TIME_ROLLOVER 0x14
#define  COMM_TAG_GEN_EVENT_MACRO_DONE    0x15
#define  COMM_TAG_GEN_EVENT_MACRO65K      0x16
#define  COMM_TAG_GEN_EVENT_MACRO_ABORT   0x17
#define  COMM_TAG_GEN_EVENT_TIMEOUT_AB0   0x18
#define  COMM_TAG_GEN_EVENT_TIMEOUT_AB1   0x19
#define  COMM_TAG_GEN_STATUS_ERR          0x1A
#define  COMM_TAG_GEN_EVENT_END_SCRIPT    0x1B
#define  COMM_TAG_GEN_MARKER_DEV          0x1C

//------------------------------------------------
//--- COMM "MODES"
//------------------------------------------------
#define  COMM_MODE_IDLE                   0x00
#define  COMM_MODE_I2CM                   0x01
#define  COMM_MODE_SPI                    0x02
#define  COMM_MODE_SPI_M                  0x02
#define  COMM_MODE_SPI_S                  0x03
#define  COMM_MODE_USART_A                0x04
#define  COMM_MODE_USART_SM               0x05
#define  COMM_MODE_USART_SS               0x06
#define  COMM_MODE_I2CS                   0x07
#define  COMM_MODE_I2CBBM                 0x08
#define  COMM_MODE_I2CSBBM                0x09
#define  COMM_MODE_LIN                    0x0A
#define  COMM_MODE_MWIRE_M                0x0B

//------------------------------------------------
//--- LED CONFIG: DATA TRANSACTION BUSY
//    mode: BLINK ONCE
//    time: 300ms
//------------------------------------------------
#define  COMM_LED_CONFIG_BUSY_DATA        0xA5

//------------------------------------------------
//--- LED CONFIG: SCRIPT BUSY: START
//    mode: ON
//------------------------------------------------
#define  COMM_LED_CONFIG_BUSY_SCRIPT_STR  0x20
#define  COMM_LED_CONFIG_OFF              0x00

//------------------------------------------------
//--- LED CONFIG: SCRIPT BUSY: END
//    mode: BLINK ONCE
//    time: 250ms
//------------------------------------------------
#define  COMM_LED_CONFIG_BUSY_SCRIPT_END  0xA4

#endif // __COMM_GEN_H

⌨️ 快捷键说明

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