cleaning, moved memgame to projects
This commit is contained in:
@@ -1 +0,0 @@
|
||||
../lib
|
||||
@@ -1,973 +0,0 @@
|
||||
# 1 "main.c"
|
||||
# 1 "/home/ondra/git/avr-projects/devel/memorygame//"
|
||||
# 1 "<built-in>"
|
||||
# 1 "<command-line>"
|
||||
# 1 "main.c"
|
||||
# 1 "/usr/avr/include/avr/io.h" 1 3
|
||||
# 99 "/usr/avr/include/avr/io.h" 3
|
||||
# 1 "/usr/avr/include/avr/sfr_defs.h" 1 3
|
||||
# 126 "/usr/avr/include/avr/sfr_defs.h" 3
|
||||
# 1 "/usr/avr/include/inttypes.h" 1 3
|
||||
# 37 "/usr/avr/include/inttypes.h" 3
|
||||
# 1 "/usr/lib/gcc/avr/4.9.2/include/stdint.h" 1 3 4
|
||||
# 9 "/usr/lib/gcc/avr/4.9.2/include/stdint.h" 3 4
|
||||
# 1 "/usr/avr/include/stdint.h" 1 3 4
|
||||
# 122 "/usr/avr/include/stdint.h" 3 4
|
||||
typedef signed int int8_t __attribute__((__mode__(__QI__)));
|
||||
typedef unsigned int uint8_t __attribute__((__mode__(__QI__)));
|
||||
typedef signed int int16_t __attribute__ ((__mode__ (__HI__)));
|
||||
typedef unsigned int uint16_t __attribute__ ((__mode__ (__HI__)));
|
||||
typedef signed int int32_t __attribute__ ((__mode__ (__SI__)));
|
||||
typedef unsigned int uint32_t __attribute__ ((__mode__ (__SI__)));
|
||||
|
||||
typedef signed int int64_t __attribute__((__mode__(__DI__)));
|
||||
typedef unsigned int uint64_t __attribute__((__mode__(__DI__)));
|
||||
# 143 "/usr/avr/include/stdint.h" 3 4
|
||||
typedef int16_t intptr_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint16_t uintptr_t;
|
||||
# 160 "/usr/avr/include/stdint.h" 3 4
|
||||
typedef int8_t int_least8_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint8_t uint_least8_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef int16_t int_least16_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint16_t uint_least16_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef int32_t int_least32_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint32_t uint_least32_t;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef int64_t int_least64_t;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint64_t uint_least64_t;
|
||||
# 214 "/usr/avr/include/stdint.h" 3 4
|
||||
typedef int8_t int_fast8_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint8_t uint_fast8_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef int16_t int_fast16_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint16_t uint_fast16_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef int32_t int_fast32_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint32_t uint_fast32_t;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef int64_t int_fast64_t;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint64_t uint_fast64_t;
|
||||
# 274 "/usr/avr/include/stdint.h" 3 4
|
||||
typedef int64_t intmax_t;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef uint64_t uintmax_t;
|
||||
# 10 "/usr/lib/gcc/avr/4.9.2/include/stdint.h" 2 3 4
|
||||
# 38 "/usr/avr/include/inttypes.h" 2 3
|
||||
# 77 "/usr/avr/include/inttypes.h" 3
|
||||
typedef int32_t int_farptr_t;
|
||||
|
||||
|
||||
|
||||
typedef uint32_t uint_farptr_t;
|
||||
# 127 "/usr/avr/include/avr/sfr_defs.h" 2 3
|
||||
# 100 "/usr/avr/include/avr/io.h" 2 3
|
||||
# 248 "/usr/avr/include/avr/io.h" 3
|
||||
# 1 "/usr/avr/include/avr/iom328p.h" 1 3
|
||||
# 249 "/usr/avr/include/avr/io.h" 2 3
|
||||
# 534 "/usr/avr/include/avr/io.h" 3
|
||||
# 1 "/usr/avr/include/avr/portpins.h" 1 3
|
||||
# 535 "/usr/avr/include/avr/io.h" 2 3
|
||||
|
||||
# 1 "/usr/avr/include/avr/common.h" 1 3
|
||||
# 537 "/usr/avr/include/avr/io.h" 2 3
|
||||
|
||||
# 1 "/usr/avr/include/avr/version.h" 1 3
|
||||
# 539 "/usr/avr/include/avr/io.h" 2 3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 1 "/usr/avr/include/avr/fuse.h" 1 3
|
||||
# 239 "/usr/avr/include/avr/fuse.h" 3
|
||||
typedef struct
|
||||
{
|
||||
unsigned char low;
|
||||
unsigned char high;
|
||||
unsigned char extended;
|
||||
} __fuse_t;
|
||||
# 546 "/usr/avr/include/avr/io.h" 2 3
|
||||
|
||||
|
||||
# 1 "/usr/avr/include/avr/lock.h" 1 3
|
||||
# 549 "/usr/avr/include/avr/io.h" 2 3
|
||||
# 2 "main.c" 2
|
||||
# 1 "/usr/avr/include/avr/interrupt.h" 1 3
|
||||
# 3 "main.c" 2
|
||||
# 1 "/usr/avr/include/util/delay.h" 1 3
|
||||
# 43 "/usr/avr/include/util/delay.h" 3
|
||||
# 1 "/usr/avr/include/util/delay_basic.h" 1 3
|
||||
# 40 "/usr/avr/include/util/delay_basic.h" 3
|
||||
static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
|
||||
static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
|
||||
# 80 "/usr/avr/include/util/delay_basic.h" 3
|
||||
void
|
||||
_delay_loop_1(uint8_t __count)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"1: dec %0" "\n\t"
|
||||
"brne 1b"
|
||||
: "=r" (__count)
|
||||
: "0" (__count)
|
||||
);
|
||||
}
|
||||
# 102 "/usr/avr/include/util/delay_basic.h" 3
|
||||
void
|
||||
_delay_loop_2(uint16_t __count)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"1: sbiw %0,1" "\n\t"
|
||||
"brne 1b"
|
||||
: "=w" (__count)
|
||||
: "0" (__count)
|
||||
);
|
||||
}
|
||||
# 44 "/usr/avr/include/util/delay.h" 2 3
|
||||
# 1 "/usr/avr/include/math.h" 1 3
|
||||
# 127 "/usr/avr/include/math.h" 3
|
||||
extern double cos(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double sin(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double tan(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double fabs(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double fmod(double __x, double __y) __attribute__((__const__));
|
||||
# 168 "/usr/avr/include/math.h" 3
|
||||
extern double modf(double __x, double *__iptr);
|
||||
|
||||
|
||||
|
||||
extern float modff (float __x, float *__iptr);
|
||||
|
||||
|
||||
|
||||
|
||||
extern double sqrt(double __x) __attribute__((__const__));
|
||||
extern float sqrtf (float) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
extern double cbrt(double __x) __attribute__((__const__));
|
||||
# 194 "/usr/avr/include/math.h" 3
|
||||
extern double hypot (double __x, double __y) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double square(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double floor(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double ceil(double __x) __attribute__((__const__));
|
||||
# 234 "/usr/avr/include/math.h" 3
|
||||
extern double frexp(double __x, int *__pexp);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double ldexp(double __x, int __exp) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double exp(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double cosh(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double sinh(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double tanh(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double acos(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double asin(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double atan(double __x) __attribute__((__const__));
|
||||
# 298 "/usr/avr/include/math.h" 3
|
||||
extern double atan2(double __y, double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double log(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double log10(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double pow(double __x, double __y) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern int isnan(double __x) __attribute__((__const__));
|
||||
# 333 "/usr/avr/include/math.h" 3
|
||||
extern int isinf(double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
__attribute__((__const__)) static inline int isfinite (double __x)
|
||||
{
|
||||
unsigned char __exp;
|
||||
__asm__ (
|
||||
"mov %0, %C1 \n\t"
|
||||
"lsl %0 \n\t"
|
||||
"mov %0, %D1 \n\t"
|
||||
"rol %0 "
|
||||
: "=r" (__exp)
|
||||
: "r" (__x) );
|
||||
return __exp != 0xff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
__attribute__((__const__)) static inline double copysign (double __x, double __y)
|
||||
{
|
||||
__asm__ (
|
||||
"bst %D2, 7 \n\t"
|
||||
"bld %D0, 7 "
|
||||
: "=r" (__x)
|
||||
: "0" (__x), "r" (__y) );
|
||||
return __x;
|
||||
}
|
||||
# 376 "/usr/avr/include/math.h" 3
|
||||
extern int signbit (double __x) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double fdim (double __x, double __y) __attribute__((__const__));
|
||||
# 392 "/usr/avr/include/math.h" 3
|
||||
extern double fma (double __x, double __y, double __z) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double fmax (double __x, double __y) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double fmin (double __x, double __y) __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern double trunc (double __x) __attribute__((__const__));
|
||||
# 426 "/usr/avr/include/math.h" 3
|
||||
extern double round (double __x) __attribute__((__const__));
|
||||
# 439 "/usr/avr/include/math.h" 3
|
||||
extern long lround (double __x) __attribute__((__const__));
|
||||
# 453 "/usr/avr/include/math.h" 3
|
||||
extern long lrint (double __x) __attribute__((__const__));
|
||||
# 45 "/usr/avr/include/util/delay.h" 2 3
|
||||
# 84 "/usr/avr/include/util/delay.h" 3
|
||||
static inline void _delay_us(double __us) __attribute__((always_inline));
|
||||
static inline void _delay_ms(double __ms) __attribute__((always_inline));
|
||||
# 141 "/usr/avr/include/util/delay.h" 3
|
||||
void
|
||||
_delay_ms(double __ms)
|
||||
{
|
||||
double __tmp ;
|
||||
# 166 "/usr/avr/include/util/delay.h" 3
|
||||
uint16_t __ticks;
|
||||
__tmp = ((16000000UL) / 4e3) * __ms;
|
||||
if (__tmp < 1.0)
|
||||
__ticks = 1;
|
||||
else if (__tmp > 65535)
|
||||
{
|
||||
|
||||
__ticks = (uint16_t) (__ms * 10.0);
|
||||
while(__ticks)
|
||||
{
|
||||
|
||||
_delay_loop_2(((16000000UL) / 4e3) / 10);
|
||||
__ticks --;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
__ticks = (uint16_t)__tmp;
|
||||
_delay_loop_2(__ticks);
|
||||
|
||||
}
|
||||
# 223 "/usr/avr/include/util/delay.h" 3
|
||||
void
|
||||
_delay_us(double __us)
|
||||
{
|
||||
double __tmp ;
|
||||
# 248 "/usr/avr/include/util/delay.h" 3
|
||||
uint8_t __ticks;
|
||||
double __tmp2 ;
|
||||
__tmp = ((16000000UL) / 3e6) * __us;
|
||||
__tmp2 = ((16000000UL) / 4e6) * __us;
|
||||
if (__tmp < 1.0)
|
||||
__ticks = 1;
|
||||
else if (__tmp2 > 65535)
|
||||
{
|
||||
_delay_ms(__us / 1000.0);
|
||||
}
|
||||
else if (__tmp > 255)
|
||||
{
|
||||
uint16_t __ticks=(uint16_t)__tmp2;
|
||||
_delay_loop_2(__ticks);
|
||||
return;
|
||||
}
|
||||
else
|
||||
__ticks = (uint8_t)__tmp;
|
||||
_delay_loop_1(__ticks);
|
||||
|
||||
}
|
||||
# 4 "main.c" 2
|
||||
|
||||
|
||||
# 1 "/usr/avr/include/stdlib.h" 1 3
|
||||
# 47 "/usr/avr/include/stdlib.h" 3
|
||||
# 1 "/usr/lib/gcc/avr/4.9.2/include/stddef.h" 1 3 4
|
||||
# 212 "/usr/lib/gcc/avr/4.9.2/include/stddef.h" 3 4
|
||||
typedef unsigned int size_t;
|
||||
# 324 "/usr/lib/gcc/avr/4.9.2/include/stddef.h" 3 4
|
||||
typedef int wchar_t;
|
||||
# 48 "/usr/avr/include/stdlib.h" 2 3
|
||||
# 68 "/usr/avr/include/stdlib.h" 3
|
||||
typedef struct {
|
||||
int quot;
|
||||
int rem;
|
||||
} div_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
long quot;
|
||||
long rem;
|
||||
} ldiv_t;
|
||||
|
||||
|
||||
typedef int (*__compar_fn_t)(const void *, const void *);
|
||||
# 114 "/usr/avr/include/stdlib.h" 3
|
||||
extern void abort(void) __attribute__((__noreturn__));
|
||||
|
||||
|
||||
|
||||
|
||||
extern int abs(int __i) __attribute__((__const__));
|
||||
# 128 "/usr/avr/include/stdlib.h" 3
|
||||
extern long labs(long __i) __attribute__((__const__));
|
||||
# 151 "/usr/avr/include/stdlib.h" 3
|
||||
extern void *bsearch(const void *__key, const void *__base, size_t __nmemb,
|
||||
size_t __size, int (*__compar)(const void *, const void *));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern div_t div(int __num, int __denom) __asm__("__divmodhi4") __attribute__((__const__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern ldiv_t ldiv(long __num, long __denom) __asm__("__divmodsi4") __attribute__((__const__));
|
||||
# 183 "/usr/avr/include/stdlib.h" 3
|
||||
extern void qsort(void *__base, size_t __nmemb, size_t __size,
|
||||
__compar_fn_t __compar);
|
||||
# 216 "/usr/avr/include/stdlib.h" 3
|
||||
extern long strtol(const char *__nptr, char **__endptr, int __base);
|
||||
# 250 "/usr/avr/include/stdlib.h" 3
|
||||
extern unsigned long strtoul(const char *__nptr, char **__endptr, int __base);
|
||||
# 262 "/usr/avr/include/stdlib.h" 3
|
||||
extern long atol(const char *__s) __attribute__((__pure__));
|
||||
# 274 "/usr/avr/include/stdlib.h" 3
|
||||
extern int atoi(const char *__s) __attribute__((__pure__));
|
||||
# 286 "/usr/avr/include/stdlib.h" 3
|
||||
extern void exit(int __status) __attribute__((__noreturn__));
|
||||
# 298 "/usr/avr/include/stdlib.h" 3
|
||||
extern void *malloc(size_t __size) __attribute__((__malloc__));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern void free(void *__ptr);
|
||||
|
||||
|
||||
|
||||
|
||||
extern size_t __malloc_margin;
|
||||
|
||||
|
||||
|
||||
|
||||
extern char *__malloc_heap_start;
|
||||
|
||||
|
||||
|
||||
|
||||
extern char *__malloc_heap_end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern void *calloc(size_t __nele, size_t __size) __attribute__((__malloc__));
|
||||
# 346 "/usr/avr/include/stdlib.h" 3
|
||||
extern void *realloc(void *__ptr, size_t __size) __attribute__((__malloc__));
|
||||
|
||||
extern double strtod(const char *__nptr, char **__endptr);
|
||||
|
||||
extern double atof(const char *__nptr);
|
||||
# 372 "/usr/avr/include/stdlib.h" 3
|
||||
extern int rand(void);
|
||||
|
||||
|
||||
|
||||
extern void srand(unsigned int __seed);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern int rand_r(unsigned long *__ctx);
|
||||
# 417 "/usr/avr/include/stdlib.h" 3
|
||||
extern __inline__ __attribute__((__gnu_inline__))
|
||||
char *itoa (int __val, char *__s, int __radix)
|
||||
{
|
||||
if (!__builtin_constant_p (__radix)) {
|
||||
extern char *__itoa (int, char *, int);
|
||||
return __itoa (__val, __s, __radix);
|
||||
} else if (__radix < 2 || __radix > 36) {
|
||||
*__s = 0;
|
||||
return __s;
|
||||
} else {
|
||||
extern char *__itoa_ncheck (int, char *, unsigned char);
|
||||
return __itoa_ncheck (__val, __s, __radix);
|
||||
}
|
||||
}
|
||||
# 462 "/usr/avr/include/stdlib.h" 3
|
||||
extern __inline__ __attribute__((__gnu_inline__))
|
||||
char *ltoa (long __val, char *__s, int __radix)
|
||||
{
|
||||
if (!__builtin_constant_p (__radix)) {
|
||||
extern char *__ltoa (long, char *, int);
|
||||
return __ltoa (__val, __s, __radix);
|
||||
} else if (__radix < 2 || __radix > 36) {
|
||||
*__s = 0;
|
||||
return __s;
|
||||
} else {
|
||||
extern char *__ltoa_ncheck (long, char *, unsigned char);
|
||||
return __ltoa_ncheck (__val, __s, __radix);
|
||||
}
|
||||
}
|
||||
# 505 "/usr/avr/include/stdlib.h" 3
|
||||
extern __inline__ __attribute__((__gnu_inline__))
|
||||
char *utoa (unsigned int __val, char *__s, int __radix)
|
||||
{
|
||||
if (!__builtin_constant_p (__radix)) {
|
||||
extern char *__utoa (unsigned int, char *, int);
|
||||
return __utoa (__val, __s, __radix);
|
||||
} else if (__radix < 2 || __radix > 36) {
|
||||
*__s = 0;
|
||||
return __s;
|
||||
} else {
|
||||
extern char *__utoa_ncheck (unsigned int, char *, unsigned char);
|
||||
return __utoa_ncheck (__val, __s, __radix);
|
||||
}
|
||||
}
|
||||
# 547 "/usr/avr/include/stdlib.h" 3
|
||||
extern __inline__ __attribute__((__gnu_inline__))
|
||||
char *ultoa (unsigned long __val, char *__s, int __radix)
|
||||
{
|
||||
if (!__builtin_constant_p (__radix)) {
|
||||
extern char *__ultoa (unsigned long, char *, int);
|
||||
return __ultoa (__val, __s, __radix);
|
||||
} else if (__radix < 2 || __radix > 36) {
|
||||
*__s = 0;
|
||||
return __s;
|
||||
} else {
|
||||
extern char *__ultoa_ncheck (unsigned long, char *, unsigned char);
|
||||
return __ultoa_ncheck (__val, __s, __radix);
|
||||
}
|
||||
}
|
||||
# 579 "/usr/avr/include/stdlib.h" 3
|
||||
extern long random(void);
|
||||
|
||||
|
||||
|
||||
|
||||
extern void srandom(unsigned long __seed);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern long random_r(unsigned long *__ctx);
|
||||
# 638 "/usr/avr/include/stdlib.h" 3
|
||||
extern char *dtostre(double __val, char *__s, unsigned char __prec,
|
||||
unsigned char __flags);
|
||||
# 655 "/usr/avr/include/stdlib.h" 3
|
||||
extern char *dtostrf(double __val, signed char __width,
|
||||
unsigned char __prec, char *__s);
|
||||
# 672 "/usr/avr/include/stdlib.h" 3
|
||||
extern int atexit(void (*)(void));
|
||||
extern int system (const char *);
|
||||
extern char *getenv (const char *);
|
||||
# 7 "main.c" 2
|
||||
|
||||
# 1 "lib/meta.h" 1
|
||||
|
||||
# 9 "main.c" 2
|
||||
# 1 "lib/arduino_pins.h" 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 1 "lib/pins.h" 1
|
||||
|
||||
# 30 "lib/pins.h"
|
||||
# 1 "lib/calc.h" 1
|
||||
|
||||
# 31 "lib/pins.h" 2
|
||||
# 51 "lib/pins.h"
|
||||
typedef volatile uint8_t* PORT_P;
|
||||
|
||||
typedef uint8_t BIT_N;
|
||||
# 8 "lib/arduino_pins.h" 2
|
||||
# 10 "main.c" 2
|
||||
|
||||
# 1 "lib/colors.h" 1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint8_t r;
|
||||
uint8_t g;
|
||||
uint8_t b;
|
||||
} xrgb_t;
|
||||
|
||||
typedef uint32_t rgb24_t;
|
||||
typedef uint16_t rgb16_t;
|
||||
typedef uint16_t rgb12_t;
|
||||
typedef uint8_t rgb6_t;
|
||||
# 12 "main.c" 2
|
||||
# 1 "lib/ws2812.h" 1
|
||||
|
||||
# 15 "lib/ws2812.h"
|
||||
# 1 "/usr/avr/include/avr/cpufunc.h" 1 3
|
||||
# 16 "lib/ws2812.h" 2
|
||||
|
||||
|
||||
# 1 "lib/nsdelay.h" 1
|
||||
|
||||
# 19 "lib/ws2812.h" 2
|
||||
# 13 "main.c" 2
|
||||
# 1 "lib/adc.h" 1
|
||||
|
||||
|
||||
|
||||
# 1 "/usr/lib/gcc/avr/4.9.2/include/stdbool.h" 1 3 4
|
||||
# 5 "lib/adc.h" 2
|
||||
|
||||
|
||||
|
||||
void adc_init()
|
||||
{
|
||||
(*(volatile uint8_t *)(0x7A)) |= (1 << (2)) | (1 << (1)) | (1 << (0));
|
||||
(*(volatile uint8_t *)(0x7C)) |= (1 << (6));
|
||||
do { ((*(volatile uint8_t *)(0x7A))) |= (1 << (uint8_t)(7)); } while(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
uint8_t adc_read_byte(uint8_t channel)
|
||||
{
|
||||
do { ((*(volatile uint8_t *)(0x7C))) = (((*(volatile uint8_t *)(0x7C))) & 0xF0) | ((uint8_t)(channel) & 0xF); } while(0);
|
||||
do { ((*(volatile uint8_t *)(0x7C))) |= (1 << (uint8_t)(5)); } while(0);
|
||||
do { ((*(volatile uint8_t *)(0x7A))) |= (1 << (uint8_t)(6)); } while(0);
|
||||
|
||||
while(((((uint8_t)((*(volatile uint8_t *)(0x7A)))) >> (uint8_t)(6)) & 0x1));
|
||||
|
||||
return (*(volatile uint8_t *)(0x79));
|
||||
}
|
||||
|
||||
|
||||
|
||||
uint16_t adc_read_word(uint8_t channel)
|
||||
{
|
||||
do { ((*(volatile uint8_t *)(0x7C))) = (((*(volatile uint8_t *)(0x7C))) & 0xF0) | ((uint8_t)(channel) & 0xF); } while(0);
|
||||
do { ((*(volatile uint8_t *)(0x7C))) &= ~(1 << (uint8_t)(5)); } while(0);
|
||||
do { ((*(volatile uint8_t *)(0x7A))) |= (1 << (uint8_t)(6)); } while(0);
|
||||
|
||||
while(((((uint8_t)((*(volatile uint8_t *)(0x7A)))) >> (uint8_t)(6)) & 0x1));
|
||||
|
||||
return (*(volatile uint16_t *)(0x78));
|
||||
}
|
||||
# 14 "main.c" 2
|
||||
|
||||
|
||||
|
||||
|
||||
# 1 "lib/debounce.h" 1
|
||||
|
||||
# 51 "lib/debounce.h"
|
||||
typedef struct {
|
||||
PORT_P reg;
|
||||
uint8_t bit;
|
||||
uint8_t count;
|
||||
} debo_slot_t;
|
||||
|
||||
|
||||
debo_slot_t debo_slots[6];
|
||||
uint8_t debo_next_slot = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
uint8_t debo_register(PORT_P reg, uint8_t bit, _Bool invert)
|
||||
{
|
||||
debo_slots[debo_next_slot] = (debo_slot_t){
|
||||
.reg = reg,
|
||||
.bit = bit | ((invert & 1) << 7) | (((*(reg) >> (uint8_t)(bit)) & 0x1) << 6),
|
||||
.count = 0,
|
||||
};
|
||||
|
||||
return debo_next_slot++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void debo_tick()
|
||||
{
|
||||
for (uint8_t i = 0; i < debo_next_slot; i++) {
|
||||
|
||||
_Bool value = ((*(debo_slots[i].reg) >> (uint8_t)(debo_slots[i].bit & 0x7)) & 0x1);
|
||||
|
||||
if (value != ((((uint8_t)(debo_slots[i].bit)) >> (uint8_t)(6)) & 0x1)) {
|
||||
|
||||
|
||||
if (debo_slots[i].count < 1) {
|
||||
debo_slots[i].count++;
|
||||
} else {
|
||||
|
||||
do { (debo_slots[i].bit) = ((debo_slots[i].bit) & ~(1 << (uint8_t)(6))) | (((uint8_t)(value) & 0x1) << (uint8_t)(6)); } while(0);
|
||||
debo_slots[i].count = 0;
|
||||
}
|
||||
} else {
|
||||
debo_slots[i].count = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
# 19 "main.c" 2
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const xrgb_t COLORS[] = {
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0xB14835)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0xB14835)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0xB14835)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0x4C1661)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0x4C1661)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0x4C1661)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0xA3268E)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0xA3268E)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0xA3268E)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0x009ADA)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0x009ADA)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0x009ADA)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0x007D8F)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0x007D8F)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0x007D8F)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0x002E5A)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0x002E5A)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0x002E5A)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0x56BCC1)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0x56BCC1)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0x56BCC1)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0x01654D)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0x01654D)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0x01654D)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0xF5864F)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0xF5864F)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0xF5864F)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0xED1B24)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0xED1B24)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0xED1B24)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0xFDAF17)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0xFDAF17)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0xFDAF17)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0xF58F83)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0xF58F83)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0xF58F83)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0xED008C)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0xED008C)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0xED008C)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0xFEF200)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0xFEF200)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0xFEF200)) >> 0) & 0xFF))) },
|
||||
{ .r = ((uint8_t)(((((rgb24_t) (0x6D9346)) >> 16) & 0xFF))), .g = ((uint8_t)(((((rgb24_t) (0x6D9346)) >> 8) & 0xFF))), .b = ((uint8_t)(((((rgb24_t) (0x6D9346)) >> 0) & 0xFF))) },
|
||||
};
|
||||
# 73 "main.c"
|
||||
void render();
|
||||
void update();
|
||||
|
||||
|
||||
void __attribute__((naked, used, section(".init8"))) init()
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
do { ((*(volatile uint8_t *)((0x04) + 0x20))) |= (1 << (uint8_t)((2))); } while(0);
|
||||
|
||||
|
||||
do { do { ((*(volatile uint8_t *)((0x0A) + 0x20))) &= ~(1 << (uint8_t)((2))); } while(0); do { ((*(volatile uint8_t *)((0x0B) + 0x20))) |= (1 << (uint8_t)((2))); } while(0); } while(0);
|
||||
do { do { ((*(volatile uint8_t *)((0x0A) + 0x20))) &= ~(1 << (uint8_t)((3))); } while(0); do { ((*(volatile uint8_t *)((0x0B) + 0x20))) |= (1 << (uint8_t)((3))); } while(0); } while(0);
|
||||
do { do { ((*(volatile uint8_t *)((0x0A) + 0x20))) &= ~(1 << (uint8_t)((4))); } while(0); do { ((*(volatile uint8_t *)((0x0B) + 0x20))) |= (1 << (uint8_t)((4))); } while(0); } while(0);
|
||||
do { do { ((*(volatile uint8_t *)((0x0A) + 0x20))) &= ~(1 << (uint8_t)((5))); } while(0); do { ((*(volatile uint8_t *)((0x0B) + 0x20))) |= (1 << (uint8_t)((5))); } while(0); } while(0);
|
||||
do { do { ((*(volatile uint8_t *)((0x0A) + 0x20))) &= ~(1 << (uint8_t)((6))); } while(0); do { ((*(volatile uint8_t *)((0x0B) + 0x20))) |= (1 << (uint8_t)((6))); } while(0); } while(0);
|
||||
do { do { ((*(volatile uint8_t *)((0x0A) + 0x20))) &= ~(1 << (uint8_t)((7))); } while(0); do { ((*(volatile uint8_t *)((0x0B) + 0x20))) |= (1 << (uint8_t)((7))); } while(0); } while(0);
|
||||
|
||||
|
||||
debo_register(&(*(volatile uint8_t *)((0x09) + 0x20)), 2, 1);
|
||||
debo_register(&(*(volatile uint8_t *)((0x09) + 0x20)), 3, 1);
|
||||
debo_register(&(*(volatile uint8_t *)((0x09) + 0x20)), 4, 1);
|
||||
debo_register(&(*(volatile uint8_t *)((0x09) + 0x20)), 5, 1);
|
||||
debo_register(&(*(volatile uint8_t *)((0x09) + 0x20)), 6, 1);
|
||||
debo_register(&(*(volatile uint8_t *)((0x09) + 0x20)), 7, 1);
|
||||
|
||||
|
||||
(*(volatile uint8_t *)((0x24) + 0x20)) = (1 << (1));
|
||||
(*(volatile uint8_t *)((0x25) + 0x20)) = (1 << (2)) | (1 << (0));
|
||||
(*(volatile uint8_t *)((0x27) + 0x20)) = 156;
|
||||
do { ((*(volatile uint8_t *)(0x6E))) |= (1 << (uint8_t)(1)); } while(0);
|
||||
|
||||
|
||||
__asm__ __volatile__ ("sei" ::: "memory");
|
||||
}
|
||||
|
||||
|
||||
|
||||
void __vector_14 (void) __attribute__ ((signal,used, externally_visible)) ; void __vector_14 (void)
|
||||
{
|
||||
|
||||
update();
|
||||
render();
|
||||
}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
while(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
typedef enum {
|
||||
SECRET,
|
||||
REVEALED,
|
||||
GONE
|
||||
} tilestate_t;
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint8_t color;
|
||||
tilestate_t state;
|
||||
} tile_t;
|
||||
|
||||
|
||||
|
||||
tile_t board[(6 * 5)];
|
||||
|
||||
|
||||
uint8_t cursor = 0;
|
||||
|
||||
volatile uint8_t noise = 0;
|
||||
uint16_t xxx = 0;
|
||||
|
||||
void update()
|
||||
{
|
||||
if(xxx++ >= 100) {
|
||||
noise = adc_read_byte(0);
|
||||
xxx = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
xrgb_t screen[(6 * 5)];
|
||||
|
||||
|
||||
void render()
|
||||
{
|
||||
const rgb24_t BLUE = 0x005397;
|
||||
const rgb24_t RED = 0xFF0000;
|
||||
const rgb24_t YELLOW = 0xFFFF00;
|
||||
const rgb24_t BLACK = 0x000000;
|
||||
|
||||
|
||||
|
||||
rgb24_t c;
|
||||
for (uint8_t i = 0; i < (6 * 5); i++) {
|
||||
|
||||
c = YELLOW;
|
||||
|
||||
if (i < 8) {
|
||||
c = ((((uint8_t)(noise)) >> (uint8_t)(i)) & 0x1) ? RED : BLUE;
|
||||
}
|
||||
|
||||
do { do { for (volatile int8_t __wsba_i = 7; __wsba_i >= 0; --__wsba_i) { if ((((((rgb24_t) (c)) >> 8) & 0xFF)) & (1 << __wsba_i)) { __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) |= (1 << (uint8_t)((2))); } while(0); (((( (700) / (1000000000L / (signed long) 16000000UL) ) + (-2)) > 0) ? __builtin_avr_delay_cycles(( (700) / (1000000000L / (signed long) 16000000UL) ) + (-2)) : __builtin_avr_delay_cycles(0)); __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) &= ~(1 << (uint8_t)((2))); } while(0); (((( (150) / (1000000000L / (signed long) 16000000UL) ) + (-10)) > 0) ? __builtin_avr_delay_cycles(( (150) / (1000000000L / (signed long) 16000000UL) ) + (-10)) : __builtin_avr_delay_cycles(0)); } else { __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) |= (1 << (uint8_t)((2))); } while(0); (((( (150) / (1000000000L / (signed long) 16000000UL) ) + (-2)) > 0) ? __builtin_avr_delay_cycles(( (150) / (1000000000L / (signed long) 16000000UL) ) + (-2)) : __builtin_avr_delay_cycles(0)); __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) &= ~(1 << (uint8_t)((2))); } while(0); (((( (700) / (1000000000L / (signed long) 16000000UL) ) + (-10)) > 0) ? __builtin_avr_delay_cycles(( (700) / (1000000000L / (signed long) 16000000UL) ) + (-10)) : __builtin_avr_delay_cycles(0)); } } } while(0); do { for (volatile int8_t __wsba_i = 7; __wsba_i >= 0; --__wsba_i) { if ((((((rgb24_t) (c)) >> 16) & 0xFF)) & (1 << __wsba_i)) { __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) |= (1 << (uint8_t)((2))); } while(0); (((( (700) / (1000000000L / (signed long) 16000000UL) ) + (-2)) > 0) ? __builtin_avr_delay_cycles(( (700) / (1000000000L / (signed long) 16000000UL) ) + (-2)) : __builtin_avr_delay_cycles(0)); __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) &= ~(1 << (uint8_t)((2))); } while(0); (((( (150) / (1000000000L / (signed long) 16000000UL) ) + (-10)) > 0) ? __builtin_avr_delay_cycles(( (150) / (1000000000L / (signed long) 16000000UL) ) + (-10)) : __builtin_avr_delay_cycles(0)); } else { __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) |= (1 << (uint8_t)((2))); } while(0); (((( (150) / (1000000000L / (signed long) 16000000UL) ) + (-2)) > 0) ? __builtin_avr_delay_cycles(( (150) / (1000000000L / (signed long) 16000000UL) ) + (-2)) : __builtin_avr_delay_cycles(0)); __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) &= ~(1 << (uint8_t)((2))); } while(0); (((( (700) / (1000000000L / (signed long) 16000000UL) ) + (-10)) > 0) ? __builtin_avr_delay_cycles(( (700) / (1000000000L / (signed long) 16000000UL) ) + (-10)) : __builtin_avr_delay_cycles(0)); } } } while(0); do { for (volatile int8_t __wsba_i = 7; __wsba_i >= 0; --__wsba_i) { if ((((((rgb24_t) (c)) >> 0) & 0xFF)) & (1 << __wsba_i)) { __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) |= (1 << (uint8_t)((2))); } while(0); (((( (700) / (1000000000L / (signed long) 16000000UL) ) + (-2)) > 0) ? __builtin_avr_delay_cycles(( (700) / (1000000000L / (signed long) 16000000UL) ) + (-2)) : __builtin_avr_delay_cycles(0)); __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) &= ~(1 << (uint8_t)((2))); } while(0); (((( (150) / (1000000000L / (signed long) 16000000UL) ) + (-10)) > 0) ? __builtin_avr_delay_cycles(( (150) / (1000000000L / (signed long) 16000000UL) ) + (-10)) : __builtin_avr_delay_cycles(0)); } else { __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) |= (1 << (uint8_t)((2))); } while(0); (((( (150) / (1000000000L / (signed long) 16000000UL) ) + (-2)) > 0) ? __builtin_avr_delay_cycles(( (150) / (1000000000L / (signed long) 16000000UL) ) + (-2)) : __builtin_avr_delay_cycles(0)); __asm__ __volatile__("":::"memory"); do { ((*(volatile uint8_t *)((0x05) + 0x20))) &= ~(1 << (uint8_t)((2))); } while(0); (((( (700) / (1000000000L / (signed long) 16000000UL) ) + (-10)) > 0) ? __builtin_avr_delay_cycles(( (700) / (1000000000L / (signed long) 16000000UL) ) + (-10)) : __builtin_avr_delay_cycles(0)); } } } while(0); } while(0);
|
||||
}
|
||||
|
||||
do { __asm__ __volatile__("":::"memory"); (((( (7000) / (1000000000L / (signed long) 16000000UL) ) + (0)) > 0) ? __builtin_avr_delay_cycles(( (7000) / (1000000000L / (signed long) 16000000UL) ) + (0)) : __builtin_avr_delay_cycles(0)); } while(0);
|
||||
}
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
/home/ondra/devel/avr/avr-projects/devel/lib
|
||||
@@ -18,8 +18,10 @@
|
||||
#include "lib/debounce.h"
|
||||
|
||||
|
||||
#define BOARD_WIDTH 6
|
||||
#define BOARD_HEIGHT 5
|
||||
// #define BOARD_WIDTH 6
|
||||
// #define BOARD_HEIGHT 5
|
||||
#define BOARD_WIDTH 4
|
||||
#define BOARD_HEIGHT 4
|
||||
|
||||
// number of cards
|
||||
#define CARD_COUNT (BOARD_WIDTH * BOARD_HEIGHT)
|
||||
@@ -30,20 +32,20 @@
|
||||
// color palette
|
||||
const xrgb_t COLORS[] = {
|
||||
rgb24_xrgbc(0x00FF99), // emerald
|
||||
rgb24_xrgbc(0x00CCCC), // cyan
|
||||
rgb24_xrgbc(0x0000CC), // full blue
|
||||
rgb24_xrgbc(0xFF6D55), // salmon?
|
||||
rgb24_xrgbc(0x4400FF), // blue-purple
|
||||
rgb24_xrgbc(0xFF00FF), // magenta
|
||||
rgb24_xrgbc(0xD70053), // wine
|
||||
rgb24_xrgbc(0xFF0000), // red
|
||||
rgb24_xrgbc(0xCD2B64), // brick
|
||||
rgb24_xrgbc(0xED1B24), // firetruck red
|
||||
rgb24_xrgbc(0xFF6D00), // tangerine yellow/orange
|
||||
rgb24_xrgbc(0xFF2B00), // orange
|
||||
rgb24_xrgbc(0xFFFF00), // yellow
|
||||
rgb24_xrgbc(0x5FBA00), // yellow-green
|
||||
rgb24_xrgbc(0x0BEE00), // green
|
||||
rgb24_xrgbc(0xFF6D00), // tangerine yellow/orange
|
||||
rgb24_xrgbc(0x00CCCC), // cyan
|
||||
rgb24_xrgbc(0x4400FF), // blue-purple
|
||||
rgb24_xrgbc(0x5FBA00), // yellow-green
|
||||
rgb24_xrgbc(0xD70053), // wine
|
||||
rgb24_xrgbc(0xCD2B64), // brick
|
||||
rgb24_xrgbc(0xED1B24), // firetruck red
|
||||
rgb24_xrgbc(0xFF6D55), // salmon?
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user