ATY_LIB V2_102_230218
ATY_LIB for general devices or ALGO
 
Loading...
Searching...
No Matches
main.c
Go to the documentation of this file.
1// Copyright 2021 IOsetting <iosetting(at)outlook.com>
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15/***
16 * Demo: ADXL345
17 * Board: STC8H8K64U
18 * 8H8K64U
19 * GND -> GND G
20 * VDD(Vcc) -> VCC V
21 * CS -> GPIO OUT P35 34
22 * INT1 -> GPIO IN P36 INT2 35
23 * INT2 -> GPIO IN P37 INT3 36
24 * SDO -> MISO P33 30
25 * SDI/SDA -> MOSI P34 31
26 * SCL -> SCLK P32 29
27 */
28
29#include "fw_hal.h"
30#include "adxl345.h"
31#include <stdio.h>
32
34volatile int16_t x, y, z;
35
36void SPI_Init(void)
37{
38 // ADXL345, SPI CLK max frequency is 5MHz
40 // Clock is high when idle
42 // Data transfer is driven by lower SS pin
44 // MSB first
46 // Define the output pins
48 // Ignore SS pin, use MSTR to swith between master/slave mode
50 // Master mode
52 // Start SPI
54}
55
56void GPIO_Init(void)
57{
58 // Configure GPIO pins before SPI and device
59 // MISO(P33), MOSI(P34)
61 // SCLK(P32), CS(P35),
63 // INT2(P36), INT3(P37)
65}
66
68{
72}
73
75{
76 count_int2++;
78 {
80 }
81
82}
83
85{
86 count_int3++;
90}
91
92int main(void)
93{
95 GPIO_Init();
97 SPI_Init();
98 INT_Init();
106 );
107 // Tap threshold: 62.5mg / LSB, value = 2.5g / 0.0625g = 0x28
109 // Tap duration: 625us / LSB, value = 0.02s / 0.000625s = 0x20
111 // Tap latency: 1.25ms / LSB, value = 0.1s / 0.00125s = 0x50
113 // Tap window: 1.25ms / LSB, value = 0.3s / 0.00125s = 0xF0
120
121 // read to clear interrupts, or the counter will never receive interrupts
126
127 while(1)
128 {
129 printf("X:%6d, Y:%6d, Z:%6d, DAT:%3d, TAP:%3d, 2-TAP:%3d\r\n",
131 SYS_Delay(50);
132 }
133}
__WEAK_ATY void printf(uint8_t *,...)
uint8_t ADXL345_ReadByte(uint8_t addr)
Definition: adxl345.c:20
void ADXL345_SetInterrupts(uint8_t interrupts)
Definition: adxl345.c:72
uint16_t ADXL345_ReadInt(uint8_t addr)
Definition: adxl345.c:30
void ADXL345_EnableTapDetectOnAxes(uint8_t axes)
Definition: adxl345.c:88
HAL_StatusTypeDef ADXL345_Init(ADXL345_DataRate_t dataRate, ADXL345_SPI_Wire_t spiWire, ADXL345_IntActive_t intLevel, ADXL345_DataResolve_t resolve, ADXL345_DataAlignment_t alignment, ADXL345_G_Range_t range)
Definition: adxl345.c:50
void ADXL345_RemapInterrupts(uint8_t interrupts)
Definition: adxl345.c:77
void ADXL345_WriteByte(uint8_t addr, uint8_t dat)
Definition: adxl345.c:41
uint8_t ADXL345_IsInterrupt(uint8_t interrupt)
Definition: adxl345.c:82
#define ADXL345_REG_DUR
Definition: adxl345.h:35
#define ADXL345_TAP_DETECT_AXIS_Z
Definition: adxl345.h:75
@ ADXL345_DATARATE_100_HZ
Definition: adxl345.h:88
#define ADXL345_REG_THRESH_TAP
Definition: adxl345.h:31
@ ADXL345_DATA_RESOLVE_FULL
Definition: adxl345.h:131
#define ADXL345_REG_DATAY0
Definition: adxl345.h:54
#define ADXL345_INT_DOUBLE_TAP
Definition: adxl345.h:68
#define ADXL345_REG_LATENT
Definition: adxl345.h:36
@ ADXL345_G_RANGE_8G
Definition: adxl345.h:148
#define ADXL345_REG_DATAZ0
Definition: adxl345.h:56
#define ADXL345_INT_DATA_READY
Definition: adxl345.h:66
#define ADXL345_REG_INT_SOURCE
Definition: adxl345.h:50
@ ADXL345_DATA_ALIGNMENT_RIGHT
Definition: adxl345.h:138
#define ADXL345_REG_WINDOW
Definition: adxl345.h:37
@ ADXL345_SPI_WIRE_4
Definition: adxl345.h:114
@ ADXL345_INT_ACTIVE_LOW
Definition: adxl345.h:123
#define ADXL345_TAP_DETECT_AXIS_Y
Definition: adxl345.h:76
#define ADXL345_REG_DATAX0
Definition: adxl345.h:52
#define ADXL345_INT_SINGLE_TAP
Definition: adxl345.h:67
#define ADXL345_TAP_DETECT_AXIS_X
Definition: adxl345.h:77
#define EXTI_Int2_SetIntState(__STATE__)
Definition: fw_exti.h:140
#define EXTI_VectInt3
Definition: fw_exti.h:48
#define EXTI_Int3_SetIntState(__STATE__)
Definition: fw_exti.h:139
#define EXTI_Global_SetIntState(__STATE__)
Definition: fw_exti.h:115
#define EXTI_VectInt2
Definition: fw_exti.h:47
#define GPIO_P3_SetMode(__PINS__, __MODE__)
Definition: fw_gpio.h:89
@ GPIO_Pin_5
Definition: fw_gpio.h:50
@ GPIO_Pin_2
Definition: fw_gpio.h:47
@ GPIO_Pin_4
Definition: fw_gpio.h:49
@ GPIO_Pin_3
Definition: fw_gpio.h:48
@ GPIO_Pin_6
Definition: fw_gpio.h:51
@ GPIO_Pin_7
Definition: fw_gpio.h:52
@ GPIO_Mode_Input_HIP
Definition: fw_gpio.h:25
@ GPIO_Mode_Output_PP
Definition: fw_gpio.h:24
@ GPIO_Mode_InOut_QBD
Definition: fw_gpio.h:23
#define SPI_SetClockPrescaler(__PRE_SCALER__)
Definition: fw_spi.h:88
#define SPI_SetPort(__ALTER_PORT__)
Definition: fw_spi.h:92
#define SPI_SetDataOrder(__ORDER__)
Definition: fw_spi.h:70
@ SPI_ClockPreScaler_16
Definition: fw_spi.h:47
#define SPI_SetEnabled(__STATE__)
Definition: fw_spi.h:69
#define SPI_SetClockPolarity(__STATE__)
Definition: fw_spi.h:78
#define SPI_SetClockPhase(__PHASE__)
Definition: fw_spi.h:84
@ SPI_ClockPhase_TrailingEdge
Definition: fw_spi.h:54
#define SPI_IgnoreSlaveSelect(__STATE__)
Definition: fw_spi.h:68
#define SPI_SetMasterMode(__STATE__)
Definition: fw_spi.h:71
@ SPI_AlterPort_P35_P34_P33_P32
Definition: fw_spi.h:39
@ SPI_DataOrder_MSB
Definition: fw_spi.h:59
void SYS_SetClock(void)
Definition: fw_sys.c:40
void SYS_Delay(uint16_t t)
Definition: fw_sys.c:65
@ HAL_State_ON
Definition: fw_types.h:71
short int16_t
Definition: fw_types.h:24
unsigned char uint8_t
Definition: fw_types.h:18
@ UART1_BaudSource_Timer1
Definition: fw_uart.h:33
void UART1_Config8bitUart(UART1_BaudSource_t baudSource, HAL_State_t _1TMode, uint32_t baudrate)
Definition: fw_uart.c:56
int main(void)
Definition: main.c:45
void GPIO_Init(void)
Definition: main.c:39
INTERRUPT(Timer0_Routine, EXTI_VectTimer0)
Definition: main.c:72
volatile uint8_t count_int3
Definition: main.c:33
volatile int16_t y
Definition: main.c:34
void SPI_Init(void)
Definition: main.c:36
void INT_Init()
Definition: main.c:67
volatile uint8_t count_int2
Definition: main.c:33
volatile int16_t z
Definition: main.c:34
volatile int16_t x
Definition: main.c:34
volatile uint8_t count_double_tap
Definition: main.c:33