Bin wieder mal ein "Blind-Bummie" ;)
Für eine Spannungsauswertung, habe ich mich mal mit den ADC Funktionen eines ATMega8 befasst und habe anhand der ATmega8 Beschreibung mir ein Gcc Prog "zusammengebaut" mit opt. Auswertung auf dem STK500.
Was ich aber nicht recht begriffen habe, ist der ADC-Wert in Bezug auf die am ADC0 Eingang anliegende Spannung zu konkretisieren. ich habe zwar zwei Zustände der beiden LED.
Vieleicht habe ich mich auch ganz hinten angestellt und nur einen "Schmitt-Trigger" gebastelt ;) , mir ging es aber darum einen Wert zu erhalten, der mir Aufschluss auf den gemessenen Wert gibt.
Hier ist mal der Code:
Code:
/* ========================================================================== */
/* */
/* adc_atm8_1.c */
/* (c) 2013 Gerhard Hinze */
/* */
/* Description */
/* ADC Test mit ATmega8 auf STK500 */
/* ========================================================================== */
#ifndef F_CPU
#define F_CPU 3686400UL
#endif
#include <avr/io.h>
#include <util/delay.h>
//#include <avr/interrupt.h>
void adc_init();
int main (void)
{
adc_init();
while(1)
{
ADCSRA |= (1<<ADSC); // starte conversion
while(ADCSRA & (1<<ADSC)); //Warte bis fertig
if (ADC <= 128) // Welcher Wert entsprechend dem Eingangswert , Messspannungsauswertung
{
PORTD |= (1<<PD4); // ADC-Wert nicht überschritten LED 4
PORTD &= ~(1<<PD5);
}
else
{
PORTD |= (1<<PD5); // ADC-Wert überschritten LED 5
PORTD &= ~(1<<PD4);
}
}
}
// Init ADC
void adc_init()
{
DDRD = 0x30; //DDRD Pin 4,5 Ausgang
ADCSRA |= (1 << ADEN); // Enable ADC
ADMUX |= (1 << REFS0); // Set ADC reference to AVCC
ADCSRA |= (1 << ADPS2) | ( 1 << ADPS0); // Prescaler 32 = ~115kHz ADC sample rate
ADMUX |= (1 << ADLAR); // Left shift ADC result
}
Vielleicht kann mir ja jemand helfen, der Source ist wie gesagt aus dem ATmega8-PDF und Recherchen im Web und meinen Büchern entstanden.
Ich danke mal schon für jede Hilfe.
Gruss Gerhard
PS. der Messwert soll später mal auf einem LCD oder LED Balken angezeigt werden