Robbertbd
robotica rules :D
hallo
ik wil de A/D converter in mijn 16F877A gebruiken met de taal basic.
ik heb al in de help gezocht maar ik kan niet een mooi voorbeeld vinden waar werd omschreven hoe ik de a/d gebruik.
ik ben er al wel achter dat ik met ADCON de A/D pin selecteer.
maar verder bn ik ook niet 
ik wilde vragen heeft er iemand een voorbeeld in basic?
hoeft niet perce voor de 16F877A te zijn ik kan het denk ik zelf wel aan passen naar mijn pic.
alvast bedankt
Robbert
Als je de demo versie eens download van mikroBasic op mikroelektronica dan vind je daar een hele boel voorbeelden ook bij. Als je zo eentje opent en het eens bekijkt zou je er waarschijnlijk al veel uitleren.
Lucky Luke
Eluke.nl | handgetypt | I'm a poor, lonesome cowboy, with a long, long way to go.
ik denk dat ik wel iets heb, maar ik zeg niet dat het bruikbaar is 
Ik denk dat je verder komt door de help van PICbasic eens te bekijken. (bij ADIN, en alle pagina's die daar wat mee te maken hebben)
en bekijk de lijst met declares, daar staan er ook een paar tussen voor de a/d.
Robbertbd
robotica rules :D
oke ga ik eens doen.
ik gebruik proton pic basic.
ik heb al wat voorbeeldjes gevonden maar ze werken allemaal anders.
de ene wermt met ADIN de ander met adc_read.
en dan nog de declare's
ik ga nog even verder zoeken als nog iemand een voorbeeld heeft is dat welkom 
Robbert
[Bericht gewijzigd door Robbertbd op (33%)]
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Proton heeft ook voorbeelden in de map samples staan. Hier staat ook een voorbeeld van A/D convertor
Robbertbd
robotica rules :D
ik heb het voorbeeld van ADIN genomen en al het onnodige er tussen uit geplukt.
dit in mijn resultaat:
' Read channel 0 of on-board ADC and display the results
Set_Defaults PROTON_4
Device = 16F877
ADIN_RES 10 ' Set the resolution to 10
ADIN_TAD FRC ' Choose the RC osc for ADC samples
ADIN_STIME 100 ' Allow 100us for charge time
Dim waarde as Word
Delayms 100 ' Wait for PICmicro to stabilise
Cls ' Clear the LCD
TRISA.0 = 1 ' Setup bit-0 of PortA as an input
ADCON1 = %10000010 ' Set PORTA analog and right justify result
Again:
waarde = ADIN 0 ' Read the ADC
Print at @waarde ' Display the RAW data
Goto Again ' Do it forever
ik heb alleen nog een paar vraagjes:
-ADIN_RES 10 wat doet dit precies?
-wat betekent FRC en kan ik dit altijd gebruiken?
-hoe bereken ik de ADIN_STIME?
-waarom staat port a 0 als ingang? die word verder toch niet gebruikt?
-en wat word er precies met adcon ingesteld?
Robbert
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Dit staat allemaal in de datasheet.
ADIN_RES staat voor 8 of 10 bits resolutie van de A/D conversie.
FRC heeft te maken met de ocsilator welke gebruikt wordt voor de conversie.
ADIN_STIME heeft te maken met de conversie tijd.
ADCON1 zijn de instellingen voor de AD ingangen. Dus welke van de ingangen gebruikt wordt voor AD , Vref + en Vref -
Maar nogmaals staat allemaal in de data sheet
Robbertbd
robotica rules :D
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Nee normaal gebruik je voor de Vref + de 5 Volt en voor de Vref - de GND. Dit kan natuurlijk niet helemala stabiel zijn. Dan gebruikje een apparte Vref.
Ook kan het handig zijn wanneer de te meten spanning van bijvoorbeeld 2 Volt tot 3,5 Volt is.
Door dan een Vref+ van 4V en een Vref- van 1,5V te kiezen dan heb je je 10 Bits resolutie van 1,5V tot 4V in plaats van 0 tot 5 Volt
Robbertbd
robotica rules :D
oke ik ga morgen denk ik onderdelen halen en dan ga ik er mee aan de slag.
toch nog een vraagje:p
wanneer gebruik ik ADCON1 en waneer ADCON0?
bedankt voor de hiulp.
Robbert
[Bericht gewijzigd door Robbertbd op (25%)]
Op 3 augustus 2007 13:42:27 schreef Robbertbd:
wanneer gebruik ik ADCON1 en waneer ADCON0?bedankt voor de hiulp.
Robbert
Als je nou eens de datasheet erbij pakt zie je het allemaal precies. Als ik het wil weten doe ik hetzelfde.
Robbertbd
robotica rules :D
jha wat ik heb gevonden is dat het 2 registers zijn.
en zo ver ik het bgrijp heb je alleen 1 nodig.
en ik kan niet uit de database halen hoe ik kom aan:
ADCON1 = %10000010
ik dacht dat het iets te maken hed met de 000 van poort an1
mischien stel ik nu zeer stomme vragen maar ik kan het niet vinden.
Robbert
marcob
Honourable Member
People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
In de datasheet staat toch voor ieder bit in ADCON0 en ADCON1 waarvoor ze zijn?
(Waarom leest niemand de datasheet meer tegenwoordig?...
)
Robbertbd
robotica rules :D
als we dezelfde datasheet hebben staat daar een tabel.
maar daar kan ik ook niet uit vissen wat ik achter ADCON1 kan zetten.
PIE2 873 874 876 877 -r-0 0--0 -r-0 0--0 -r-u u--
PCON 873 874 876 877 ---- --qq ---- --uu ---- --
PR2 873 874 876 877 1111 1111 1111 1111 1111 1111
SSPADD 873 874 876 877 0000 0000 0000 0000 uuuu uuuu
SSPSTAT 873 874 876 877 --00 0000 --00 0000 --uu uuuu
TXSTA 873 874 876 877 0000 -010 0000 -010 uuuu -uuu
SPBRG 873 874 876 877 0000 0000 0000 0000 uuuu uuuu
ADRESL 873 874 876 877 xxxx xxxx uuuu uuuu uuuu uuuu
ADCON1 873 874 876 877 0--- 0000 0--- 0000 u--- uuuu
EEDATA 873 874 876 877 0--- 0000 0--- 0000 u--- uuuu
EEADR 873 874 876 877 xxxx xxxx uuuu uuuu uuuu uuuu
EEDATH 873 874 876 877 xxxx xxxx uuuu uuuu uuuu uuuu
EEADRH 873 874 876 877 xxxx xxxx uuuu uuuu uuuu uuuu
EECON1 873 874 876 877 x--- x000 u--- u000 u--- uuuu
EECON2 873 874 876 877 ---- ---- ---- ---- ---- ----
Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
Deel 11.0 ANALOG-TO-DIGITAL CONVERTER (A/D) MODULE
[Bericht gewijzigd door MMSoft op (28%)]
Robbertbd
robotica rules :D
o andere data sheet.
nu klopt het better wat je zij.
zoiets had ik ook voorme in die andere data sheet.
ik zie nu twee keer een pagina die ik kan gebruiken.
1 voor ADCON1 en 1 voor ADCON0.
in het voorbeeld woord alleen ADCON1 gebruikt, al weet ik nog niet waarom.
maar dat doe ik ook.
bit7 gaat dan over het most significant bit.
ben even kwijt wat dat is maar dat moet lukken.
die zet ik op 1
bit6 gaat over de klok snelheid voor de convertor.
daar maakt het volgensmij niet veel uit of die op 1 of 0 staat?
maar die zet ik op 1.
bit5 - 4 moeten volgens mij op 0 dus 00
bit3 - 0 hier mee kan ik volgens mij instellen of ik vref wil gebruiken.
en welke poorten digitaal en analoog moeten worden.
ik neem aan dat als ik ze op digitaal zet dat ik ze dan gewoon kan gebruiken.
en aan gezien ik maar 1 analoge poort nodig heb neem ik 1110 klopt dat?
dus dan kom ik als eind resultaat op:
ADCON1 = %11001110
is dat zoals het hoort?
Robbert
~Galaxy
In the beginning there was nothing.... and even that exploded...
bit7 gaat dan over het most significant bit.
ben even kwijt wat dat is maar dat moet lukken.
die zet ik op 1
Scherp in de gaten houden. Moet right-aligned staan, anders krijg je onzin waardes in een word-variabele.
Robbertbd
robotica rules :D
oke
maar als je die altijd op 1 moet zetten waarom laten ze de gebruikers die keuze maken?
en hoe kan ik de klok het beste zetten?
Robbert
De klok moet 'kloppen' met de kloksnelheid van je PIC.
Er staat een heel schema bij met diverse kloksnelheden van de PIC en van de ADC. Er staat precies in de tabel (ik geloof waardes met een blauw en een wit achtergrondje) welke zijn toegestaan bij een bepaalde PIC-kloksnelheid.
~Galaxy
In the beginning there was nothing.... and even that exploded...
maar als je die altijd op 1 moet zetten waarom laten ze de gebruikers die keuze maken?
Misschien heb je een communicatietoepassing die MSBfirst wegstuurd ?
Robbertbd
robotica rules :D
Op 3 augustus 2007 16:37:06 schreef Zonnepaneeltje:
De klok moet 'kloppen' met de kloksnelheid van je PIC.
Er staat een heel schema bij met diverse kloksnelheden van de PIC en van de ADC. Er staat precies in de tabel (ik geloof waardes met een blauw en een wit achtergrondje) welke zijn toegestaan bij een bepaalde PIC-kloksnelheid.
als ik het goed zie kan je bij 20MHz 32 en 64 gebruiken?
Robbert
robert,
werkt de schakeling nu??
ik zat met het zelfde probleem.
ik hen je topic gevolgd , maar de uiteindelijke code voor adcon1 is die nu de juiste als in je laatste antwoord?