Gast
#1411540
Hallo zusammen,
bin ein wenig rat los. Ich möchte über den ADC X Anzahl von Daten
erfassen und danach erst mal auf auf ein paar led's ausgeben (und später
über die uart ausgeben).
Meine Probleme in der zweiten schleife zählt er die variable j um zwei
hoch und der Simulator lässt mich nicht in die warte (schleife
Unterprog.) und wenn ich mir im Watch die variablen anzeigenlassen will
macht der das für die erste schleife aber nicht bei j.
Grüße Manu und danke für eure Hilfe
------------------------------------------------------------------------
--
//Version001
#include <avr/io.h>
#define TAKT 16000000UL
int ADWandler(void);
int warte(void);
void Ausgabe(int x);
int main(void){
DDRC=0xFF; //def. Out PortC
DDRD=0xFF; //def. Out PortD
int Daten=500; //Anzal messdaten erfassung
while(1){ //Arbeitsschleife
int y[500]; //arry vorbereitet fuer Messdaten 3200 Messungen
for(int i=0;i<=Daten;i++){ //schleife1 zur erfassung der messdaten
PORTD=y[i]; //Test Leuten an
y[i]=ADWandler(); //Uprog. Daten messen und an y(arry index)
uebergeben
warte();} //Uprog. wartescheife 200*200*4
for(int j=0;j<=Daten;j++){//schleife2 zur ausgabe der gemessenen daten
PORTC=(y[j]); //y(arry index) auslessen und auf protC ausgeben
PORTD=0; //Test leuchten aus
warte();} //Uprog. wartescheife 200*200*4
}
return 0;
}
int ADWandler(void){ //ADC Uprog
unsigned int x=0,ret=0; //var. deklariern
ADMUX = (1<<REFS0)|(1<<ADLAR); //ADMUX Konfigurieren
//Interne Ref. 5.0V und Links
schiebend
ADCSRA= (1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
//ADCSRA Konfigurieren
//Voteriler 128;Starten; Einschalten
// PORTD=255; //Test leuchten an
loop_until_bit_is_clear(ADCSRA,ADSC);//warten bis messung zuende
x=ADCL; //Low Reg = x
x=ADCH; //High Reg = x
ret=x; //ret = x
return(ret); //ret zurückgeben
}
int warte(void){ //Warteschleife Uprog
for(int i=0;i<=200;i++){ //Schleife1 200*
for(int j=0;j<=200;j++){ //Schleife2 200*
for(int k=0;k<=4;k++);}} //Schleife3 4
return 0;
}