Hallo,
ich setzte mich seit mehreren Tagen mit dem ADC des ATTiny261a
auseinander und sehe den Fehler den ich mache nicht. Das Datenblatt und
die Tutorials/Foren konnten mir nicht weiter helfen, deshalb hoffe ich
jetzt auf eure Hilfe.
Mein Ziel ist es die Werte des ADCH Registers auf den 7 LEDs am PORTB
anzuzeigen. Dabei sollen sich LEDs in Abhängigkeit des Trimmers ein bzw.
ausschalten.
Ich habe Lösungen aus verschiedenen Tutorials probiert und bin zu keinem
Ergebniss gekommen. Es Leuchten entweder alle LEDs, keine oder die
LED0-LED2 dauerhaft (auch wenn ich am Trimmer drehe oder sogar die
Verbindung zum Pin des ADC2 trenne).
Mein letzter Versuch besteht aus den Informationen die mir das
Datenblatt liefert.
Den Quellcode habe ich nach meinem Verständnis kommentiert, ich würde
mich freuen wenn ihr mich korrigiert wenn etwas nicht stimmt.
Sind da Fehler im Quellcode oder habe ich bereits in der Schaltung einen
Fehler?
Danke schon mal.
1 | ++++++++++
|
2 | + + +----- GND
|
3 | LED0 --+PB0 PA2+-- TRIMMER(1kOhm)
|
4 | + + +----- VCC
|
5 | LED1 --+PB1 +
|
6 | +
|
7 | LED2 --+PB2
|
8 | +
|
9 | LED3 --+PB3
|
10 | +
|
11 | LED4 --+PB4
|
12 | +
|
13 | LED5 --+PB5
|
14 | +
|
15 | LED6 --+PB6
|
16 | +
|
17 | +++++++++
|
1 |
|
2 |
|
3 | #include <avr/io.h>
|
4 |
|
5 | int main(void)
|
6 | {
|
7 | // ADC einschalten
|
8 | ADCSRA |= (1<<ADEN);
|
9 | // Ergebnis linksbündig ADCH ADCL
|
10 | ADMUX |= (1<<ADLAR);
|
11 | // PORTA2 zum Messen verwenden
|
12 | ADMUX |= (1<<1);
|
13 | // Frequenz durch 8 Teilen für 125KHz
|
14 | ADCSRA |= (1<<ADPS0);
|
15 | ADCSRA |= (1<<ADPS1);
|
16 |
|
17 | while(1){
|
18 | // Muss vor jeder Messung auf high gesetzt werden beim Single Conversion Mode
|
19 | ADCSRA |= (1<<ADSC);
|
20 |
|
21 | // Warten bis ADIF = 0 (Messung abgeschlossen)
|
22 | while((ADCSRA &ADIF)==0){}
|
23 |
|
24 | //ADCH wird gelesen (Zugriff auf das ADCH und ADCL Register wird wieder freigeschaltet)
|
25 | PORTB = ADCH;
|
26 |
|
27 | //Neuen Messvorgang starten
|
28 | ADCSRA &= ~(1<<ADSC);
|
29 | ADCSRA &= ~(1<<ADIF);
|
30 | }
|
31 | }
|