hallo zusammen,
ich habe ein ADC Programm auf eurer webseite gefunden, ich möchte es
erweiteren, dass die LED bei jeder Umwandlung leuchtet.
ich habe meine poti gedreht auf eine neuen spannungswert aber leider
sehe ich auf dem simulator nichts d.h wurde kein bit eingesetzt nach dem
umwandlung und mein LED leutet nicht.
das ist Program was ich gefunden habe:
meine controller tiny 24
1 | #include <avr/io.h>
|
2 | #include <stdlib.h>
|
3 |
|
4 | uint16_t ReadChannel(uint8_t mux)
|
5 |
|
6 | {
|
7 | uint8_t i;
|
8 | uint16_t result = 0; //Initialisieren wichtig, da lokale Variablen
|
9 | //nicht automatisch initialisiert werden und
|
10 | //zufällige Werte haben. Sonst kann Quatsch rauskommen
|
11 | ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS0); // Frequenzvorteiler
|
12 |
|
13 | // setzen auf 8 (1) und ADC aktivieren (1)
|
14 |
|
15 | ADMUX = mux; // Kanal waehlen
|
16 | ADMUX |= (1<<REFS1); // interne Referenzspannung nutzen
|
17 |
|
18 |
|
19 | /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man
|
20 | liest
|
21 | also einen Wert und verwirft diesen, um den ADC "warmlaufen zu
|
22 | lassen" */
|
23 | ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
|
24 | while ( ADCSRA & (1<<ADSC) ); // auf Abschluss der Konvertierung warten
|
25 |
|
26 | /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden
|
27 | Wandlungen */
|
28 | for(i=0;i<4;i++)
|
29 | {
|
30 | ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion"
|
31 | while ( ADCSRA & (1<<ADSC) ); // auf Abschluss der Konvertierung warten
|
32 | result += ADCW; // Wandlungsergebnisse aufaddieren
|
33 | }
|
34 | ADCSRA &= ~(1<<ADEN); // ADC deaktivieren (2)
|
35 |
|
36 | result /= 4; // Summe durch vier teilen = arithm.Mittelwert
|
37 |
|
38 | return result;
|
39 | }
|
40 | int main(void)
|
41 | {
|
42 | DDRB &=~ (1<<PB1);
|
43 | //PORTB = 0xFF;
|
44 | //PORTB = 0x00;
|
45 |
|
46 | uint16_t analogwert;
|
47 |
|
48 |
|
49 | while(1)
|
50 | {
|
51 | analogwert = ReadChannel(1);
|
52 |
|
53 | if (analogwert == 0) ( warum ist hier ==0??)
|
54 | PORTB = (1<<PB1); LED
|
55 | else
|
56 | PORTB &= ~(1<<PB1);
|
57 |
|
58 | }
|
59 |
|
60 |
|
61 | }
|
kann jemand mir helfen oder ein tipps geben. danke