Forum: Mikrocontroller und Digitale Elektronik ATtiny1616 Multiplexer Pinzuweisung für ADC


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Marko R. (marko_rocznik)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Der ATtiny1616 (20 pin Gehäuse) hat 2 ADCs. Im Datenblatt auf Seite 18 
findet man, dass ADC0-AIN8 auf Pin 6 geht und ADC1-AIN8 auf Pin 14.

Im Abschnitt "ADC" (ab Seite 356) findet man aber nicht, wie man 
zwischen beiden ADCs umschaltet. Es gibt nur 1 Ergebnisregister, nur 1 
Controllregister usw.

Ich brauche 10 analoge Eingänge, daher muss ich beide ADCs nutzen. 
Schaltplan ist angehängt.

Was habe ich übersehen?

Viele Grüße!
 Marko

: Bearbeitet durch User
von Patrick J. (ho-bit-hun-ter)


Bewertung
0 lesenswert
nicht lesenswert
Hi

Datenblatt zum ATtiny1614  ATtiny1616  ATtiny1617
http://www.mouser.com/ds/2/268/40001893B-1116230.pdf
Seite 372
MUXPOS
Damit stellst Du den geünschten ADC ein - geht immer nur nacheinander, 
weshalb hier die Quelle eingestellt werden muß.

MfG

PS: Datenblatt nur überflogen, war auch 'nur' der erste Google-Treffer.

von Achim S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Marko R. schrieb:
> Im Abschnitt "ADC" (ab Seite 356) findet man aber nicht, wie man
> zwischen beiden ADCs umschaltet. Es gibt nur 1 Ergebnisregister, nur 1
> Controllregister usw.

Den Registersatz, der ab S. 356 beschrieben wird, gibt es für jede 
Instanz des ADCs einmal. Du musst den Adressoffset zur jeweiligen 
Basisadresse des gewünschten ADC dazuzählen.

Alos: x610 ist Ergebnisregister für ADC0, 0x650 ist das Ergebnisregister 
für ADC1

von Marko R. (marko_rocznik)


Bewertung
0 lesenswert
nicht lesenswert
Nur dass das Datenblatt darüber nicht sagt. Wenn ich eine Suche nach 
"610" mache ist die ergebnislos. Wo hast du die her?

: Bearbeitet durch User
von P. M. (mikro23)


Bewertung
0 lesenswert
nicht lesenswert
Seite 33

7.1 Peripheral Module Address Map

0x0600 ADC0 Analog to Digital Converter/Peripheral Touch Controller
0x0640 ADC1 Analog to Digital Converter instance 1

von Achim S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
P. M. schrieb:
> Seite 33
>
> 7.1 Peripheral Module Address Map

So isset, da findet sich die Basisadresse im Datenblatt.


Die header-Datei iotn1616.h wäre auch eine gute Quelle:

#define ADC0                  (*(ADC_t *) 0x0600) /* Analog to Digital 
Converter */
#define ADC1                  (*(ADC_t *) 0x0640) /* Analog to Digital 
Converter */
...
typedef struct ADC_struct
{
    register8_t CTRLA;  /* Control A */
    register8_t CTRLB;  /* Control B */
....

oder wenn man nicht mit dem ADC_struct arbeiten mag:
#define ADC0_RES  _SFR_MEM16(0x0610)
#define ADC1_RES  _SFR_MEM16(0x0650)


Auch die Code-Vervollständigung im Atmel-Studio hilft weiter, wenn man 
einfach mal AD eingibt und sich die Auswahlmöglichkeiten anschaut.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Figure 3-1. ATtiny1614/1616/1617 Block Diagram
AIN[11:0] gehen auf ADC0 und auf ADC1.
Jeder ADC hat sein eigenes MUXPOS-Register.

von Gerhard (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> AIN[11:0] gehen auf ADC0 und auf ADC1.
> Jeder ADC hat sein eigenes MUXPOS-Register.

Ich stelle an einem ATTiny1614 Rev.A gerade etwas anderes fest.
An sämtlichen ADC-Pins AIN0-AIN0B (ADC1_MUXPOS= 0-0bH) lese ich mit ADC1 
nur irgendwas Nähe 3FFH aus (dasselbe wie bei ADC1_MUXPOS 0bH= Internal 
Reference). ADC0 mit der Source-Auswahl in ADC0_MUXPOS funktioniert 
normal lt. Beschreibung im Datenblatt.

von Gerhard (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Gerhard schrieb:
> Peter D. schrieb:
>> AIN[11:0] gehen auf ADC0 und auf ADC1.
>> Jeder ADC hat sein eigenes MUXPOS-Register.
>
> Ich stelle an einem ATTiny1614 Rev.A gerade etwas anderes fest.

Hab mich etwas vertan, sorry.
Die physischen analogen Portpins sind außerdem den Muxpositionen AINx 
bei ADC0 und ADC1 sehr unterschiedlich zugeordnet. Das hatte ich so 
intuitiv wie irrtümlich bei beiden ADCs als gleich vorausgesetzt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.