PIC temperaturindikator

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7390
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

PIC temperaturindikator

Inlägg av Marta »

Jag har försökt läsa av temperaturindikatorn som finns i nyare PIC, men får ett egendomligt resultat. Något fladdrande och tycks opåverkat av kretsens temperatur.

Det är en 16F18877, som har temperaturdioderna mot Vdd. Jag saknar erfarenhet av både temperaturindikator och den stökiga ADC i denna krets, så kan ha gjort vilket misstag som helst...

Får ett värde från ADC som fladdrar kring 926, det känns fel. Motsvarar ungefär 0.48V under Vdd och där skall vara 4 diodsträckor. Rutinen som visar siffrorna används även på annan plats och fungerar där.

Kan Ni som kan se något uppenbart fel? De femtioelva ADC-register som inte rörs skall enligt datablad ha värden enligt POR när modulen startas efter att ha varit avstängd. Efter listningens slut läses adresl/adresh och därefter ställs modulerna av igen.

Kod: Markera allt

        
        lod bs,#pmd0/128
        rmb pmd0,6              enable fvr (t-ind)
        rmb pmd2,5              enable adc

        lod bs,#fvrcon/128
        smb fvrcon,5            t-ind on
        smb fvrcon,4            t-ind high range
        nop
        nop

        lod bs,#adcon0/128
        lod a,#%_1000_0100      startup a/d, right shifted results
        lod adcon0,a
        lod a,#%000111          set a/d clock, intosc is 8MHz
        lod adclk,a
        lod a,#$3d              select t-ind
        lod adpch,a
        lod a,#-1
        lod adpre,a             max precharge time
        lod adacq,a             max sample time

.wait   nop                     a little wait
        nop
        dsz areg
        jmp .wait

        smb adcon0,0            begin conv
.adwait nop                     wait for it
        sbr adcon0,0
        jmp .adwait
Användarvisningsbild
Icecap
Inlägg: 26610
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: PIC temperaturindikator

Inlägg av Icecap »

Erfarenhet har lärd mig att ALDRIG lita på att register - efter reset - står i ett givet läge!

Om ett register abs. inget har med funktionen man använder, kan man nog strunta i det - men annars ser man till att de blir initierat på något sätt!
ELTompa
Inlägg: 507
Blev medlem: 27 februari 2017, 22:13:28
Kontakt:

Re: PIC temperaturindikator

Inlägg av ELTompa »

Vet inte om det hjälper dig men jag använde tempsensorn i min rörförstärkare i en lite äldre pic. här är det jag skrev om den
viewtopic.php?p=1547833#p1547833
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7390
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: PIC temperaturindikator

Inlägg av Marta »

Tack för länken. Den bekräftar vad för avläsning jag kan förvänta från ADC. Min avläsning kring 936 är alldeles för hög. Något är med stor säkerhet felkonfigurerat.

Har dubbelkollat allt som har med temperaturindikator eller referensspänning att göra. Tyvärr resultatlöst. Samma sak med att försöka hitta ett kodexempel där det används ett chip med denna stökiga av finesser storknande ADC.

Har någon av Er sett ett sådant exempel med 16F18877 eller annan med liknande ADC?
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: PIC temperaturindikator

Inlägg av Kaggen »

Har inget svar på din fråga tyvärr, men jag vart nyfiken på vad det är för typ av instruktioner i din kod som du listat? Rmb, smb, lod är inget jag känner igen från "vanliga" PIC16s instructionset.
Användarvisningsbild
Glenn
Inlägg: 36122
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: PIC temperaturindikator

Inlägg av Glenn »

med risk att outa mina usla programmeringskunskaper.. smb och rmb låter som setmemorybit och resetmemorybit ?
Användarvisningsbild
Klas-Kenny
Inlägg: 11751
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: PIC temperaturindikator

Inlägg av Klas-Kenny »

Är inte det 6502-instruktioner?

Kör Marta någon udda PIC-assembler som använder 6502-mnemonics istället för de "vanliga"? :)


Tillägg: Sökte i forumet och mycket riktigt är det en hemsnickrad assembler för personlig preferens. :D
viewtopic.php?p=1837996#p1837996
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7390
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: PIC temperaturindikator

Inlägg av Marta »

Har hittat felet nu och fått det att fungera som förväntat. Mätvärdet blir 545 nere på mitt svinkalla vintergolv.

Orsaken var att jag Trodde, Tänkte och Tyckte att allt som ökade tiden en avläsning tog måste vara bra, så satte adpre och adacq till -1 (0xff). Det var adpre som ställde till det.

Rätt är att temperaturindikatorn skall vara ansluten till ADC under minst 200µs, därefter läsa av. Sedan samma väntan mellan varje avläsning.


Som Ni redan insett är det en annan assembler.
Opcodes bygger mycket riktigt på 6502. Instruktionerna här är LOaD, SetMemoryBit, ResetMemoryBit, DecrementSkipZero, SkipBitReset.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1352
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: PIC temperaturindikator

Inlägg av baron3d »

Det där är inte 6502 instruktioner.
LOAD heter LDA.
SetMemoryBit finns inte bland 6502 instruktioner.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7390
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: PIC temperaturindikator

Inlägg av Marta »

Och PIC är inte en 6502...
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46794
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PIC temperaturindikator

Inlägg av TomasL »

PÅ PIC-språk heter det väl "mov"
Användarvisningsbild
rvl
Inlägg: 6808
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: PIC temperaturindikator

Inlägg av rvl »

Marta är väl inte direkt nån fan av "PIC-språk", om hon en gång bemödat sig med att skriva sin egen assembler så som hon själv vill ha den.
Det kan vi lyfta hatten åt tycker jag.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46794
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: PIC temperaturindikator

Inlägg av TomasL »

Jomenvisst, men det blir lite krångligt, om man skall försöka hjälpa till, då ingenting stämmer.
Skriv svar