Hallo alle miteinander. Ich benutze eine LED, also Sensor für eine
kleine Lichtschranke. Das Licht stammt von einer LED gleicher Bauart.
Dieses Programm wertet das ganze aus.
Es soll einfach eine weitere LED an PB0 eingeschaltet werden, wenn die
Lichtschranke unterbrochen ist. Auf den Schwellenwert komm ich
folgendermaßen. Am ADC Pin liegt eine Spannung von ca 0.25V an. Daraus
ergibt sich bei einem 8bit ADC mit einer Referenz von 1.1V ca ein Wert
von 50. Wird die Lichtschranke unterbrochen, messe ich 0.05V. 25 Müsste
als Werte also locker ausreichen.
Problem ist: Das ganze funktioniert nicht. Ich weiß nun nicht ob ich
beim Aufbau oder im Programm einen Fehler gemacht habe.
Vielen Dank für eure Hilfe.
ps: Controller ist ein Attiny13A
1 | .include "tn13Adef.inc"
|
2 | ldi r16, (1<<REFS0) | (1<<MUX0) | (1<<ADLAR)
|
3 | out ADMUX, r16
|
4 | ldi r16, (1<<ADPS2) | (1<<ADPS1) | (1<<ADEN)
|
5 | out ADCSRA, r16
|
6 | ldi r16, (1<<ADSC)
|
7 | ldi r18, 0b00000001
|
8 | ldi r19, 0
|
9 | out DDRB, r18
|
10 |
|
11 |
|
12 | loop0:
|
13 | out PORTB r19
|
14 | out ADCSRA, r16
|
15 |
|
16 | loop1:
|
17 | SBIC ADCSRA, ADSC
|
18 | rjmp loop1
|
19 | in r17, ADCH
|
20 | cpi r17, 25 <---- Schwellenwert
|
21 | brlo led
|
22 | rjmp loop0
|
23 |
|
24 | led:
|
25 | out PORTB, r18
|
26 | rjmp loop0
|