 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Jun 06, 2004 12:30 pm Naslov sporočila: |
|
|
Citiram: |
... ta tvoj regulator je vredu, samo pri njem mi ni vseč, da si uporabil NTC upor (mislim na linearnost in kalibracijo)... |
Tole je bilo narejeno mimogrede - če bi hotel res dober regulator bi uporabil kot senzor dallasov DS1820 ki dela na 1Wire(digitalni senzor - ni kaj kalibriat) . Sama regulacija pa bi bila kot PWM. Vse skupaj bi brez problema fural z mačkom. Poleg tega bi lahko naredil prikaz temperature na displeju. Sedaj imam ravno "malčka" v kombinaciji z SAA1064, ki dela na I2C vodilu ter lahko poganja 4 displeje. Ko bom imel čas dopišem še 1Wire rutino za senzor. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
djtech Član


Pridružen-a: Sob 18 Okt 2003 21:47 Prispevkov: 113 Aktiv.: 0.48 Kraj: Cerkvenjak
|
|
Nazaj na vrh |
|
 |
gnioco Član

Pridružen-a: Pon 26 Jan 2004 11:35 Prispevkov: 85 Aktiv.: 0.36 Kraj: Ljubljana
|
Objavljeno: Ned Jan 15, 2006 7:00 pm Naslov sporočila: |
|
|
A se lahko da pic12c508a na elektrorjevo testno ploščo? bi šlo z tem adapterjem? |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Jan 15, 2006 7:31 pm Naslov sporočila: |
|
|
Pinup je enak - bi šlo. Ampak pazi, če hočeš imeti zadevo za testiranje moraš vzeti 12C508 /JW (tak z oknom katerega lahko tudi pobrišeš) Tisti brez okna je OTP - le enkrat ga lahko sprogramiraš. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
gnioco Član

Pridružen-a: Pon 26 Jan 2004 11:35 Prispevkov: 85 Aktiv.: 0.36 Kraj: Ljubljana
|
Objavljeno: Ned Jan 15, 2006 11:49 pm Naslov sporočila: |
|
|
Silvo je napisal/a: |
Š
Koda: |
bsf STATUS, RP0 ;Bank 1
call 3FFh ;pokličemo zadnjo lokacijo v kateri je zapisana instrukicja RETLW
;le ta vrne vrednost. Če je lokacija prazna - izbrisana nam bo
;program "zašel"
movwf OSCCAL ; vpis v kalibrirni register
bcf STATUS, RP0 ;Bank 0 |
|
A to je dovolj da napišem, če želim uporabljati notranji oscilator 4MHz...?Ali moram kje še navesti točno frekvenco? |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pon Jan 16, 2006 7:08 am Naslov sporočila: |
|
|
Frekvence se ne da kje navesti. Le ta znaša za notranji oscilator 4Mhz. S kalibrirno vrednostjo le to skalibriraš. Vrednosti so namreč različne od primerka do primerka ter so tovarniško določene. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Pon Jan 16, 2006 9:27 am Naslov sporočila: |
|
|
Jaz imam 12F683, ki ima multipleksor krmiljen z OSCCON registrom, na katerem lahko izbiraš različne delilnike frekvence. Dobiš ven od 31kHz pa do 8 MHz. |
|
Nazaj na vrh |
|
 |
Martin_Krpan Član

Pridružen-a: Ned 18 Jan 2004 17:00 Prispevkov: 34 Aktiv.: 0.14 Kraj: Škofja Loka
|
Objavljeno: Tor Dec 26, 2006 4:38 pm Naslov sporočila: Probelm z AD pretvorbo |
|
|
Pozdravljeni.
Bom kar v tej temi napisal, mogoče pride še komu prav. Igram se s PIC 12F675 in imam problem pri AD pretvorbi. Nevem kaj delam narobe v priloženem programu, da ne deluje tako kot sem si zamislil. Naj bi delovalo, da bi bil GP1 na visokem nivoju, dokler ne bi bila presežena vrednost v T2, nato pa bi se napetost zmanjševala in pri T1 bi se GP1 spet vklopil. Vendar sploh ni tega vmesnega območja med GP1 in GP2, ampak so prehodi hipni, takoj ko se spremeni napetost. Ubistvu bi rad imel kot nek regulator za grelec, da bi se temperatura gibala v nekem s T1 in T2 določenem pasu.
LP
Koda: |
list p=12F675
#include "d:\asm\p12f675.inc"
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _BODEN_ON
cblock 0X20
T1,T2
endc
org 0x0
goto GLAVNI
org 0x4
DOLOCITEV_PINOV
BSF STATUS,RP0
MOVLW B'00000001'
MOVWF TRISIO ;vsi pini gpio so izhodi,razen GP0
MOVLW B'00010001'
MOVWF ANSEL ;AN0 bit je analogni vhod,frekvenca vzorèenja je fosc/8
BCF STATUS,RP0
CLRF GPIO
RETURN
KONSTANTE
movlw b'00000111' ;naložimo vrednost v w
movwf T1 ;in prenesemo v T1
movlw b'00111111' ;naložimo vrednost v w
movwf T2 ;in prenesemo v T2
return
AD_PRETVORBA
clrf ADCON0 ;leva porazdelitev, vdd je ref., kanal00
bSf ADCON0,ADON
bsf ADCON0,GO ;pozenemo ad pretvorbo
btfsc ADCON0,GO ;ali je pretvorba koncana?
goto $-1
bcf ADCON0,ADON ;izklopimo AD,rezultati so pripravljeni za obdelavo
movf ADRESH,W ;zgornjih 8 bitov ad pretvorbe damo v reg.w
return ;vrnitev iz podprograma
GLAVNI
call DOLOCITEV_PINOV ;podprogram za dolocanje pinov
call KONSTANTE ;podprogram za vnos konstant
VKLOP
bsf GPIO,1 ;vklop GP1
call AD_PRETVORBA ;izvedemo AD pretvorbo
BCF STATUS,C
subwf T2,w ;odstejemo T2 od w
btfsC STATUS,C ;ali je prišlo do prenosa?
goto VKLOP ;da, ukaz se izvede=>skok na vklop
IZKLOP
bcf GPIO,1 ;izklopimo GP1
call AD_PRETVORBA ;izvedemo AD pretvorbo
BCF STATUS,C
subwf T1,w ;odstejemo T1 od w
btfsc STATUS,C ;ali je prišlo do prenosa?
goto VKLOP ;da, ukaz se izvede=>skok na vklop
goto IZKLOP ;ne, ukaz se ne izvede=>skok na izklop
end
|
|
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Tor Dec 26, 2006 5:00 pm Naslov sporočila: |
|
|
Tale koda deluje kar v redu:
Koda: |
AD_pretvorba:
BSF ADCON0, ADON ; vklop A/D modula
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP ; počaka pribli·no 3uS (Priporoeena vrednost za 4MHz =2-4uS
BSF ADCON0, GO ; sproži branje analogne vrednosti
BTFSC ADCON0, GO ; je GO bit =0 -> Branje analogne vrednosti koneano?
GOTO $-1 ; NE -> poizkusi ponovno prej±nji korak
MOVF ADRESH, W ; DA -> ADRESH -> W (Analogna vrednost)
BCF ADCON0, ADON ; izklop A/D modula
MOVWF Izmerjeno ; vrednost A/D pretvorbe se shrani v register Izmerjeno
MOVLW U_min ; Umin ->W
SUBWF Izmerjeno, W ; Izmerjeno - Umin -> W
BTFSC STATUS, C ; Je C bit status registra 1? (rezultat operacije je veeji ali enak 0)
GOTO LCD_prizgan
BCF Parametri, 1
RETURN
|
Nastavitve pa so:
Koda: |
PROCESSOR 12f675
#include "P12F675.INC"
ERRORLEVEL -224, -302, -308, -205
__CONFIG _CP_ON & _CPD_OFF & _BODEN_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
#DEFINE U_min b'00100111' ; minimalna vrednost napetosti detekcije (0,8V)
; je b'0010011100' =156 od tega gre v ADRESH 8 zg. bitov
; b'00100111' = 0x27
Cblock 0X20 ; Začetek RAM-a
Izmerjeno ; Vrednost A/D |
Poizkusi tako kot imam jaz dodati NOP ukaze. Ker procesorček očitno rabi nekaj časa, da se AD pretvornik zažene. _________________ If at first you don't succeed, destroy all evidence that you tried. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Dec 26, 2006 5:05 pm Naslov sporočila: |
|
|
Po moji presoji ti dela težave AD blok, kajti takoj ko ga vključiš že izvedeš meritev. Po vklopu je namreč potrebno nekaj časa počakati, da se AD blok pripravi. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Tor Dec 26, 2006 5:05 pm Naslov sporočila: |
|
|
Ena napaka v tvojem programu je predpostavka, da subwf deluje nasprotno, kot dejansko deluje - subwf odsteje W od f in ne obratno in posledicno bo carry/borrow bit obrnjen ravno obratno, kot bi pricakoval.
Program je tudi nekoliko zmedeno napisan - zakaj dvakratna pretvorba in kompliciranje s skoki gor in dol ? Pretvorbo opravi enkrat, potem pa preveri ali je vrednost nizja od spodnje meje (v tem primeru samo skoci nazaj na vrh na AD pretvorbo), visja ali enaka spodnji meji in nizja od zgornje meje (v tem primeru naredi tisto, kar pac moras narediti - vklopi oz. izklopi relevantni pin in sele potem skoci spet na AD pretvorbo) ali nad zgornjo mejo (v tem primeru naredi komplementarno od prejsnjega stanja in potem skoci na vrh). _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
Martin_Krpan Član

Pridružen-a: Ned 18 Jan 2004 17:00 Prispevkov: 34 Aktiv.: 0.14 Kraj: Škofja Loka
|
Objavljeno: Tor Dec 26, 2006 5:22 pm Naslov sporočila: |
|
|
sem še mislil napisati, da je program malce nerodno napisan, ampak saj to itak vsak sam opazi,da še nisem nevemkako zverziran v tem. Da za težave je sigurno kriv AD pretvornik, saj če ga odstranim in v w naložim kar neke izmišljene rezultate AD oretvorbe, potem zadeva deluje. Sem poiskušal že z pavzami na več mestih, tudi tam, ko je zaporedje nop ukazov, pa se je isto dogajalo. Bom zamenjal kodo s tisto, ki jo dal Highlag, pa poročam.
LP |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Sre Dec 27, 2006 10:56 am Naslov sporočila: |
|
|
Datasheet za chip točno opisuje, kako se pravilno uporablja ADC.
Jur |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|