Forum: Mikrocontroller und Digitale Elektronik PIN-belegung ADC bei dsPIC33


von Creo_123 (Gast)


Lesenswert?

Hallo.. ich habe eine Frage zur Pin-Belegung des ADC eines dsPIC33. Ich 
möchte insgesamt acht Eingänge sampeln und konvertieren. Im Datenblatt 
habe ich dafür ein Beispiel gefunden, das ich nur etwas anpassen musste. 
Es werden immer vier Eingänge gleichzeitig gesampelt und nacheinander 
konvertiert, bevor sich der gleiche Ablauf mit den nächsten vier 
Eingängen wiederholt.
1
AD1CON1bits.AD12B = 0;      // Select 10-bit mode
2
AD1CON2bits.CHPS = 3;       // Select 4-channel mode
3
AD1CON1bits.SIMSAM = 1;     // Enable Simultaneous Sampling
4
AD1CON2bits.ALTS = 1;       // Enable Alternate Input Selection
5
AD1CON2bits.SMPI = 1;       // Select 8 conversion between interrupt
6
AD1CON1bits.ASAM = 1;       // Enable Automatic Sampling
7
AD1CON1bits.SSRC = 2;       // Timer3 generates SOC trigger
8
9
// Initialize MUXA Input Selection
10
AD1CHS0bits.CH0SA = 0b01011;      //muxA pos AN11(CH0)
11
AD1CHS0bits.CH0NA = 0;            //muxA neg Vref-(CH0)
12
AD1CHS123bits.CH123SA = 0;        //muxA pos  AN0(CH1), AN1(CH2), AN2(CH3)
13
AD1CHS123bits.CH123NA = 0b10;     //muxA neg AN6(CH1), AN7(CH2), AN8(CH3) 
14
15
// Initialize MUXB Input Selection
16
AD1CHS0bits.CH0SB = 0b01100;      //muxB pos AN12(CH0)
17
AD1CHS0bits.CH0NB = 0;            //muxB neg Vref-(CH0)
18
AD1CHS123bits.CH123SB = 1;        //muxB pos AN3(CH1), AN4(CH2), AN5 (CH3)
19
AD1CHS123bits.CH123NB = 0b11;     //muxB neg AN9(CH1), AN10(CH2), AN11(CH3)

Das erste Problem dabei ist, dass bei der 28Pin-Version meines Chips 
AN6, AN7 und AN8 nicht existieren und ich auch keine Möglichkeit 
gefunden habe, andere Pins dafür zu nutzen. Das Problem könnte ich aber 
mit der 44Pin-Variante umgehen. Natürlich wäre es aber schöner, wenn ich 
bei dem kleineren Chip bleiben könnte.
Zusätzlich möchte ich auch noch eine externe Referenzspannung vorgeben, 
die ich mit einer Referenzspannungsquelle erzeuge. Sehe ich das richtig, 
dass ich dafür den Vref+ Pin nutzen muss? Der ist aber gleichzeitig auch 
AN0, den ich ja bei der "Alternate Input Selection" für mein MUXA 
benötige. Oder kann ich meine Referenzspannungsquelle auch einfach mit 
den AVss- und AVdd-Pins verbinden?

Vielen Dank schonmal für die Unterstützung!

von Chris B. (dekatz)


Lesenswert?

AVss und AVdd sind für eine (wenn gewünscht) separate Stromversorgung 
des AD-Wandlers. Andernfalls sind diese mit dem entsprechenden Vss / Vdd 
Pin zu verbinden.
Ein externe Refernzspannung kann nur über Vref+ eingespeist werden (gilt 
auch für Vref-).
Was ist das für ein 28-Pinner der keine AN6, AN7, AN8 hat??
(habe hier gerade einen 33FJ12GP202 der hat AN0....AN9).

von Creo_123 (Gast)


Angehängte Dateien:

Lesenswert?

ist ein dsPIC33FJ128GP802..

Ist das dann echt so, dass ich diese "Alternate Input Selection" mit 2x4 
Eingängen nicht nutzen kann, weil ich AN0 für den Vref+ benötige, oder 
gibt es irgendeine andere Möglichkeit das umzusetzen?

von TobsTurbo (Gast)


Lesenswert?

Hi
ich habe auch ein Problem mit der Pinbelegungn , ich will eine 
Periodenmessung(Input capture modul 1 ) mit dem Timer 2 machen,aber ich 
steh gerade auf dem SChlauch und weiss nicht an welchen Pin ich mein 
Signal anlegen muss.

Ich nutze den oben genannten Chip im dip 28 gehäuse .

dspic33fj128mc802

vllt hat ja jemand ne gute idee ?

Danke schon mal.

 im Anhang der Link zum Datenblatt vom chip
http://ww1.microchip.com/downloads/en/DeviceDoc/70291G.pdf

von Chris B. (dekatz)


Lesenswert?

TobsTurbo schrieb:
> Hi
> ich habe auch ein Problem mit der Pinbelegungn , ich will eine
> Periodenmessung(Input capture modul 1 ) mit dem Timer 2 machen,aber ich
> steh gerade auf dem SChlauch und weiss nicht an welchen Pin ich mein
> Signal anlegen muss.
>
> Ich nutze den oben genannten Chip im dip 28 gehäuse .
>
> dspic33fj128mc802
>

Der IC1-Pin ist bei diesen Controllern nicht festgelegt, das musst du 
selber machen!

Zuständig ist das Register RPINR7 und darin die Bits 0...4 welche einen 
der mit RPxx bezeichneten Pin als IC1 Eingang festlegen.
Beim FJ128MC802 sind das die Pin RP0.....RP15.

Zusätzlich muss natürlich auch noch der Pin auf Digital umgestellt 
werden und das entsprechende Bit im TRISx Register auf Input stehen (ist 
zwar Default auf Input, aber sollte man trotzdem ordentlich 
initialisieren).

All das findes du im Kapiter PORTS!

von Tobi L. (tobsturbo)


Lesenswert?

Danke für den Tipp,ich werde das heute Abend direkt mal die Beschreibung 
durch arbeiten und ausprobieren.

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
Noch kein Account? Hier anmelden.