silentstep
2.1.0.0
Toggle main menu visibility
Main Page
Topics
Data Structures
Data Structures
Data Structure Index
Data Fields
All
Variables
Files
File List
Globals
All
a
m
s
Functions
Enumerations
Enumerator
Macros
s
spi_specifics.h
Go to the documentation of this file.
1
/****************************************************************************
2
** Copyright (C) 2021 MikroElektronika d.o.o.
3
** Contact: https://www.mikroe.com/contact
4
**
5
** Permission is hereby granted, free of charge, to any person obtaining a copy
6
** of this software and associated documentation files (the "Software"), to deal
7
** in the Software without restriction, including without limitation the rights
8
** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
** copies of the Software, and to permit persons to whom the Software is
10
** furnished to do so, subject to the following conditions:
11
** The above copyright notice and this permission notice shall be
12
** included in all copies or substantial portions of the Software.
13
**
14
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16
** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19
** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
** USE OR OTHER DEALINGS IN THE SOFTWARE.
21
****************************************************************************/
27
#ifndef _SPI_SPECIFICS_
28
#define _SPI_SPECIFICS_
29
30
#ifdef __cplusplus
31
extern
"C"
{
32
#endif
33
34
#include "mcu_definitions.h"
35
36
// mikroE toolchain specific
37
#if defined(__MIKROC_AI_FOR_PIC__) || defined(__MIKROC_AI_FOR_DSPIC__) || \
38
defined(__MIKROC_AI_FOR_PIC32__)
39
40
#ifdef __MIKROC_AI_FOR_PIC__
41
#define BIT_INDEX 7
42
#elif defined(__MIKROC_AI_FOR_PIC32__)
43
#define BIT_INDEX 9
44
#elif defined(__MIKROC_AI_FOR_DSPIC__)
45
#ifdef HAL_LL_SPI1_CONTROL_REG_ADDRESS
46
#define BIT_INDEX 9
47
#else
48
#define BIT_INDEX 7
49
#endif
50
#endif
51
52
#ifdef SAMPLE_REG_CASE_1
53
#ifdef __MIKROC_AI_FOR_PIC32__
54
#define SAMPLE_REG_ADDRESS(index) HAL_LL_SPI ## index ## CON_ADDRESS
55
#elif defined (__MIKROC_AI_FOR_PIC__)
56
#define SAMPLE_REG_ADDRESS(index) HAL_LL_SPI ## index ## CON1_ADDRESS
57
#else
58
#define SAMPLE_REG_ADDRESS(index) HAL_LL_SPI ## index ## _CONTROL_REG_ADDRESS
59
#endif
60
#else
61
#define SAMPLE_REG_ADDRESS(index) HAL_LL_SSP ## index ## STAT_ADDRESS
62
#endif
63
64
#if defined(SPI_MODULE) || defined(SPI_MODULE_1)
65
#define SET_SPI_DATA_SAMPLE_MIDDLE1 clear_reg_bit(SAMPLE_REG_ADDRESS(1), BIT_INDEX);
66
#define SET_SPI_DATA_SAMPLE_EDGE1 set_reg_bit(SAMPLE_REG_ADDRESS(1), BIT_INDEX);
67
#else
68
#define SET_SPI_DATA_SAMPLE_MIDDLE1
69
#define SET_SPI_DATA_SAMPLE_EDGE1
70
#endif
71
72
#ifdef SPI_MODULE_2
73
#define SET_SPI_DATA_SAMPLE_MIDDLE2 clear_reg_bit(SAMPLE_REG_ADDRESS(2), BIT_INDEX);
74
#define SET_SPI_DATA_SAMPLE_EDGE2 set_reg_bit(SAMPLE_REG_ADDRESS(2), BIT_INDEX);
75
#else
76
#define SET_SPI_DATA_SAMPLE_MIDDLE2
77
#define SET_SPI_DATA_SAMPLE_EDGE2
78
#endif
79
80
#ifdef SPI_MODULE_3
81
#define SET_SPI_DATA_SAMPLE_MIDDLE3 clear_reg_bit(SAMPLE_REG_ADDRESS(3), BIT_INDEX);
82
#define SET_SPI_DATA_SAMPLE_EDGE3 set_reg_bit(SAMPLE_REG_ADDRESS(3), BIT_INDEX);
83
#else
84
#define SET_SPI_DATA_SAMPLE_MIDDLE3
85
#define SET_SPI_DATA_SAMPLE_EDGE3
86
#endif
87
88
#ifdef SPI_MODULE_4
89
#define SET_SPI_DATA_SAMPLE_MIDDLE4 clear_reg_bit(SAMPLE_REG_ADDRESS(4), BIT_INDEX);
90
#define SET_SPI_DATA_SAMPLE_EDGE4 set_reg_bit(SAMPLE_REG_ADDRESS(4), BIT_INDEX);
91
#else
92
#define SET_SPI_DATA_SAMPLE_MIDDLE4
93
#define SET_SPI_DATA_SAMPLE_EDGE4
94
#endif
95
96
#ifdef SPI_MODULE_5
97
#define SET_SPI_DATA_SAMPLE_MIDDLE5 clear_reg_bit(SAMPLE_REG_ADDRESS(5), BIT_INDEX);
98
#define SET_SPI_DATA_SAMPLE_EDGE5 set_reg_bit(SAMPLE_REG_ADDRESS(5), BIT_INDEX);
99
#else
100
#define SET_SPI_DATA_SAMPLE_MIDDLE5
101
#define SET_SPI_DATA_SAMPLE_EDGE5
102
#endif
103
104
#ifdef SPI_MODULE_6
105
#define SET_SPI_DATA_SAMPLE_MIDDLE6 clear_reg_bit(SAMPLE_REG_ADDRESS(6), BIT_INDEX);
106
#define SET_SPI_DATA_SAMPLE_EDGE6 set_reg_bit(SAMPLE_REG_ADDRESS(6), BIT_INDEX);
107
#else
108
#define SET_SPI_DATA_SAMPLE_MIDDLE6
109
#define SET_SPI_DATA_SAMPLE_EDGE6
110
#endif
111
112
113
#define SET_SPI_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE1 SET_SPI_DATA_SAMPLE_MIDDLE2 \
114
SET_SPI_DATA_SAMPLE_MIDDLE3 SET_SPI_DATA_SAMPLE_MIDDLE4 \
115
SET_SPI_DATA_SAMPLE_MIDDLE5 SET_SPI_DATA_SAMPLE_MIDDLE6
116
#define SET_SPI_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE1 SET_SPI_DATA_SAMPLE_EDGE2 \
117
SET_SPI_DATA_SAMPLE_EDGE3 SET_SPI_DATA_SAMPLE_EDGE4 \
118
SET_SPI_DATA_SAMPLE_EDGE5 SET_SPI_DATA_SAMPLE_EDGE6
119
#else
120
#define SET_SPI_DATA_SAMPLE_MIDDLE
121
#define SET_SPI_DATA_SAMPLE_EDGE
122
#endif
123
124
#ifdef __cplusplus
125
}
126
#endif
127
#endif
// _SPI_SPECIFICS_
128
129
// ------------------------------------------------------------------------ END