Stand 11.01.2017:  Software :MPLAB X IDE V3.45      Compiler XC16 V1.16    PIC: PIC24FJ128GA006

Der Microchip Code Configurator hat ein Problem mit den Default-Einstellungen des ADC's . Durch diese Problem hängt sich der Controller auf, während er wartet das ADC1_IsConversionComplete() abgeschlossen ist, wie es dazu kam und die Lösung gibt es hier:

Bei meinem Projekt passten die Default-Einstellungen dachte ich anfangs. Auto Samplen sollte der Controller nicht und ADC Interrupts waren nicht nötig einzig die Acquistion Time stellte ich auf 31 ein siehe Bild:

Defaulteinstellungen

 Nachdem der Rest des Konfiguriert war ging es an das Programmieren hier folgte ich dem Beispiel in der adc1.h .

Beispiel

Die Umsetzung  im Code :

Code

Führt man den Code aus Hängt sich der Controller in der while Schleife auf. Das erste Workaround das ich ausprobierte war das ersetzen der while Schleife durch ein delay. Resultat war der die ADC Wandlung funktioniert jedoch funktioniert das umschalten der Channels nicht mehr was keine Lösung für das Projekt darstellt. 

Als nächstes konfigurierte ich den ADC per Fuß mithilfe des Datenblattes und des Reference Manuels :

Code2

Mit dem Code klappte die ADC Wandlung der Controller hängt sich nicht auf und man kann zwischen den Kanälen hin und her Schalten. Was war nun der Unterschied?

Proplemregister2

Der Unterschied zwischen Default- Konfiguration und meiner Konfiguration lag im Register AD1CON2 welches ich mit 0x0000 initialisierte und Microchip mit 0x040C. Das Problem liegt bei SMPI stellt man den Wert auf 1  und CSCNA auf "disabled" funktionieren auch die Default-Einstellungen. Warum Microchip ein Easy Setup des ADC anbietet und im AD1CON2 Register Default mäßig 0x040C einträgt mit der das Easy Setup nicht nutzbar ist erschließt sich mir nicht. Sie hätten das Easy Setup genauso gut weglassen können und nur die Register anzeigen dann würde man wahrscheinlich nicht über das Problem stolpern