first init

This commit is contained in:
2024-02-27 13:12:18 +01:00
parent 1a5d031279
commit 1c64b41a4d
16 changed files with 1911 additions and 0 deletions

52
avr_adc.c Normal file
View File

@@ -0,0 +1,52 @@
//setup adc for an attiny85
//
#include<avr/io.h>
#include"avr_adc.h"
#define _BS(bit) (1<<bit)
#define _BC(bit) ~(1<<bit)
#define STARTADC ADCSRA |= _BS(ADSC)
//1.setup_prescaler
/* this function initialises the ADC
ADC Prescaler Notes:
--------------------
ADC Prescaler needs to be set so that the ADC input frequency is between 50 - 200kHz.
For more information, see table 17.5 "ADC Prescaler Selections" in
chapter 17.13.2 "ADCSRA ADC Control and Status Register A"
(pages 140 and 141 on the complete ATtiny25/45/85 datasheet, Rev. 2586MAVR07/10)
Valid prescaler values for various clock speeds
Clock Available prescaler values
---------------------------------------
1 MHz 8 (125kHz), 16 (62.5kHz)
4 MHz 32 (125kHz), 64 (62.5kHz)
8 MHz 64 (125kHz), 128 (62.5kHz)
16 MHz 128 (125kHz)
Below example set prescaler to 128 for mcu running at 8MHz
(check the datasheet for the proper bit values to set the prescaler)
*/
void setupADC(void)
{
ADMUX = //_BC(REFS0) | //Set_Vref
//_BC(REFS1) | //Set_Vref
//_BC(MUX3) | //
//_BC(MUX2) | //
_BS(MUX1) | //
_BS(MUX0) | //PORT Select PB3
_BS(ADLAR) ; //left shift conversion results(used in 8bit mode)
ADCSRA = _BS(ADEN) | //Enable ADC
//_BC(ADATE) | //Disable AutoTrigger aka Freerunning mode
_BS(ADPS2) | //Select Prescaler clk/32
//_BC(ADPS1) |
_BS(ADPS0);
}