Shock Media

Navigatie

PIC analoge ingang gaat niet samen met lcd

Forum > Digitaal > PIC analoge ingang gaat niet samen met lcd
Naam Bericht
Stynus

Ik heb voor mijn esr meter project een 16f690 gebruikt.
Maar er is iets raar mee aan de hand.

Als ik ALL_DIGITAL true op heb staan werkt het lcd normaal. Maar dan kan ik natuurlijk de analoge ingang niet inlezen.

ALs ik die ALL_DIGITAL true dan afzet dan gaat het lcd raardoen. Het staat dan vol met / en volle vakjes enzo en die vormen precies een looplicht .

Mijn code:
code:
'Config
    Device         16F690
    Config         INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_OFF, MCLRE_OFF
    ALL_DIGITAL    true  
    'AD
    Dim spanning As Float
    Dim esr As Float
    ADIN_RES = 10         
    ADIN_TAD = FRC           
    ADIN_STIME = 50        

    TRISA.2  = 1       
    ADCON1 = %01110000       
    
    'LCD
    Declare LCD_DTPIN PORTC.4
    Declare LCD_ENPIN PORTC.3
    Declare LCD_RSPIN PORTB.6
    Declare LCD_LINES 2

    Symbol lcdTijd  = 600
    Clear
    Cls

Opstarten:    
    Print At 1, 1,  "ElektronicaStynu"
    Print At 2, 1,  "  ESR-Meter V1  "
    DelayMS  lcdTijd
    Print At 1, 1,  "lektronicaStynus"
    DelayMS  lcdTijd
    Print At 1, 1,  "ektronicaStynus."
    DelayMS  lcdTijd
    Print At 1, 1,  "ktronicaStynus.b"
    DelayMS  lcdTijd
    Print At 1, 1,  "tronicaStynus.be"
    DelayMS  lcdTijd
    Cls
    
Hoofdprogramma_tekst:
    Print At 1,  1,  "  ESR-Meter V1  "  
    Print At 2,  1,  "  ESR =   ,     "
    Print At 2, 16, $FE,$40,$00,$0E,$11,$11,$11,$0A,$1B,$00
          
While 1 = 1 
    spanning = ADIn 2 
    spanning = spanning / 1300
    esr = spanning - 22.7
    Print At 2, 9, SDEC2 esr
    DelayMS 50
Wend

End


Wie weet er een oplossing?

EDIT:
Heb het zelf al gevonden. Dit lost het op:
code:
    ANSELH = 0
    ANSEL  = 4   

Maar ik krijg er nu alleen maar de waarde 1023 uitgelezen met spanning = ADIn 2
Om de seconde lijkt die naar 0 te zakken en binnen een halve seconde weer op te lopen naar max.
[Bericht gewijzigd door Stynus op 21 augustus 2008 14:28:07]
http://www.elektronicastynus.be ||| http://www.schematheek.net ||| Goedkope kwaliteits webhosting
High-Voltage

Tris je poort B en C eens als uitgang
Standaard zijn alle poorten ingangen (= zwevend), ik zie nergens dat je je poorten als uitgang gezet hebt. Ik weet niet zeker of je compiler dat doet (even je ASM code doorspitten), maar ik doe het voor de zekerheid altijd!


Edit:
Never mind, zie dat je je LCD probleem al hebt opgelost.


Edit2:
Waarom is ADCON0 niet ingesteld?
[Bericht gewijzigd door High-Voltage op 21 augustus 2008 16:09:19]
Het probleem bij een maatschappelijke samenleving is dat je geen "normale" uitzondering kan zijn...
Arco

Je moet ANSEL en ANSELH goed instellen. Alle gebruikte LCD lijnen in port C moeten als digitaal/output staan.
ANSELH=0 en ANSEL=4 klopt niet
[Bericht gewijzigd door Arco op 21 augustus 2008 18:40:35]
Arco
Stynus

Ik heb ondertussen dit en dat geeft nogsteeds dezelfde fout van die 1023
code:
    Device         16F690
    Config         INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_OFF, MCLRE_OFF
 
    'AD
    Dim spanning As Float
    Dim esr As Float
  
    ADIN_RES = 10         
    ADIN_TAD = FRC           
    ADIN_STIME = 50        

    TRISA.2  = 1
    'AD controll registers      
    ADCON0 = %10001000  
    ADCON1 = %01110000
    'Analoge pen selecteren     1 = analoog 0 = digitaal
    ANSEL  = %00000100       
    ANSELH = %00000000
          
    'LCD
    Declare LCD_DTPIN PORTC.4
    Declare LCD_ENPIN PORTC.3
    Declare LCD_RSPIN PORTB.6
    Declare LCD_LINES 2

    Symbol lcdTijd  = 600
    Clear
    Cls

Opstarten:    
    Print At 1, 1,  "ElektronicaStynu"
    Print At 2, 1,  "  ESR-Meter V1  "
    DelayMS  lcdTijd
    Print At 1, 1,  "lektronicaStynus"
    DelayMS  lcdTijd
    Print At 1, 1,  "ektronicaStynus."
    DelayMS  lcdTijd
    Print At 1, 1,  "ktronicaStynus.b"
    DelayMS  lcdTijd
    Print At 1, 1,  "tronicaStynus.be"
    DelayMS  lcdTijd
    Cls
    
Hoofdprogramma_tekst:
    Print At 1,  1,  "  ESR-Meter V1  "  
    Print At 2,  1,  "  ESR =   ,     "
    Print At 2, 16, $FE,$40,$00,$0E,$11,$11,$11,$0A,$1B,$00


While 1 = 1 
    Print At 2, 9, SDEC2 spanning
    spanning = ADIn 2 
    'spanning = spanning / 13000
    'esr = spanning '- 22.7
    
    DelayMS 55    
Wend

End
http://www.elektronicastynus.be ||| http://www.schematheek.net ||| Goedkope kwaliteits webhosting
Zoeken in topic