prog ontwikkeling

Lambiek

Special Member

Heb hier en daar wat achter je programma gezet.
Eerst declareer je ADCON1, dan ergens in je programma weer ADCON0.

Dit gaat niet werken zo.

Op 19 januari 2010 15:48:03 schreef TechnOoB12:

pic basic code:

'****************************************************************
'*  Name    : PIC 2 van XPSll.BAS                               *
'*  Author  : Roel Zwetsloot                                    *
'*                                                              *
'*  Date    : 17-1-2010                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEVICE 16F818
config CP_OFF, CPD_OFF, LVP_OFF,MCLRE_OFF,PWRTE_ON,INTRC_OSC_NOCLKOUT,WRT1_OFF,WRT0_OFF, DEBUG_OFF

 
;Logische constanten
SYMBOL ON = 1         [WAAR IS SYMBOL OFF]

;declares LCD
DECLARE LCD_ENPIN PORTA.6
DECLARE LCD_RSPIN PORTA.7
Declare ADIN_RES = 10         ; resolutie 10 bits
Declare ADIN_TAD = frc        ; set RC osc intern
Declare ADIN_STIME = 50       ; sample tijd 5

;variabelen
DIM letter AS BYTE
DIM Volts AS float
DIM Raw AS word

; poortnamen
symbol A = PORTA.5
symbol B = PORTB.0
symbol C = PORTB.1
symbol D = PORTB.2
symbol E = PORTB.3

;andere symbolen
SYMBOL stap = 5.0 / 1024  [LOOPT MAAR TOT 1023]


;          76543210
PORTA =   %00000000
PORTB =   %00000000
TRISA =   %11111100
TRISB =   %00001111
ADCON1 =  %00001011  [HIER ZET JE ADCON1 NEER]

; opstartprocedure 
ADCON0  = %11100001 [WAT IS DIT, HIER STAAT WEER ADCON0]
CLEAR                         
DELAYMS 250                  
cls                          
print at  1,  1, "Welcome"    
delayms 200
print at  2,  1, " XPS-ll Supply "
delayms 500
cls                          


;Hoofdprogramma
While 1 = 1                 
  If A  = ON then
    letter  = 65            
  elseif  B = ON then
    letter  = 66              
  elseif  C = ON then
    letter  = 67             
  elseif D  = ON then
    letter  = 68            
  elseif E  = ON then
    letter  = 69           
  endif

   ; data conversie
         ;76543210
  ADCON0 = %11100101  [HIER STAAT OOK WEER ADCON0]
  Raw = ADRESH
  Volts =  Raw * stap

; uiteindelijke weergaves
  PRINT AT 1, 1,"supply ",letter," :"    
  PRINT AT 2,1, DEC3 Volts,"Volt"

wend

end  
Als je haar maar goed zit, GROETEN LAMBIEK.
Henry S.

Moderator

Het meeste kan je allemaal weer wegstrepen Lambiek, de TS zit te rommelen naar aanleiding van de post van Jochem, en is daarbij een hele belangrijke opmerking vergeten:

Op 19 januari 2010 14:51:17 schreef Jochem:
Maar ik kan me ook voorstellen dat PICBASIC dat allemaal lekker voor je interfacet, staat daar niks over in de handleiding?

Het heet niet voor niets Basic.

De TS had met de voorbeelden al kunnen zien dat hij niks met ADCON0 te maken heeft, hij maakt het zichzelf veel te moeilijk. Te veel in een keer willen doen.

Dus @TechnOoB12:

Begin eens weer bij het begin, zorg eerst dat je ADC werkt, met een eenvoudig programma! Dat kan je zelf compileren en kost je de prijs van 1 16F877(A). Eerst leren lopen, nu ben je aan het hollen en ga je constant op je bek, dat doet zeer en frustreert.

Deze post is niet door ChatGPT gegenereerd. De 2019 CO labvoeding.

Op 20 januari 2010 01:48:25 schreef Henry S.:
nu ben je aan het hollen en ga je constant op je bek, dat doet zeer en frustreert.

En niet te vergeten moeten wij je constant oprapen, gaat ook vervelen :)

If you want to succeed, double your failure rate.

ehja:D
maar het leert van zijn fouten hoor, en de inzet heb ik, nu de brains nog.
ben misschien iets te anthuosiast bezig?|:(

ik denk, ik ga de ADCON0 verwijderen, en gewoon erin stampen zodra hij er is. verder nog lambieks tips opvolgen.
misschien werkt het, misschien niet.
dan heb ik het in ieder geval geprobeerd.

het enige nieuwe in dit programma zijn de fusebits, maar die zouden goed moeten gaan want die heb ik opgezocht in de datasheet, en de A/D conversie weergave.

dus eigenlijk is het enige nieuwe de AD conversie weergave....

de rare variabele namen, een signaal komt van knop A( en zo heet ie ook in het echt!) naar een kleine converter, logic device, en deze stuurt nog wat andere dingetjes aan,etc.. en dan gaat deze geconverteerde puls A naar de PIC, en dus noemik hem daar ook A...
idem voor B, C , D, E.

Waar rook is, is Roel. 5e jaars EE student @TU delft met een uit de hand gelopen buizenhobby!
Lambiek

Special Member

Maak er dan bvb dit van.

Knop_A, Knop_B, Knop_C,..........

En ADCON0 of ADCON1 nooit in je hoofd programma zetten, allemaal boven in zetten en dan met variabele werken.

Als je het aanroept in je programma dan zet je dit neer:
bvb waarde = ADIN0, en waarde zet je als (DIM waarde AS BYTE, AS WORD, AS DWORD, AS FLOAT, boven in het programma).

Begin nu eens rustig opnieuw zoals Henry ook al zij, en bouw het uit. :)

Als je haar maar goed zit, GROETEN LAMBIEK.