Forum: Mikrocontroller und Digitale Elektronik ATMega16 ADC 3 Kanäle


von Steven S. (virus)


Lesenswert?

Hallo,

ich habe folgende Probleme mit meinem Programm. Ich will 3 Analoge 
Kanäle messen das funktioniert für die ersten beinden Kanäle auch super. 
Jedoch der 3. Kanal bereitet mir sorgen. Egal was ich für eine Spannung 
anliegen habe, gibt er mir am Ausgang 5V. Bin an dem Punkt mit meinem 
Latain am ende und hoffe auf Hilfe.

Hier das Programm:
1
#include <avr/io.h>
2
3
void ADC_int(void)
4
{
5
    ADMUX=(1<<REFS0);            // externe Referenzspannung
6
    ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); // Teiler auf 64 setzen
7
    
8
    //Dummykonvertierung
9
    ADCSRA|=(1<<ADSC);            // starte Konvertierung
10
    while (ADCSRA & (1<<ADSC) );  // auf Abschluss der Konvertierung warten
11
    ADCSRA &= ~(1<<ADEN);          // ADC wieder deaktivieren
12
}
13
14
uint16_t ADC_Read (uint8_t channel)
15
{
16
  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F);
17
  ADCSRA|=(1<<ADSC);              // starte Konvertierung
18
  while (ADCSRA & (1<<ADSC) );    // auf Abschluss der Konvertierung warten
19
  ADCSRA &= ~(1<<ADEN);           // ADC wieder deaktivieren
20
    
21
  return ADCW;                   // Rückgabe Ergebnis 10bit (1023)
22
  
23
}
24
  
25
int main()
26
{
27
  uint16_t Helligkeit1;
28
  uint16_t Helligkeit2;
29
  uint16_t Helligkeit3;
30
  uint16_t i;
31
32
  DDRC = 255;    //PortC = Ausgang
33
34
  
35
  ADC_int();
36
37
  while(1)
38
39
  {
40
    Helligkeit1 = ADC_Read(0);  //Messwert 0-1023 bei U=0-5V
41
    Helligkeit2 = ADC_Read(1);  //Messwert 0-1023 bei U=0-5V
42
    Helligkeit3 = ADC_Read(2);  //Messwert 0-1023 bei U=0-5V
43
    
44
    
45
    
46
    
47
    for( i = 0; i < 1022; i++)
48
    {
49
      
50
      if (Helligkeit1>1)
51
      {
52
        Helligkeit1 = Helligkeit1 - 1;
53
        PORTC |= (1<<PC0);
54
      } 
55
      else
56
      {
57
        PORTC &= ~(1<<PC0);
58
      }
59
60
61
      if (Helligkeit2>1)
62
      {
63
        Helligkeit2 = Helligkeit2 - 1;
64
        PORTC |= (1<<PC1);
65
      } 
66
      else
67
      {
68
        PORTC &= ~(1<<PC1);
69
      }
70
71
      if (Helligkeit3>1)
72
      {
73
        Helligkeit3 = Helligkeit3 - 1;
74
        PORTC |= (1<<PC2);
75
      }
76
      else
77
      {
78
        PORTC &= ~(1<<PC2);
79
      }
80
81
      
82
    }
83
    
84
  }
85
  
86
  return 0;
87
}

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

>Bin an dem Punkt mit meinem Latain am ende und hoffe auf Hilfe.

JTAG abgeschaltet?

MfG Spess

von Steven S. (virus)


Angehängte Dateien:

Lesenswert?

spess53 schrieb:
> Hi
>
>>Bin an dem Punkt mit meinem Latain am ende und hoffe auf Hilfe.
>
> JTAG abgeschaltet?
>
> MfG Spess

ach ja Hand vor den Kopf hau

ich hatte es im Verdacht und war der Meinung, dass das nur Port D 
betrifft...


Funktioniert 1a. Besten Dank.

: Bearbeitet durch User
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.