Forum: Compiler & IDEs Problem mit AD Wandler + LEDs


von venart v. (venart)


Lesenswert?

Hi!

Kann mir vielleicht jemand helfen, ich versuche ein Programm zum Laufen 
zu bringen, aber es klappt irgendwie nicht.

Ich habe ein Musterprogramm mit AD Wandler gefunden, dieses Programm ist 
wie analoges Voltmeter, wenn am Port C am Pin 0 Spanung fließt, dann 
sollten 3 LEDs am Port B an PINs 0, 1 und 2 leucht. Zuerst grüne LED und 
wenn man die Spanung mit Poti regelt, dann sollten weitere LEDs 
aufleuchten.

Ich benutze das MyAVRboard MKII. Alles richtig angeschlossen. Das ganze 
läuft mit internem Quarz, ich habe nichts an Fuses usw. geändert.

Und hier das Programm:
1
#define   F_CPU   1000000
2
#include <avr/io.h>
3
4
int main()
5
{
6
  int sample,i,value;  // Variablen definitionn
7
  DDRB=0xFF;   // PORTB als Ausgabeport
8
  ADMUX=0x00;  // ADC Ref auf Avcc, PC0 gewählt, normale Formatierung
9
  ADCSRA=0x80; // ADC eingeschaltet, kein Prescale  
10
  // Endlosschleife zur kontinuierlichen Auswertung der Eingangsspannung (am ADC)
11
  while(1)
12
  {
13
    sample=0;  // setzt den Samplewert auf 0
14
    // Schleife zum Sammeln von 32 Meßwerten
15
    for(i=0;i<32;i++)  
16
    {
17
      ADCSRA=0b01000000;    // single conversion mode ein
18
      while(ADCSRA & (1<<ADSC));  //warten bis konvertierung abgeschlosen
19
      sample+=ADCW;  // aufsummierung der samplewerte
20
    }
21
    value=sample/32;  // Aritmethisches Mittel der Samplewerte 
22
    
23
       
24
             
25
    // Auswertung der Meßdaten
26
    if (value<300)  // erste Grenze 
27
      PORTB=0x04;  // schaltet grüne LED ein
28
    else if (value>=300 && value<600)  // zweite Grenze 
29
      PORTB=0x02;  // schaltet gelbe LED ein
30
    else
31
    {  
32
      PORTB=0x01;  // schaltet rote LED ein
33
34
35
    }
36
  }
37
}

Bei mir leuchtet immer die erste grüne LED, egal ob ich jetzt Poti drehe 
oder nicht, ich kann am PC0 Spanung messen, also die kommt an. Es wäre 
sehr nett, wenn mir jemand erklährt, was mache ich falsch bzw. wie 
funktioniert es nicht.

Gruss, venart

von Stefan E. (sternst)


Lesenswert?

1
      ADCSRA=0b01000000;
Wenn du beim Versuch, eine Wandlung zu starten, gleichzeitig den ADC 
abschaltest, klappt das natürlich nicht.

von Falk B. (falk)


Lesenswert?


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.