AVR-Atmel Tiny13- ADC Problem

OP #915129
Lesenswert?

moin,

ich hab hier einen ATMEL Tiny13, an welchen zwei LEDs angeschlossen 
sind. LED #1 an PB0, LED #2 an PB3. PB4 ist als Eingang geschaltet. Wenn 
die Spannung an PB4 ansteigt(von 0V auf etwa 50mV) soll eine der beiden 
LEDs ausgehen.
Nun Habe ich folgendes kleines Testprogramm geschrieben:
1
#include <avr/io.h> 
2
#include <stdint.h> 
3
#include <util/delay.h>
4

5
void init(void);
6
void alarm(void);
7

8

9
int main(void) 
10
{ 
11
   DDRB=0xff; 
12
   DDRB&=~(1<<4);
13
   init();  
14
   while(1)
15
   {
16

17
   if(ADCH<250)
18
     PORTB&=~(1<<0);
19
   else
20
   PORTB|=(1<<0);
21
   }   
22

23
   return 0; 
24
} 
25

26
void init(void)
27
{
28
    ADCSRA&=~(1<<ADPS2);
29
  ADCSRA&=~(1<<ADPS1);
30
  ADCSRA&=~(1<<ADPS0);
31
  ADMUX&=~(1<<REFS0);
32
  ADCSRB&=~(1<<ADTS2);
33
    ADCSRB&=~(1<<ADTS1);
34
    ADCSRB&=~(1<<ADTS0);
35
  ADMUX|=(1<<0);
36
  ADMUX&=~(1<<1);
37
    ADMUX|=(1<<ADATE);
38
  ADMUX|=(1<<ADLAR);
39
  ADCSRA|=(1<<ADEN);
40
  ADCSRA|=(1<<ADSC);
41
}

Problem: LED #1 leuchtet und geht auch wie beabsichtigt aus wenn der 
Stromkreis geschlossen wird, jedoch erst wenn die vollen 2,4V 
anliegen(also alles was die Batterie hergibt). Wie kriege ich das 
Programm dazu bereits bei einer Spannung von etwa 50mV zu reagieren? Hab 
übrigens in der "if(ADCH<250)"-Abfrage alle möglichen Werte von 1-250 
durchprobiert - keine Veränderung :(


Danke

Dominik
OP #915202
Lesenswert?

so, hab nun   ADMUX&=~(1<<0); in ADMUX|=(1<<0); und ADMUX|=(1<<0) in 
ADMUX&=~(1<<1); geändert.

Die Schaltung verhält sich jetzt genau wie vorher, mit dem Unterschied, 
dass wenn ich den ADHC register auf werte unter 200 prüfe die LED 
immer an ist, und wenn ich ADHC auf Werte über 200 prüfe die LED 
immer aus ist.
Gast #915208
Lesenswert?

Ich hab das mal etwas leserlicher umgeschrieben.
Aber:
 - mit welcher Spannung läuft der Attiny (bzw. wie hoch ist die 
Referenzspannung für den ADC)?
 - mit welchem Takt läuft der Attiny (der ADC-takt muss auf 50-200kHz 
eingestellt werden -- auch mehr, falls du nur die 8-Bit brauchst)
 - bist du sicher, dass die LEDs mit den 2,4V überhaupt leuchten? ;)
 - wenn du bei 50mV (0,05V) schalten willst, wäre das aber bei ADCH = 
0,05/5 * 256 == 2 (wenn der tiny mit 5V läuft)

hth. Jörg
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren