XT converter cleanup (#12264)
This commit is contained in:
		
							parent
							
								
									cc84831cae
								
							
						
					
					
						commit
						9331c22620
					
				
					 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