Okee, nu geef je tenminste wat aan.
Op 19 januari 2010 13:48:45 schreef TechnOoB12:
ik begrijp bit 2 niet en bit 7&6 niet helemaal.
ADCON0.2 (GO/#DONE) moet jij setten (1) op het moment dat je hem wilt samplen. Zodra hij 0 is geworden is je PIC klaar en staat het resultaat voor je in het betreffende register. Zie ook 11.4, staat ook nog een tijdlijn bij.
Het verhaal over bit 6&7 wordt toch prima (met voorbeeldtabel) uitgelegd in 11.2? Wat snap je daar niet aan?
ik gebruik de interne osc dus dat is in beide gevallen 11 denk ik.
Nee, zo werkt dat niet, staat erboven:
The A/D converter has a unique feature of being able
to operate while the device is in SLEEP mode. To operate
in SLEEP, the A/D conversion clock must be
derived from the A/D’s internal RC oscillator.
Verder 11.2 lezen.
verder uilezen op RA4/AN4
Hoe kom je op 001 voor bits 5-3 dan??
-ADCON1
bit 7 zegt mij niks.
En terwijl 11.4.1 het nog wel voor je uitlegt, samen met figuur 11-4.
Stel we hebben decimaal het getal 1023 (binair 10-bits 'aan', dus maximaal)
code:
_____________________
| ADRESH : ADRESL |
| 76543210 : 76543210 |
|__________:__________|
left | 11111111 : 11xxxxxx |
right | xxxxxx11 : 11111111 |
'---------------------'
De 'x' is ongedefinieerd, immers is het maar een 10-bit ADC.
Als je die 10 bits allemaal gebruikt wil je waarschijnlijk right-justification. Je most significant bits zitten dan in ADRESH, dus moet je truuks gaan uithalen om die te bewaren. Als je met 8-bits genoeg neemt (die laatste staan misschien toch maar te klapperen vanwege een niet-toereikend analoog circuit) kun je veel beter left justification pakken. In het tabelletje hierboven zie je dat de bits die je dan eigenlijk niet nodig hebt de enige zijn die in ADRESL staan. ADRESH bevat dus effectief de 8-bits ADC waarde die je dan wilt hebben.
Maar ik kan me ook voorstellen dat PICBASIC dat allemaal lekker voor je interfacet, staat daar niks over in de handleiding?
bij bit 0-3 staat niet wat ik wil hebben,
ik moet hebben:
AN4 analog
AN3 vref
AN2 vref
AN1 Digital
AN0 digital
Kijk, dus je begrijpt dat je iets wil dat niet kan? Dan zou je dus je schema aan moeten passen, misschien AN0 en AN4 omruilen?
(RX is nog steeds een vage trouwens, doet geen goed in deze opstelling...)
van beiden weet ik niet waar ik het in mijn prog moet plaatsen.
als je mijn prog wilt zien, post ik hem straks wel.
De momenten waarop het een en ander gedaan moet worden kun je denk ik prima afleiden uit het stappenplan in de datasheet:
These steps should be followed for doing an A/D
conversion:
1. Configure the A/D module:
- Configure analog pins/voltage reference and
digital I/O (ADCON1) - Select A/D input channel (ADCON0)
- Select A/D conversion clock (ADCON0)
- Turn on A/D module (ADCON0)
2. Configure A/D interrupt (if desired):
- Clear ADIF bit
- Set ADIE bit
- Set GIE bit
3. Wait the required acquisition time.
4. Start conversion:
5. Wait for A/D conversion to complete, by either:
- Polling for the GO/DONE bit to be cleared
(with interrupts disabled); OR - Waiting for the A/D interrupt
6. Read A/D Result register pair
(ADRESH:ADRESL), clear bit ADIF if required.
7. For next conversion, go to step 1 or step 2 as
required. The A/D conversion time per bit is
defined as TAD. A minimum wait of 2 TAD is
required before the next acquisition starts.