forked from mirrors/qmk_userspace
Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
commit
4aa57e9e46
9 changed files with 392 additions and 401 deletions
|
@ -38,33 +38,36 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
#pragma once
|
||||
|
||||
#define XT_DATA_IN() \
|
||||
do { \
|
||||
XT_DATA_DDR &= ~(1 << XT_DATA_BIT); \
|
||||
XT_DATA_PORT |= (1 << XT_DATA_BIT); \
|
||||
#include "quantum.h"
|
||||
|
||||
#define XT_DATA_IN() \
|
||||
do { \
|
||||
setPinInput(XT_DATA_PIN); \
|
||||
writePinHigh(XT_DATA_PIN); \
|
||||
} while (0)
|
||||
|
||||
#define XT_DATA_READ() (XT_DATA_PIN & (1 << XT_DATA_BIT))
|
||||
#define XT_DATA_READ() readPin(XT_DATA_PIN)
|
||||
|
||||
#define XT_DATA_LO() \
|
||||
do { \
|
||||
XT_DATA_PORT &= ~(1 << XT_DATA_BIT); \
|
||||
XT_DATA_DDR |= (1 << XT_DATA_BIT); \
|
||||
#define XT_DATA_LO() \
|
||||
do { \
|
||||
writePinLow(XT_DATA_PIN); \
|
||||
setPinOutput(XT_DATA_PIN); \
|
||||
} while (0)
|
||||
|
||||
#define XT_CLOCK_IN() \
|
||||
do { \
|
||||
XT_CLOCK_DDR &= ~(1 << XT_CLOCK_BIT); \
|
||||
XT_CLOCK_PORT |= (1 << XT_CLOCK_BIT); \
|
||||
#define XT_CLOCK_IN() \
|
||||
do { \
|
||||
setPinInput(XT_CLOCK_PIN); \
|
||||
writePinHigh(XT_CLOCK_PIN); \
|
||||
} while (0)
|
||||
|
||||
#define XT_CLOCK_READ() (XT_CLOCK_PIN & (1 << XT_CLOCK_BIT))
|
||||
#define XT_CLOCK_READ() readPin(XT_CLOCK_PIN)
|
||||
|
||||
#define XT_CLOCK_LO() \
|
||||
do { \
|
||||
XT_CLOCK_PORT &= ~(1 << XT_CLOCK_BIT); \
|
||||
XT_CLOCK_DDR |= (1 << XT_CLOCK_BIT); \
|
||||
#define XT_CLOCK_LO() \
|
||||
do { \
|
||||
writePinLow(XT_CLOCK_PIN); \
|
||||
setPinOutput(XT_CLOCK_PIN); \
|
||||
} while (0)
|
||||
|
||||
void xt_host_init(void);
|
||||
|
||||
uint8_t xt_host_recv(void);
|
||||
|
|
|
@ -38,7 +38,6 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||
|
||||
#include <stdbool.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <util/delay.h>
|
||||
#include "xt.h"
|
||||
#include "wait.h"
|
||||
#include "debug.h"
|
||||
|
@ -60,7 +59,7 @@ void xt_host_init(void) {
|
|||
/* soft reset: pull clock line down for 20ms */
|
||||
XT_DATA_LO();
|
||||
XT_CLOCK_LO();
|
||||
_delay_ms(20);
|
||||
wait_ms(20);
|
||||
|
||||
/* input mode with pullup */
|
||||
XT_CLOCK_IN();
|
||||
|
@ -123,6 +122,7 @@ ISR(XT_INT_VECT) {
|
|||
static uint8_t pbuf[PBUF_SIZE];
|
||||
static uint8_t pbuf_head = 0;
|
||||
static uint8_t pbuf_tail = 0;
|
||||
|
||||
static inline void pbuf_enqueue(uint8_t data) {
|
||||
uint8_t sreg = SREG;
|
||||
cli();
|
||||
|
@ -135,6 +135,7 @@ static inline void pbuf_enqueue(uint8_t data) {
|
|||
}
|
||||
SREG = sreg;
|
||||
}
|
||||
|
||||
static inline uint8_t pbuf_dequeue(void) {
|
||||
uint8_t val = 0;
|
||||
|
||||
|
@ -148,6 +149,7 @@ static inline uint8_t pbuf_dequeue(void) {
|
|||
|
||||
return val;
|
||||
}
|
||||
|
||||
static inline bool pbuf_has_data(void) {
|
||||
uint8_t sreg = SREG;
|
||||
cli();
|
||||
|
@ -155,6 +157,7 @@ static inline bool pbuf_has_data(void) {
|
|||
SREG = sreg;
|
||||
return has_data;
|
||||
}
|
||||
|
||||
static inline void pbuf_clear(void) {
|
||||
uint8_t sreg = SREG;
|
||||
cli();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue