#include <avr/io.h>
#include "lcd-routines.h"
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
extern uint16_t readAD0(uint8_t channel); // Aufruf
AD-WANDLUNGSFUNKTION
extern uint16_t readAD1(uint8_t channel); // Aufruf
AD-WANDLUNGSFUNKTION
extern uint16_t readAD2(uint8_t channel); // Aufruf
AD-WANDLUNGSFUNKTION
extern uint16_t readAD3(uint8_t channel); // Aufruf
AD-WANDLUNGSFUNKTION
extern uint16_t readAD4(uint8_t channel); // Aufruf
AD-WANDLUNGSFUNKTION
extern uint16_t readAD5(uint8_t channel); // Aufruf
AD-WANDLUNGSFUNKTION
extern uint16_t readAD6(uint8_t channel); // Aufruf
AD-WANDLUNGSFUNKTION
extern uint16_t readAD7(uint8_t channel); // Aufruf
AD-WANDLUNGSFUNKTION
int main(void)
{
// Variablendeklaration
float wert_wandler0 ,wert_wandler1 ,wert_wandler2,
wert_wandler3,wert_wandler4 ,wert_wandler5
,wert_wandler6,
wert_wandler7;
uint8_t data = 0;
// Arrays für LCD-Azeigewerte
char Anzeige1[22];
char Anzeige2[22];
char Anzeige3[22];
char Anzeige4[22];
// LCD-initialisieren
lcd_init();
//Eingänge definieren
DDRA = 0x00;
DDRB = 0xFF;
DDRC = 0x03;
DDRD = 0xFF;
// Taktgeber inititialiseren
TCCR2 = (1 << WGM20) | (1<< COM21) | (1<< CS20) | (0<<CS21) |
(1<<CS22); // f = 16MHz/ 1024 *256
OCR2 = 127;
while(1)
{
// Werte von AD-Wandler lesen und umrechnen
wert_wandler0 = readAD0(0);
wert_wandler0 = wert_wandler0*5/1024;
wert_wandler1 = readAD1(0);
wert_wandler1 = wert_wandler1*5/1024;
wert_wandler2 = readAD2(0);
wert_wandler2 = wert_wandler2*5/1024;
wert_wandler3 = readAD3(0);
wert_wandler3 = wert_wandler3*5/1024;
wert_wandler4 = readAD4(0);
wert_wandler4 = wert_wandler4*5/1024;
wert_wandler5 = readAD5(0);
wert_wandler5 = wert_wandler5*5/1024;
wert_wandler6 = readAD6(0);
wert_wandler6 = wert_wandler6*5/1024;
wert_wandler7 = readAD7(0);
wert_wandler7 = wert_wandler7*5/1024;
}
/*
* AD_WANDLUNG
*
* Created: 25.02.2013 10:20:16
*
*/
#include <avr/io.h>
#include <util/delay.h>
#include<avr/interrupt.h>
uint16_t readAD0 (uint8_t channel)
{
uint8_t i;
uint16_t result0 = 0;
// den ADC aktivieren und Teilungsfaktor auf 8 stellen
ADCSRA = (1<<ADEN)| 0x03;
// Kanal des Multiplexers wählen Kanal1
// interne Referenz: ACC
ADMUX = (0<<MUX3)|(1<<MUX2)|(0<<MUX1)|(1<<MUX0)|(1<<REFS0);
// den ADC initialisieren und ein sog. Dummyreadout machen
ADCSRA |= (1<<ADSC);
while(ADCSRA & ( 1<<ADSC));
//Jetzt die analoge Spannung an Kanal auslesen
for (i=0;i<5;i++)
{
//eine Wandlung
ADCSRA |= (1<<ADSC);
// Ergebnis holen
while(ADCSRA & (1<<ADSC));
result0 += ADCW;
}
// ADC deaktivieren
ADCSRA &=(1<<ADEN);
result0=result0 /5;
return result0;
}