// // hello.ADXL343.c // // ADXL343 accelerometer hello-world // 9600 baud FTDI interface // // Neil Gershenfeld 11/8/15 // (c) Massachusetts Institute of Technology 2015 // // This work may be reproduced, modified, distributed, // performed, and displayed for any purpose. Copyright is // retained and must be preserved. The work is provided // as is; no warranty is provided, and users accept all // liability. // #include #define output(directions,pin) (directions |= pin) // set port direction for output #define input(directions,pin) (directions &= (~pin)) // set port direction for input #define set(port,pin) (port |= pin) // set port pin #define clear(port,pin) (port &= (~pin)) // clear port pin #define pin_test(pins,pin) (pins & pin) // test for port pin #define bit_test(byte,bit) (byte & (1 << bit)) // test for bit set #define bit_delay_time 102 // bit delay for 9600 with overhead #define bit_delay() _delay_us(bit_delay_time) // RS232 bit delay #define half_bit_delay() _delay_us(bit_delay_time/2) // RS232 half bit delay #define serial_port PORTB #define serial_direction DDRB #define serial_pin_out (1 << PB2) #define light_pin (1 << PB1) #define I2C_slave_address 0x53 // ADXL345 alt address #define I2C_delay() _delay_us(5) #define SCL_pin (1 << PB3) #define SCL_pins PINB #define SCL_port PORTB #define SCL_direction DDRB #define SDA_pin (1 << PB4) #define SDA_pins PINB #define SDA_port PORTB #define SDA_direction DDRB void delay(void) { for( volatile int i=0; i<100;++i) { for( volatile int j=0; j<256;++j) { }; }; return; } int main(void) { // // set clock divider to /1 // CLKPR = (1 << CLKPCE); CLKPR = (0 << CLKPS3) | (0 << CLKPS2) | (0 << CLKPS1) | (0 << CLKPS0); // // initialize output pins // // set(serial_port, serial_pin_out); // output(serial_direction, serial_pin_out); // // main loop DDRB = 0xFF; while (1) { /* Define pull-ups and set outputs high */ /* Define directions for port pins */ PORTB = 0xFF; delay(); PORTB = 0x00; delay(); } }