-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathConfig.h
170 lines (133 loc) · 5.44 KB
/
Config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#ifndef _Config_H
#define _Config_H
//******* D E F I N I T I O N S ************************************************/
#define CLK_FREQ_25000000 0 //25MHz
#define CLK_FREQ_24000000 0 //24MHz
#define CLK_FREQ_20000000 0 //20MHz
#define CLK_FREQ_16000000 0 //16MHz
#define CLK_FREQ_12000000 1 //12MHz
#if((CLK_FREQ_25000000+CLK_FREQ_24000000+CLK_FREQ_20000000+CLK_FREQ_16000000+CLK_FREQ_12000000) != 1)
#error Select One Frequency for 1Us Delay Calculation.
#endif
//**********************************************************************
//This wait MACRO gives 1Us delay depending upon clock Speed Select;
//Wait_delay (200) generates a 200Us.
// loop: nop\ // 1 INST cycle
// nop\ // 1 INST cycle
// nop\ // 1 INST cycle
// decfsz macro_delay,1,1\ // 1 or 3INST cycle
// bra loop\ // 2 INST cycle
//**********************************************************************
//**********************************************************************
//#define CLOCK_FREQUENCY 25000000 //25MHz
//Note: 1 INST Cycle = ((1/ CLOCK_SPEED) * 4) = (1/25000000)*4 = 0.16Us
// Total INST Cycle in a loop = 0.16*6 = 0.96 ~ 1Us.
//**********************************************************************
#if(CLK_FREQ_25000000)
#define wait(a) _asm movlw a\
movwf macro_delay,1\
loop: nop\
nop\
nop\
decfsz macro_delay,1,1\
bra loop\
_endasm
#define BAUD_RATE 39
//**********************************************************************
//#define CLOCK_FREQUENCY 24000000 //24MHz
//Note: 1 INST Cycle = ((1/ CLOCK_SPEED) * 4) = (1/24000000)*4 = 0.1667Us
// Total INST Cycle in a loop = 0.1667*6 = 1.0007 ~ 1Us.
//**********************************************************************
#elif (CLK_FREQ_24000000)
#define wait(a) _asm movlw a\
movwf macro_delay,1\
loop: nop\
nop\
nop\
decfsz macro_delay,1,1\
bra loop\
_endasm
#define BAUD_RATE 38
//**********************************************************************
//#define CLOCK_FREQUENCY 20000000 //20MHz
//Note: 1 INST Cycle = ((1/ CLOCK_SPEED) * 4) = (1/20000000)*4 = 0.2Us
// Total INST Cycle in a loop = 0.2*5 = 1.00 ~ 1Us.
//**********************************************************************
#elif (CLK_FREQ_20000000)
#define wait(a) _asm movlw a\
movwf macro_delay,1\
loop: nop\
nop\
decfsz macro_delay,1,1\
bra loop\
_endasm
#define BAUD_RATE 31
//**********************************************************************
//#define CLOCK_FREQUENCY 16000000 //16MHz
//Note: 1 INST Cycle = ((1/ CLOCK_SPEED) * 4) = (1/16000000)*4 = 0.25Us
// Total INST Cycle in a loop = 0.25*4 = 1.00 ~ 1Us.
//**********************************************************************
#elif (CLK_FREQ_16000000)
#define wait(a) _asm movlw a\
movwf macro_delay,1\
loop: nop\
decfsz macro_delay,1,1\
bra loop\
_endasm
#define BAUD_RATE 25
//**********************************************************************
//#define CLOCK_FREQUENCY 12000000 //12MHz
//Note: 1 INST Cycle = ((1/ CLOCK_SPEED) * 4) = (1/12000000)*4 = 0.3333Us
// Total INST Cycle in a loop = 0.33333*3 = 0.9999 ~ 1Us.
//**********************************************************************
#elif (CLK_FREQ_12000000)
#define wait(a) _asm movlw a\
movwf macro_delay,1\
loop: decfsz macro_delay,1,1\
bra loop\
_endasm
#define BAUD_RATE 18
#endif
//*************************************************************************/
/******* G E N E R I C D E F I N I T I O N S ************************************************/
#define HIGH 1
#define LOW 0
#define OUTPUT 0
#define INPUT 1
#define SET 1
#define CLEAR 0
/**PORT D E F I N I T I O N S ****************************************************/
//UART PORT DEFINITIONS
#define UART_RX_DIRECTION TRISCbits.TRISC7
#define UART_TX_DIRECTION TRISCbits.TRISC6
#define UART_RX_STATUS RCSTA
#define UART_TX_STATUS TXSTA
//ONE WIRE PORT PIN DEFINITION
///****************************************************
// This Configuration is required to make any PIC MicroController
// I/O pin as Open drain to drive 1-wire.
///****************************************************
#define OW_PIN_DIRECTION LATAbits.LATA1
#define OW_WRITE_PIN TRISAbits.TRISA1
#define OW_READ_PIN PORTAbits.RA1
/******* G E N E R I C D E F I N I T I O N S ************************************************/
#define DELAY_6Us 6
#define DELAY_9Us 9
#define DELAY_10Us 10
#define DELAY_55Us 55
#define DELAY_60Us 60
#define DELAY_64Us 64
#define DELAY_70Us 70
#define DELAY_205Us 205 // DELAY_410Us = DELAY_205Us + DELAY_205Us
#define DELAY_240Us 240 // DELAY_480Us = DELAY_240Us + DELAY_240Us // since the variable is declared as unsigned char
/**************************************************************
function definition
**************************************************************/
void initEUSART(void);
void USART_RxTx(void);
void high_isr(void);
void low_isr(void);
/***********************************************************
V A R I A B L E S
************************************************************/
#endif