Forum: Compiler & IDEs Vergleichen von Analogen Werten


von Adam (Gast)


Angehängte Dateien:

Lesenswert?

Ich möchte mit diesem Programm Analoge Werte die ich zu Beginn einlese 
vergleichen.
Ich erhalte aber immer die Fehlermeldung das die Variablen das erstemal 
verwendet werden.
1
/*
2
 * Heliotrophes_Solarmodul.c
3
 *
4
 * Created: 17.06.2013 13:45:39
5
 *  Author: adam
6
 */ 
7
8
9
#define F_CPU 1000000UL
10
11
#include <avr/io.h>
12
#include <util/delay.h>
13
14
  
15
    
16
{
17
  
18
  // PORTA 0
19
  
20
  ADMUX= (1 << REFS1) | (1 << ADLAR);     // ADW Einstellungen + Portauswahl
21
  ADCSRA= (1 << ADEN)| (1 << ADSC)| (1 << ADIE)| (1 << ADPS2) | (1 << ADPS1)| (1 << ADPS0) ; // ADW Einstellungen
22
  
23
  
24
  while(!(ADCSRA & (1 << ADIF))) {} // Abspeichern des Digital Wert in ch0
25
  int ch0=ADCH;
26
  ADCSRA = (1 << ADIF);
27
  
28
  // PORTA 1
29
  
30
  ADMUX= (1 << REFS1) | (1 << ADLAR)|(1 <<MUX0); // ADW Einstellungen + Portauswahl
31
  ADCSRA= (1 << ADEN)| (1 << ADSC)| (1 << ADPS2) | (1 << ADPS1)| (1 << ADPS0) ;
32
33
  while(!(ADCSRA & (1 << ADIF))) {}  // Abspeichern des Digital Wert in ch1
34
  int ch1=ADCH;
35
  ADCSRA = (1 << ADIF);
36
  
37
  //PORTA 2
38
  
39
  ADMUX= (1 << REFS1) | (1 << ADLAR)|(1 <<MUX1); // ADW Einstellungen + Portauswahl
40
  ADCSRA= (1 << ADEN)| (1 << ADSC)| (1 << ADPS2) | (1 << ADPS1)| (1 << ADPS0) ;
41
42
  while(!(ADCSRA & (1 << ADIF))) {}  // Abspeichern des Digital Wert in ch2
43
  int ch2=ADCH;
44
  ADCSRA = (1 << ADIF);
45
  
46
  //PORTA 3
47
  
48
  ADMUX= (1 << REFS1) | (1 << ADLAR)|(1 <<MUX0)|(1 <<MUX1); // ADW Einstellungen + Portauswahl
49
  ADCSRA= (1 << ADEN)| (1 << ADSC)| (1 << ADPS2) | (1 << ADPS1)| (1 << ADPS0) ;
50
51
  while(!(ADCSRA & (1 << ADIF))) {}  // Abspeichern des Digital Wert in ch3
52
  int ch3=ADCH;
53
  ADCSRA = (1 << ADIF);
54
  
55
  //PORTA 4
56
  
57
  ADMUX= (1 << REFS1) | (1 << ADLAR)|(1 <<MUX2); // ADW Einstellungen + Portauswahl
58
  ADCSRA= (1 << ADEN)| (1 << ADSC)| (1 << ADPS2) | (1 << ADPS1)| (1 << ADPS0) ;
59
60
  while(!(ADCSRA & (1 << ADIF))) {}  // Abspeichern des Digital Wert in ch4
61
  int ch4=ADCH;
62
  ADCSRA = (1 << ADIF);
63
  
64
  //PORTA 5
65
  
66
  ADMUX= (1 << REFS1) | (1 << ADLAR)|(1 <<MUX0)|(1 <<MUX2); // ADW Einstellungen + Portauswahl
67
  ADCSRA= (1 << ADEN)| (1 << ADSC)| (1 << ADPS2) | (1 << ADPS1)| (1 << ADPS0) ;
68
69
  while(!(ADCSRA & (1 << ADIF))) {}  // Abspeichern des Digital Wert in ch5
70
  int ch5=ADCH;
71
  ADCSRA = (1 << ADIF);
72
  
73
  //PORTA 6
74
  
75
  ADMUX= (1 << REFS1) | (1 << ADLAR)|(1 <<MUX2)|(1 <<MUX1); // ADW Einstellungen + Portauswahl
76
  ADCSRA= (1 << ADEN)| (1 << ADSC)| (1 << ADPS2) | (1 << ADPS1)| (1 << ADPS0) ;
77
78
  while(!(ADCSRA & (1 << ADIF))) {}  // Abspeichern des Digital Wert in ch6
79
  int ch6=ADCH;
80
  ADCSRA = (1 << ADIF);
81
  
82
  //PORTA 7
83
  
84
  
85
  ADMUX= (1 << REFS1) | (1 << ADLAR)|(1 <<MUX0)|(1 <<MUX1)|(1 <<MUX2); // ADW Einstellungen + Portauswahl
86
  ADCSRA= (1 << ADEN)| (1 << ADSC)| (1 << ADPS2) | (1 << ADPS1)| (1 << ADPS0) ;
87
  
88
  while(!(ADCSRA & (1 << ADIF))) {}  // Abspeichern des Digital Wert in ch7
89
  int ch7=ADCH;
90
  ADCSRA = (1 << ADIF);
91
92
  
93
}
94
95
int main (void)
96
  
97
{
98
99
  {
100
    if((ch0>=ch1) && (ch0>=ch2) && (ch0>=ch3) && (ch0>=ch4) && (ch0>=ch5) && (ch0>=ch6) && (ch0>=ch7))
101
    {
102
      DDRB = (1<<PB1);
103
      
104
      
105
      
106
      
107
      PORTB |= (1<<PB1);
108
      _delay_us(1456);      // Winkel * 0,55 + 1200
109
      PORTB &= ~(1<<PB1);
110
      
111
      _delay_us (18544);      //  20000 - (Winkel * 0,55 + 1200)
112
      
113
    }
114
    
115
    else if ((ch1>=ch0) && (ch1>=ch2) && (ch1>=ch3) && (ch1>=ch4) && (ch1>=ch5) && (ch1>=ch6) && (ch1>=ch7))
116
    {
117
      DDRB = (1<<PB1);
118
      
119
      
120
      
121
      
122
      PORTB |= (1<<PB1);
123
      _delay_us(1428);      // Winkel * 0,55 + 1200
124
      PORTB &= ~(1<<PB1);
125
      
126
      _delay_us (18572 );      //  20000 - (Winkel * 0,55 + 1200)
127
      
128
    }
129
    
130
    else if ((ch2>=ch1) && (ch2>=ch0) && (ch2>=ch3) && (ch2>=ch4) && (ch2>=ch5) && (ch2>=ch6) && (ch2>=ch7))
131
    {
132
      DDRB = (1<<PB1);
133
      
134
      
135
      
136
      
137
      PORTB |= (1<<PB1);
138
      _delay_us(1400);      // Winkel * 0,55 + 1200
139
      PORTB &= ~(1<<PB1);
140
      
141
      _delay_us (18600 );      //  20000 - (Winkel * 0,55 + 1200)
142
      
143
      
144
    }
145
    
146
    else if ((ch3>=ch1) && (ch3>=ch2) && (ch3>=ch0) && (ch3>=ch4) && (ch3>=ch5) && (ch3>=ch6) && (ch3>=ch7))
147
    {
148
      DDRB = (1<<PB1);
149
      
150
      
151
      
152
      
153
      PORTB |= (1<<PB1);
154
      _delay_us(1372);      // Winkel * 0,55 + 1200
155
      PORTB &= ~(1<<PB1);
156
      
157
      _delay_us (18628 );      //  20000 - (Winkel * 0,55 + 1200)
158
    }
159
    
160
    
161
    else if ((ch4>=ch1) && (ch4>=ch2) && (ch4>=ch3) && (ch4>=ch0) && (ch4>=ch5) && (ch4>=ch6) && (ch4>=ch7))
162
    {  DDRB = (1<<PB1);
163
      
164
      
165
      PORTB |= (1<<PB1);
166
      _delay_us(1344);      // Winkel * 0,55 + 1200
167
      PORTB &= ~(1<<PB1);
168
      
169
      _delay_us (18656 );      //  20000 - (Winkel * 0,55 + 1200)
170
      
171
    }
172
    
173
    else if ((ch5>=ch1) && (ch5>=ch2) && (ch5>=ch3) && (ch5>=ch4) && (ch5>=ch0) && (ch5>=ch6) && (ch5>=ch7))
174
    {   DDRB = (1<<PB1);
175
      
176
      
177
      
178
      
179
      PORTB |= (1<<PB1);
180
      _delay_us(1316);      // Winkel * 0,55 + 1200
181
      PORTB &= ~(1<<PB1);
182
      
183
      _delay_us (18684 );      //  20000 - (Winkel * 0,55 + 1200)
184
      
185
    }
186
    else if ((ch6>=ch1) && (ch6>=ch2) && (ch6>=ch3) && (ch6>=ch4) && (ch6>=ch5) && (ch6>=ch0) && (ch6>=ch7))
187
    {  DDRB = (1<<PB1);
188
      
189
      
190
      
191
      
192
      PORTB |= (1<<PB1);
193
      _delay_us(1288);      // Winkel * 0,55 + 1200
194
      PORTB &= ~(1<<PB1);
195
      
196
      _delay_us (18712 );      //  20000 - (Winkel * 0,55 + 1200)
197
      
198
    }
199
    else if ((ch7>=ch1) && (ch7>=ch2) && (ch7>=ch3) && (ch7>=ch4) && (ch7>=ch5) && (ch7>=ch6) && (ch7>=ch0))
200
    {  DDRB = (1<<PB1);
201
      
202
      
203
      
204
      PORTB |= (1<<PB1);
205
      _delay_us(1260);      // Winkel * 0,55 + 1200
206
      PORTB &= ~(1<<PB1);
207
      
208
      _delay_us (18740 );      //  20000 - (Winkel * 0,55 + 1200)
209
    }
210
    _delay_ms(200);
211
  }
212
  
213
  return(1)
214
  
215
}

von Norbert (Gast)


Lesenswert?


von Peter D. (peda)


Lesenswert?

Fang doch erstmal mit ner Blink-LED an.

von Walter S. (avatar)


Lesenswert?

so wird das nix,
Programmieren heißt nicht irgendwelche Textfetzen zusammen zu kopieren,
ohne Grundlagen geht's nicht

von Adam (Gast)


Lesenswert?

Vielen Dank für die Hilfe -.-

von F. F. (foldi)


Lesenswert?

Peter Dannegger schrieb:
> Fang doch erstmal mit ner Blink-LED an.

Der weiß noch gar nicht wie viel Spaß das machen kann eine Led zum 
blinken zu bringen.
Freue mich immer wieder wie ein Kind, wenn ich was neues lerne und das 
dann klappt und wenn ich dann die Beispiele anpasse, vielleicht sogar 
für eine Idee gebrauchen kann und wenn das dann noch klappt, das ist 
doch sooooo toll.

von SkyperHH (Gast)


Lesenswert?

Adam schrieb:
> Vielen Dank für die Hilfe -.-

Sorry.... aber was erwartest Du (von uns / dem Forum)???

Vor dem Main-Block steht ein haufen Sourcecode, ohne das man erkennen 
kann wieso er dort!!! Wenn das Funktionen sein sollen, dann kann ich 
keinen Rumpf dafür entdecken... Dazu kommt, die lesbarkeit ist 
GRAUSAM!!!

Besorg dir ein gutes C-Buch und dazu schaust Du Dir das GCC-Tutorial 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial ... und nachdem 
Du einen blinkenden LED umgesetzt hast... kannst Du Dich mal mit dem ADC 
auseinandersetzen.

von F. F. (foldi)


Lesenswert?

Franzis AVR-Mikrocontroller in C programmieren

von ui (Gast)


Lesenswert?

Der erste Fehler heliotrophes -> heliotropes

Beantworte mal folgende Frage.
Wann soll eigentlich der Code vor main ausgeführt werden?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.