generated from TDD-Templates/cmake_cpputest_template_avr
69 lines
1.5 KiB
C
69 lines
1.5 KiB
C
/**
|
|
* @brief Interface to the AVR ADC hardware.
|
|
* @details This file is...
|
|
* @author Jake G
|
|
* @date 2024
|
|
* @copyright None
|
|
* @file ADC.h
|
|
*/
|
|
|
|
#ifndef ADC_H
|
|
#define ADC_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
|
|
/**
|
|
* @brief Initializes the AVR hardware in order to accept
|
|
* Input for ADC usage.
|
|
* @param adc_chan The channel of the pin 0-7 you are initializing.
|
|
*
|
|
* This function only makes use of PORTA by default. It sets the direction
|
|
* register to input, disables the pull-up resistor and also diables interrupts
|
|
* alongside the input buffer(digital).
|
|
*
|
|
* This in turn helps reduce noise when using the ADC.
|
|
*
|
|
*/
|
|
void ADC_Init(uint8_t adc_chan);
|
|
|
|
/**
|
|
* @brief Enables the ADC
|
|
*/
|
|
void ADC_Enable(void);
|
|
|
|
/**
|
|
* @brief Disables the ADC
|
|
*/
|
|
void ADC_Disable();
|
|
|
|
/**
|
|
* @brief Reads ADC value into variable
|
|
*
|
|
* @param adc_chan The bin number of the ADC pin being read.
|
|
*
|
|
* This function depends on the ADC already being initialized and enabled
|
|
* before being called.
|
|
*/
|
|
extern uint16_t (*ADC_ReadValue)(uint8_t adc_chan);
|
|
|
|
/**
|
|
* @brief Sets up the ADC
|
|
*
|
|
* This function sets up the ADC to take and accumulate 32 samples. It also
|
|
* sets the inital delay to 32 ADC clock cycles, and sets the VREF to VDD or
|
|
* VCC.
|
|
*
|
|
* This function should only need to be called once.
|
|
*/
|
|
void ADC_Setup(void);
|
|
|
|
/**
|
|
* @brief Sets the pin used in the MUX for ADC0.
|
|
*
|
|
* @param adc_chan The number of the pin in Port A.
|
|
*/
|
|
void ADC_SetPin(uint8_t adc_chan);
|
|
|
|
#endif // ADC_H
|