ADMUX für ADC0 und ADC1 bei ATTiny45

Gast #3087267
Lesenswert?

Hallo,

ich will am ATTiny45 an den ADC0 sowie ADC1 messen. Bei der 
Initialisierung für ADCO müsste ich doch folgendes im Code angeben
1
ADMUX =
2
            (1 << ADLAR) |     
3
            (0 << REFS1) |     
4
            (0 << REFS0) |     
5
            (0 << MUX3)  |     // use ADC0 for input (PB5) bit 3
6
            (0 << MUX2)  |     // use ADC0 for input (PB5) bit 2
7
            (0 << MUX1)  |     // use ADC0 for input (PB5) bit 1
8
            (0 << MUX0);       // use ADC0 for input (PB5) bit 0
9

10
  ADCSRA = 
11
            (1 << ADEN)  |
12
            (1 << ADPS2) | 
13
            (1 << ADPS1) |
14
            (1 << ADPS0);     // Division Factor 128 ADC Prescaler Bits

beim ADC1
1
ADMUX =
2
            (1 << ADLAR) |     
3
            (0 << REFS1) |     
4
            (0 << REFS0) |     
5
            (0 << MUX3)  |     // use ADC1 for input (PB2) bit 3
6
            (0 << MUX2)  |     // use ADC1 for input (PB2) bit 2
7
            (0 << MUX1)  |     // use ADC1 for input (PB2) bit 1
8
            (1 << MUX0);       // use ADC1 for input (PB2) bit 0
9

10
  ADCSRA = 
11
            (1 << ADEN)  |
12
            (1 << ADPS2) | 
13
            (1 << ADPS1) |
14
            (1 << ADPS0);     // Division Factor 128 ADC Prescaler Bits

Nun zur eigentlichen Frage. Muss ich die wechselnde Initialisierung nach 
jeder Messung am jeweiligen Kanal widerholen?

Über Tipps und Infos wäre ich sehr dankbar.

Gruß Markus
#3087283
Lesenswert?

mgolbs schrieb:

> Nun zur eigentlichen Frage. Muss ich die wechselnde Initialisierung nach
> jeder Messung am jeweiligen Kanal widerholen?

Die komplette INitialisierung nicht, aber die MUX Bits musst du 
umschalten (und zwar ohne, dass du was anders im Register veränderst)

Du hast nun mal nur einen ADC. Und mit den MUX Bits legst du fest, auf 
welchen Pin der geschaltet werden soll.
Du MUX Bits kannst du allerdings zwischendurch wechseln, wie es dir 
passt. Wenn der ADC das nächste mal gestartet wird, dann sampelt er den 
Pin, der mittels MUX Bits als Eingang festgelegt wurde.
Gast #3087310
Lesenswert?

Hallo,

danke für die Informationen.

Würde es schaden, wenn ich jedes mal die komplette Initialisierung nach 
der erfolgten Messung machen würde?

Das würde doch auch reichen?
1
ADMUX |= (0 << MUX0); //use ADC0 on PB5

oder
1
ADMUX |= (1 << MUX0); //use ADC1 on PB2

Den Reset muss ich per "Fuse" abschalten?

Was gehe ich für ein Risiko ein, den Reset disabled zu haben?

Zurück bekomme ich diesen doch wieder? 12V an PB5...?

Gruß und Dank Markus
#3087370
Lesenswert?

mgolbs schrieb:
> Hallo,
>
> danke für die Informationen.
>
> Würde es schaden, wenn ich jedes mal die komplette Initialisierung nach
> der erfolgten Messung machen würde?

Nein.
Wenn du willst kannst du auch das machen.

>
> Das würde doch auch reichen?
>
>
1
> ADMUX |= (0 << MUX0); //use ADC0 on PB5
2
>

wie löscht man denn ein Bit?

Bitmanipulation

> Den Reset muss ich per "Fuse" abschalten?

Lass den Reset in Ruhe!

> Was gehe ich für ein Risiko ein, den Reset disabled zu haben?

Dass du den µc nur noch per HV-Programmierung programmieren kannst (oder 
per Bootloader). ISP ist dann nicht mehr.
Gast #3087421
Lesenswert?

Hallo,

danke für die Informationen. Löschen oder auf 0 seten, was ist da der 
Unterschied?

Geht so was?
1
ADMUX &= ~(1<<1);

Ich werde die Pins noch mal tauschen. Als AD's ADC2 und ADC3 nutzen und 
als IO dann die PB0 und PB1 beim ATTiny45.


Gruß und Dank Markus
#3087483
Lesenswert?

mgolbs schrieb:
> Hallo,
>
> danke für die Informationen. Löschen oder auf 0 seten, was ist da der
> Unterschied?

Keiner. Sind nur 2 unterschiedliche Sprechweisen für dasselbe.

> Geht so was?
>
>
1
> ADMUX &= ~(1<<1);
2
>

lies den Link.
Deshalb hab ich ihn dir gegeben.


> Ich werde die Pins noch mal tauschen. Als AD's ADC2 und ADC3 nutzen und
> als IO dann die PB0 und PB1 beim ATTiny45.

vernünftig.

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