Ik heb een aantal vragen over de A/D converter van een PIC16f877. Heb de datasheet doorgespeurd maar heb een aantal vragen. Info dat bij de vraag hoort heb ik als code toegevoegd. In programmeer in C

1. Met welke pin stel ik de positieve referentiespanning in. Ik zou zeggen via de referentie pin (RA3). Maar betekent dit dan dat ik dus een A/D converter minder heb? of kan ik het software matig oplossen?

2. Kan ik het zo instellen dat ik bijvoorbeeld poort RA0 en RA1 instel als A/D converter, en dat ik de andere poorten (RA2 t/m RA5) als "gewone" I/O kan gebruiken?

Kan ik dit instellen zoals gedaan wordt met TRISX of moet ik een speciaal register instellen?


The ADCON1 and TRIS registers control the operation
of the A/D port pins. The port pins that are desired as
analog inputs must have their corresponding TRIS bits
set (input). If the TRIS bit is cleared (output), the digital
output level (VOH or VOL) will be converted.

en


The port pins can be configured
as analog inputs (RA3 can also be the voltage reference),
or as digital I/O.

dus ik denk dat het kan..., maar hoe doe ik dit

3. De A/D converter maakt gebruik van 10 bits


The A/D conversion of the analog input signal
results in a corresponding 10-bit digital number.

Dan kan ik dus mijn referentie spanning "opdelen" in 1024 niveau's. Dus bij 5V kan ik spanningsverschillen waarnemen van 5V/1024 = 5mV Klopt dit?

Hoi Mitchell,

1) Dat is juist, je kunt een pin maar een keer gebruiken.
2) Je moet zowel het tristate register (TRISA) als het ADCON1 register instellen. In het trisregister geef je aan of de desbetreffende pinnen in of uit zijn. In het ADCON1- register kun je per pin instellen of deze analoog of digitaal is. Verder kun je daarmee ook bepalen of je een externe referentie gebruikt of een interne. Dit staat duidelijk uitgelegd in de datasheet.
3) Je adconverter is 10 bits, dus 2^10 = 1024counts. Als je de VSS en VDD van de pic als referentie gebruikt (de voedingsspanning), dan is dit inderdaad (VDD-VSS)/1024 = (5-0)/1024 = 4,8 mV.

ok, maar je hebt toch altijd een referentie spanning nodig. Dus eigenlijk heb je altijd een poort minder dan voor de AD converter. Is dit software matig op te lossen, in de vorm van:

Poort Vcc=Uref ?

al begrijp ik dat dit geen c code is ;)

Kijk eens in de datasheet naar het register ADCON1. Daarin kun je aangeven welke functie je meegeeft aan de pennen van porta. Je kunt daar onder andere kiezen uit een externe vref, of een interne, met diverse configuraties voor de pennen.

De PCFG-bits zijn verantwoordelijk voor toewijzing van de poorten. Bekijk anders plaatsje 11.1 A/D Block diagram even, daar staat het ook heel duidelijk in. Je kunt diverse configuraties instellen. Een A staat voor analoog, een D voor digitaal, en VREF- en VREF+ spreekt voor zichzelf.

Stel dat je nu de VREF- aan de VSS wilt hangen, en de VREF+ aan de VDD, dan kijk je in de tabel.
0000, 0010, 0100, 011x, 1001 en 1110 zijn de configuraties die geen externe referentiespanning gebruiken, maar een interne. Verder kun je dus kiezen hoeveel van de pennen je als analoge input wilt gebruiken, en welke als digitale. 1110 bijvoorbeeld stelt de boel zo in dat je één (1) analoge input hebt, namelijk AN0. De referentiespanning wordt gevormd door de VDD en VSS, en de rest van de inputs zijn digitaal. Zo duidelijker?

[Bericht gewijzigd door Laurens83 op ]

perfect. Dit was het laatste setje in me rug. Ik was zelf al redelijk om weg, maar nu snap ik het conpleet. Dank u