From 241536a6e9ef36c32e83627096bb7265ced51153 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Sat, 23 Mar 2024 21:27:59 +0100 Subject: [PATCH] Includes in main --- main.c | 69 +++------------------------------------------------------- 1 file changed, 3 insertions(+), 66 deletions(-) diff --git a/main.c b/main.c index 07501f4..1808f57 100644 --- a/main.c +++ b/main.c @@ -12,73 +12,10 @@ #define LED_PIN PB5 // Define the pin connected to the LED #define TEMP_SENSOR_ADDR 0x48 #define TEMP_REG_ADDR 0x00 -#define BAUD 9600 // 9600 seems to be the highest the ATmega328P can handle in this config -void initI2C() { - // Set the prescaler to 1 - TWSR &= ~(1 << TWPS0); - TWSR &= ~(1 << TWPS1); - // Set the bit rate to 100kHz - TWBR = ((F_CPU / 100000) - 16) / 2; -} - -void I2C_start() { - // Send the start condition - TWCR = (1 << TWINT) | (1 << TWSTA) | (1 << TWEN); - // Wait for the start condition to be sent - while (!(TWCR & (1 << TWINT))) - ; -} - -void I2C_stop() { - // Send the stop condition - TWCR = (1 << TWINT) | (1 << TWSTO) | (1 << TWEN); - // Wait for the stop condition to be sent - while (TWCR & (1 << TWSTO)); -} - -void I2C_write(uint8_t data) { - // Load the data into the data register - TWDR = data; - // Start transmission of data - TWCR = (1 << TWINT) | (1 << TWEN); - // Wait for the data to be sent - while (!(TWCR & (1 << TWINT))); -} - -uint8_t I2C_read(uint8_t ack) { - // Enable TWI, generate ACK (if ack = 1) and clear TWI interrupt flag - TWCR = (1 << TWINT) | (1 << TWEN) | (ack << TWEA); - // Wait until TWI finish its current job (read operation) - while (!(TWCR & (1 << TWINT))); - // Return received data - return TWDR; -} - -void initUART() { - // Set baud rate - UBRR0H = (uint8_t)(F_CPU / (BAUD * 16UL) - 1) >> 8; - UBRR0L = (uint8_t)(F_CPU / (BAUD * 16UL) - 1); - // Enable receiver and transmitter - UCSR0B |= (1 << RXEN0) | (1 << TXEN0); - // Set frame format: 8 data, 1 stop bit - UCSR0C |= (1 << UCSZ01) | (1 << UCSZ00); -} - -void UART_transmit(uint8_t data) { - // Wait for empty transmit buffer - while (!(UCSR0A & (1 << UDRE0))); - // Put data into buffer, sends the data - UDR0 = data; -} - -void UART_println(const char *str) { - // Transmit each character until NULL character is encountered - while (*str) UART_transmit(*str++); - // Transmit carriage return and line feed characters - UART_transmit('\r'); - UART_transmit('\n'); -} +#include "MPU6050.h" +#include "i2c.h" +#include "uart.h" float readTemperature() { uint16_t temperature;