spi_console: use print/scanf instead of ncurses, hack 64 bit.
[avr_work.git] / common / common.h
blobaa7a0b99b3cda26d6a3f289d34489da9bce6e6a7
1 #ifndef _COMMON_H_
2 #define _COMMON_H_
4 #include <stdint.h>
5 #include <stdio.h>
7 #include "clock.h"
9 #define DDR(x) _DDR(x)
10 #define _DDR(x) DDR##x
11 #define PORT(x) _PORT(x)
12 #define _PORT(x) PORT##x
13 #define PIN(x) _PIN(x)
14 #define _PIN(x) PIN##x
16 #define CT(x) (sizeof(x)/sizeof(*x))
18 inline uint8_t mod( uint8_t i1, uint8_t i2) {// i1%i2
19 while( i1 >= i2 ) {
20 i1 = (uint8_t) (i1 - i2);
22 return i1;
25 inline void memset_16(uint16_t * dest, uint16_t val, uint8_t len) {
26 do {
27 len--;
28 dest[len] = val;
29 } while (len!=0);
32 inline void print_bin(uint8_t inp, FILE * stream) {
33 for(int8_t j=7; j>=0; --j) {
34 fputc(((inp&(1<<j))>>j)+'0',stream);
39 /* wip data structures
41 typedef union uint24 {
42 struct {
43 uint16_t msb16;
44 uint8_t lsb8;
46 struct {
47 uint8_t msb8;
48 uint16_t lsb16;
50 struct {
51 uint8_t a,b,c;
53 uint8_t n[3];
54 } uint24_t;
57 typedef struct motor_st {
58 volatile uint8_t * pwm_reg;
59 volatile uint8_t * pwm_port;
60 //volatile uint8_t * pwm_ddr; //pwm_port+1
61 //volatile uint8_t * pwm_pin; //pwm_port+2
62 uint8_t pwm_index;
64 uint8_t in1_index;
65 volatile uint8_t * in1_port;
67 uint8_t in2_index;
68 volatile uint8_t * in2_port;
69 } motor_t;
71 #endif