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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.