possibly all files needed to make things work
This commit is contained in:
		
							parent
							
								
									708bb4f55d
								
							
						
					
					
						commit
						09ff4b0c99
					
				
					 15 changed files with 783 additions and 16 deletions
				
			
		
							
								
								
									
										34
									
								
								keyboards/handwired/gc_controller/gc_read.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								keyboards/handwired/gc_controller/gc_read.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,34 @@
 | 
			
		|||
#include "quantum.h"
 | 
			
		||||
 | 
			
		||||
/* Adapted from https://github.com/bigjosh/SimpleNeoPixelDemo/ */
 | 
			
		||||
 | 
			
		||||
#ifndef NOP_FUDGE
 | 
			
		||||
#    if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX)
 | 
			
		||||
#        define NOP_FUDGE 0.4
 | 
			
		||||
#    else
 | 
			
		||||
#        error("NOP_FUDGE configuration required")
 | 
			
		||||
#        define NOP_FUDGE 1  // this just pleases the compile so the above error is easier to spot
 | 
			
		||||
#    endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define NUMBER_NOPS 6
 | 
			
		||||
#define CYCLES_PER_SEC (STM32_SYSCLK / NUMBER_NOPS * NOP_FUDGE)
 | 
			
		||||
#define NS_PER_SEC (1000000000L)  // Note that this has to be SIGNED since we want to be able to check for negative values of derivatives
 | 
			
		||||
#define NS_PER_CYCLE (NS_PER_SEC / CYCLES_PER_SEC)
 | 
			
		||||
#define NS_TO_CYCLES(n) ((n) / NS_PER_CYCLE)
 | 
			
		||||
 | 
			
		||||
#define wait_ns(x)                                  \
 | 
			
		||||
    do {                                            \
 | 
			
		||||
        for (int i = 0; i < NS_TO_CYCLES(x); i++) { \
 | 
			
		||||
            __asm__ volatile("nop\n\t"              \
 | 
			
		||||
                             "nop\n\t"              \
 | 
			
		||||
                             "nop\n\t"              \
 | 
			
		||||
                             "nop\n\t"              \
 | 
			
		||||
                             "nop\n\t"              \
 | 
			
		||||
                             "nop\n\t");            \
 | 
			
		||||
        }                                           \
 | 
			
		||||
    } while (0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void gamecube_init(void);
 | 
			
		||||
void gamecube_scan(uint16_t * buttons, uint8_t * joysticks);
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue