Hallo,
Ik ben op zoek naar de juiste declares om een PIC16F690 te configureren zodanig dat:
PORTA.0 = ADC channel 1
PORTA.1 = ADC channel 2
PORTA.2 = ADC channel 3
PORTA.3 = digital input
PORTA.4 = digital input
PORTA.5 = digital input
PORTB.4 tot en met PORTB.7 = datapins (LCD)
PORTC.0 = digital input
PORTC.1 = EN (LCD)
PORTC.2 = RS (LCD)
PORTC.3 = digital output
PORTC.5 = PWM output
PORTC.6 = digital output
Ik had deze code gevonden in http://www.circuitsonline.net/forum/view/59645
Device 16F690 ;microcontroller
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, MCLRE_OFF ;configuratie
Declare ALL_DIGITAL TRUE ;alles digitaal!
Declare LCD_ENPIN PORTC.7 ;declare enable pin LCD
Declare LCD_RSPIN PORTC.6 ;declare reset pin LCD
Declare LCD_DTPIN PORTB.4 ;declare data lijnen lcd
Declare RSIN_PIN PORTA.5 ;declare rs in pin
Ik heb toen het schema nagebouwd onderaan in het topic(PORTA.1 = RS en PORTA.2 = EN) en ook aangepast in de declares en dit werkte. Als ik toch een andere poort zou willen gebruiken voor de RS en de EN van de LCD dan moet ik ANSEL = 0 en ANSELH = 0 bij de configs zetten. Maar dan kan ik toch geen analoge ingang meer gebruiken?
Weet iemand hoe ik de poorten kan declaren zodanig dat het lijstje bovenaan de post klopt?
Alvast bedankt!
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Staat toch duidelijk in de datasheet:
Chapter 4.2 behandelt ANSEL(H) en welk bit bij welke ingang hoort.
Eerst de datasheet lezen, dan pas gaan progammeren...
Dus als ik het goed begrijp:
;Ik configureer de I/O met het TRIS register:
TRISA=%11111111
TRISB=%00000000
TRISC=%00000110
;Daarna zeg ik welke ingangen analoog moeten:
ANSEL= %00000111
ANSELH=%00000000
;De LCD configuratie ziet er uit als volgt:
Declare LCD_ENPIN PORTC.1 ;declare enable pin LCD
Declare LCD_RSPIN PORTC.2 ;declare reset pin LCD
Declare LCD_DTPIN PORTB.4 ;declare data lijnen lcd
Is dit correct? Moet ik nog iets declareren hiervoor?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
De 690 heeft geen ADCON register, maar ADCON0 en ADCON1.
De instelling daarvan is niet van invloed op de i/o pin settings. (analog/digital/in/out)
Alleen op de werking van de A/D conversie zelf...
Port C1 en C2 staan nu als input (TRISC), dus verkeerd...
[Bericht gewijzigd door Arco op (13%)]
Inderdaad, het moet zijn:
TRISC =%00000001
Voor het ADCON0 en ADCON1 register, aangezien ik PICBASIC gebruik, kan ik deze ook instellen met de volgende code?:
DECLARE ADIN_RES 10
DECLARE ADIN_TAD 8_FOSC
DECLARE ADIN_STIME 50
Hierin wordt ADCON1 ingesteld op FOSC/8, dit geeft (ik maak gebruik van de interne osc die standaard op 4MHz staat) een conversietijd van ongeveer 2µs.
De enable en de uitlezing gebeuren door het commando: bvb.ADIN 0 waarbij analoge input 0 wordt uitgelezen. Dit is eigenlijk het gedeelte dat in de datasheet staat onder 9.2.1? Maar dat in PICBASIC dus vergemakkelijkt is dmv het bovenstaande commando en declares?
De VREF staat standaard op Vdd DENK ik, is dit correct?
Ik kan dit in de help van Proton IDE niet vinden.
Om de uitlezing moet ik mij ook geen zorgen maken want de 2 bytes waar de ADC waarde wordt opgeslagen worden samengevoegd tot een WORD als ik zeg:
Dim var1 as WORD
var1 = ADC 1
Toch?
hadv
Just find out what you like and let it kill you
Op 13 november 2010 18:34:11 schreef FMtransmitter:
De VREF staat standaard op Vdd DENK ik, is dit correct?
Ik kan dit in de help van Proton IDE niet vinden.
Dat zul je nooit bij Proton vinden, daar moet je de datasheet voor hebben.