Dobry den, mam poslednich par dni problem s funkcnosti AD prevodniku u 675ky. Podle rady jednoho programatora z UK jsem nejspis spravne nastavil AD prevodnik. Potrebuji aby program vzdy kdyz je hodnota mensi nebo vetsi nez UPPER_LIMIT a LOWER_LIMIT tak se spusti SIRENA, jinac to skoci na ARMED2.
Prikladam kod, doufam ze bude k necemu a snad mi pomuzete.
Jsem uz pekne zoufaly
Pri realizaci nez program dojde k b Cidla vse funguje v poradku, potom uz prestane pracovat a chova se stale jako ARMED2 main.asm (6.43 KB)
Podprogram cidla slouzi k tomu abych ze zabezpeceneho stavu(ARMED2) kontroloval jestli neni napeti vetsi nez referencni.
Musi byt nastaveny dvere na (GP5)0, klic na (GP3)0 a okna na (GP4)1. Pak to skoci na cidla. Zjistuje jestli nahodou nejsou okna zavreny, ale netece v tom obvodu vyssi napeti-cili premostene snimace. Na to bych chtel pouzit ten AD.
Ten cblock 0x20 je od 20ky. a EQU mam od 21, ale asi se spatne koukam , jsem fakt zacatecnik
3)Banka byla spatne nastavena u ADCON, byla tam stale PAGE1 a on je na PAGE0.
V priloze dodavam kod.
Tak uz to prekvapive dela co ma, jen musim nastavit v pripade ze misto premosteni dratkem se pouzije neco jako odpor presnejsi hodnotu v binaru a je to snad vse
DIKY MOC !!!
Ja to fakt ty blbosti nevidel main.asm (5.98 KB)
Aha diky, to jsem nevedel. Vis zkousim programovat ve skole a moc mi to nejde a takoveto veci ziskavam postupem casu do hlavy. Diky moc za vsechny rady.
Tak se snazim upravit ten domaci alarm tak, ze k hodnote co namerim udelam limity kde muze byt napeti na AD aby nezacal alarm rvat. Hodnotu z AD jsem si nameril a ulozil do EEPROM pro kontrolu. To funguje tak jak ma. Pote v teto funkci k hodnote co mam namerenou(VOLTY_hi) prictu limit 100mV a odectu pro urceni rozmezi tolerance.
banksel GPIO
movfw VOLTY_hi
addwf MEZ_R,W ;pricteni k hodnote 100mV
movwf LIMIT_hi
movfw MEZ_R
subwf VOLTY_hi,W ;odecet od hodnoty 100mV
movwf LIMIT_lo
b Armed2
To podle simulace funguje…
Jenze ted se snazim zhodnotit jestli hodnota VOLTY_hi(namerena) je vetsi jak hodnota LIMIT_hi a pokud ano tak se spusti ALARM(ALARM_on) a pokud hodnota VOLTY_hi je mensi jak hodnota LIMIT_lo tak se spusti ALARM(ALARM_on). Jinak bude alarm vypnuty.
Cidla:
banksel STATUS
bcf STATUS,C
bcf STATUS,C
banksel GPIO
movf VOLTY_hi,W
subwf LIMIT_hi
btfss STATUS,C
b ALARM_on
banksel GPIO
movwf LIMIT_lo
subwf VOLTY_hi,W
btfss STATUS,C
b ALARM_on
b ALARM_off
Porad resim jestli mam ten kod nastaven dobre, nebo ne.
Ted me napadla takova vec, ja nacitam hodnotu z AD jen kdyz k ni pricitam hodnoty a odecitam. Asi bych mel tesne pred timto vyhodnocenim udelat jeste jednou nacteni hodnot z AD prevodniku, jinak to asi nema zadny smysl…
Dej sem program. A to platí i pro příště, když se na něco ptáš ohledně programu. Já si ten program nepamatuju jak byl původně a nemůžu vědět, jaké jsi udělal úpravy A nevykej mi, jsi na foru!!
Uz to funguje jak ma, doufam ze to bude hotovy. Jsem prepisoval hodnotu VOLTY_hi vysledkem z odecitani…v CIDLA. Ted uz to funguje presne s tou referenci jak ma…
Pro kontrolu to sem davam.
Nevykam Ti, neboj. Heh vyznelo to tak, ja myslel Vy jako komunita main.asm (6.72 KB)