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