Forum: Mikrocontroller und Digitale Elektronik Probleme mit dem ADC beim Mega8


von MEGA8 (Gast)


Lesenswert?

1
#include <avr/io.h>
2
#define F_CPU 8000000UL
3
#include <util/delay.h>
4
5
unsigned int adc_value1;
6
unsigned int adc_value2;
7
unsigned int adc_value3;
8
9
int main(void)
10
{
11
  //DDRC=0b00000000
12
  DDRB=0b11111111;
13
  DDRD=0b11111111;
14
  
15
  ADCSRA = (1<<ADEN)| (1<<ADSC) | (1<<ADFR)|(1<<ADPS2) |(1<<ADPS1) | (1<<ADPS0); //ADC_Enable, _StartConversion, _FreeRun, Prescaler: 64
16
  
17
  
18
  while(1)
19
20
  {
21
    PORTD=0b00000000;
22
    
23
    /*ADMUX=0b00000000;
24
    ADCSRA |= (1<<ADSC);
25
    //while (ADCSRA & (1<<ADSC));
26
    adc_value1 = ADCW;
27
    //adc_value1 = 50;
28
    
29
    _delay_ms(10);
30
    
31
    PORTD=0b11111111;
32
    
33
    ADMUX=0b00000001;
34
    ADCSRA |= (1<<ADSC);
35
    //while (ADCSRA & (1<<ADSC));
36
    adc_value2 = ADCW;
37
    //adc_value2 = 120;*/
38
    
39
    
40
    ADMUX=0b00000010;
41
    ADCSRA |= (1<<ADSC);
42
    while (ADCSRA & (1<<ADSC));
43
    adc_value3 = ADCW;
44
    //adc_value3 = 80;
45
    
46
    
47
    if (adc_value3 > 500) PORTB |= _BV(PB0); else  PORTB &= ~_BV(PB0); // gelb
48
    
49
    //if (adc_value1 > 300) PORTB=0b00000010; //else PORTB=0b00000000; // gruen
50
    
51
    //if (adc_value1 > 500) PORTB=0b00000100; //else PORTB=0b00000000; // rot
52
    //_delay_ms(100);
53
    
54
  }
55
  return 0;
56
57
}





Funktioniert nicht, wo fehler? Danke.

von MEGA8 (Gast)


Lesenswert?

Keiner?

von Stefan K. (stefan64)


Lesenswert?

Funktioniert doch!

von MEGA8 (Gast)


Lesenswert?

Naja, bei mir hier aber nicht, die gelbe led leuchtet dauerhaft, obwohl 
adc1-adc3 unterschiedliche werte bekommen.

von Antenne (Gast)


Lesenswert?

Wie wäre es, wenn du als TO mal dein Problem beschreiben würdest und 
nicht einfach irgend einen Code kopierst. Dann auch noch nach nur 2min 
unverschämt fragen ob keiner etwas weis...

Der Code gehört übrigens in den Anhang und mit Kommentaren versehen.

Nein so werde ich dir den Fehler nicht zeigen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

MEGA8 schrieb:
> Funktioniert nicht, wo fehler?
Was funktioniert nicht?
Was erwartest du, und was passiert stattdessen?

Du gibst auch nicht dein Auto in der Werkstatt ab und sagst:
Funktioniert nicht! Wo Fehler?

von MEGA8 (Gast)


Lesenswert?

Antenne schrieb:
> Nein so werde ich dir den Fehler nicht zeigen.

Dann gibt's von mir auch kein danke.

von MEGA8 (Gast)


Lesenswert?

Lothar M. schrieb:
> Du gibst auch nicht dein Auto in der Werkstatt ab und sagst:
> Funktioniert nicht! Wo Fehler?

Die Werkstatt muss wissen wo der Fehler ist. Das ist der Sinn einer 
Werkstatt. Sonst musst du laufen.

von Michael U. (amiga)


Lesenswert?

Hallo,

MEGA8 schrieb:
> Antenne schrieb:
>> Nein so werde ich dir den Fehler nicht zeigen.
>
> Dann gibt's von mir auch kein danke.

kann es sein, daß Du auf Hilfe hoffst und etwas darauf angewiesen bist?
Wir müssen nicht antworten und sind auch nicht zwingend auf Dein Danke 
angewiesen...

Gruß aus Berlin
Michael

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

MEGA8 schrieb:
> Die Werkstatt muss wissen wo der Fehler ist.
> Das ist der Sinn einer Werkstatt.
Korrekt, wenn dir die Kosten egal sind.
Und zudem: ist das hier (d)eine Werkstatt?

Seis drum: welche Beschaltung hat dein Controller? Was hängt an Aref?

von Paul B. (paul_baumann)


Lesenswert?

MEGA8 schrob:

>>ADMUX=0b00000010;

Ich verstehe Nichts von C, vermute aber den Fehler in der obigen Zeile, 
weil das ADC-Kanal 2 auswählt, Du aber 3 auswerten willst.

MfG Paul

von MEGA8 (Gast)


Lesenswert?

Paul B. schrieb:
> Ich verstehe Nichts von C

Gut, ich auch nich.

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.