2linkehaende
14.01.2011, 13:41
ich möchte mit meine programm eine single conversion starten und das ergebnis auf 16 led´s ausgeben
doch irgendwie funktioniert mein programm nicht ](*,)
könnt ihr mir bitte helfen!
//Hauptprogramm
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>
void ADC_Init(void); //Prototyp des Unterprogramms
int main (void)
{
//Definitionen der Ports
DDRC = 0xff; //Port A als Ausgang definieren
PORTC = 0x00; //Port A wird auf low gelegt
DDRB = 0xff; //Port B als Ausgang definieren
PORTB = 0x00; //Port B wird auf low gelegt
DDRD = 0x00; //Port D als Eingang definieren
PORTD = 0xff; //Pull-Up aktivieren
uint16_t xl,xh;
while(1)
{
MCUCR|=(1<<ISC01)|(1<<ISC00); //Steigende Flanke löst Interrupt aus
sei(); //Interruptes global erlauben
xl = ADCL;
xh= ADCH;
PORTC = xl;
PORTB = xh;
}
}
ISR(INT0_vect) //INT0 ist der externe Interrupt0
{
ADC_Init(); //Aufruf des Unterprogramms ADC_Init
}
//--------------------------------------------------------------------------------------------
//Erstellung eines Unterprogramms zur AD Wandlung
void ADC_Init(void)
{
ADMUX = (1<<REFS1) | (1<<REFS0); //Verwendung der internen Referenzspannungsquelle
ADCSRA |= (1<<ADEN); // ADC aktivieren
ADCSRA |= (1<<ADSC); // Start einer ADC-Wandlung im single mode Betrieb
}
doch irgendwie funktioniert mein programm nicht ](*,)
könnt ihr mir bitte helfen!
//Hauptprogramm
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdint.h>
void ADC_Init(void); //Prototyp des Unterprogramms
int main (void)
{
//Definitionen der Ports
DDRC = 0xff; //Port A als Ausgang definieren
PORTC = 0x00; //Port A wird auf low gelegt
DDRB = 0xff; //Port B als Ausgang definieren
PORTB = 0x00; //Port B wird auf low gelegt
DDRD = 0x00; //Port D als Eingang definieren
PORTD = 0xff; //Pull-Up aktivieren
uint16_t xl,xh;
while(1)
{
MCUCR|=(1<<ISC01)|(1<<ISC00); //Steigende Flanke löst Interrupt aus
sei(); //Interruptes global erlauben
xl = ADCL;
xh= ADCH;
PORTC = xl;
PORTB = xh;
}
}
ISR(INT0_vect) //INT0 ist der externe Interrupt0
{
ADC_Init(); //Aufruf des Unterprogramms ADC_Init
}
//--------------------------------------------------------------------------------------------
//Erstellung eines Unterprogramms zur AD Wandlung
void ADC_Init(void)
{
ADMUX = (1<<REFS1) | (1<<REFS0); //Verwendung der internen Referenzspannungsquelle
ADCSRA |= (1<<ADEN); // ADC aktivieren
ADCSRA |= (1<<ADSC); // Start einer ADC-Wandlung im single mode Betrieb
}