ADC/ADC.c
2026-02-25 12:26:50 +01:00

58 lines
1.3 KiB
C

/*
Name: Schieder Fabian
Datum: 11.02.2026
Datei: ADC.c
Hardware: MDDS
Funktionsbeschreibung:
ADC konfigurieren und in eine Variable ADC_Wert übergeben
*/
#include "stm32f10x.h"
#include "armv40_frl.h"
#include "stdio.h"
#include "math.h"
int ADC_Wert = 0;
float ADC_Spannung = 0;
char buffer[30];
int L = 0;
int main(void)
{
uart3_init(9600);
//RCC -> APB2ENR |= (1 << 9); // Clock für ADC1 aktivieren
RCC -> APB2ENR |= RCC_APB2ENR_ADC1EN; // alternative Variante
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // Clock für PA0
GPIOA->CRL &= 0xFFFFFFF0; // PA0 Analog Input
ADC1 -> SMPR2 = 0x00000005; // 55,5 cycles
ADC1 -> SQR1 = 0x00000000; // 1 conversion
ADC1 -> SQR2 = 0x00000000; // -//-
ADC1 -> SQR3 = 0x00000000; // -//-
ADC1 -> CR2 = 0x000E0001; // ADC wake up
while(1)
{
ADC1 -> CR2 |= 0x00500000; // Start conversion
while(!(ADC1 -> SR & 0x2));
ADC_Wert = ADC1 -> DR;
ADC_Spannung = (3.3 / 4095) * ADC_Wert;
L = (int)(26.337 * powf(ADC_Spannung, - 1.204));
wait_ms(1);
sprintf(&buffer[0], "ADCWert.val=%04d\xff\xff\xff", ADC_Wert);
uart3_put_string(&buffer[0]);
sprintf(&buffer[0], "ADCSpannung.txt=\"%02d cm\"\xff\xff\xff", L);
uart3_put_string(&buffer[0]);
}
return 0;
}