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
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.
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
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
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
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.
Figure 3-1. ATtiny1614/1616/1617 Block Diagram AIN[11:0] gehen auf ADC0 und auf ADC1. Jeder ADC hat sein eigenes MUXPOS-Register.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.