Merge remote-tracking branch 'origin/master' into develop

This commit is contained in:
QMK Bot 2021-03-18 00:48:52 +00:00
commit 4aa57e9e46
9 changed files with 392 additions and 401 deletions

View file

@ -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);

View file

@ -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();