mikella Postat August 31, 2015 Partajează Postat August 31, 2015 Am vazut ca s-a mai intrebat despre WATCHDOG TIMER si nu s-a lamurit treaba. Din ce am priceput eu se poate implementa un prescaler care da un interval de 2.2sec. Ce facem cand avem un delay in bucla principala de 2 sec(in cazul meu) plus ceva delay la start signal. Cu ptiunea "auto clear watchdog" cand are loc resetarea wdt? Cica asta se foloseste cand ai delayuri in program. Daca pun wdt enable si bifez si auto clear watchdog compileaza si functioneaza programul. Se poate verifica daca are efect aceasta optiune in timpul functionarii fizice a picului? Daca bag o casuta cu cod C clear_wdt(); si asociez un prescaler 1:128 porneste programul apuca sa afiseze temperatura si umiditatea apoi reseteaza picul. Rog pe cei care stiu cum sta treaba cu wdt poate ma lamuresc si pe mine cum sa il folosesc. Link spre comentariu
mars01 Postat August 31, 2015 Partajează Postat August 31, 2015 (editat) In urmatorul link se explica foarte clar ce te intereseaza: http://www.matrixtsl.com/mmforums/viewtopic.php?f=7&t=11684#p43525 sau aici: http://www.matrixtsl.com/mmforums/viewtopic.php?f=54&t=15264&p=62475&hilit=clear+wdt#p62475 In rezumat, pentru cei care nu cunosc foarte bine lb engleza: - daca folositi delay-uri in program si bifati optiunea "auto clear watchdog" atunci timer-ul watchdog va fi resetat chiar de blocul de delay - daca nu folositi varianta de mai sus atunci trebuie sa introduceti C code block cu instructiunea: MX_CLEAR_WATCHDOG; Editat August 31, 2015 de mars01 Link spre comentariu
mikella Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 Cum fac un delay de ordinul minutelor fără a folosi iconta de delay? Am încercat sa fac un numarator cu timer2 care face +1la fiecare secunda, si sa fac o bucla care se termina când numaratorul ajunge la o anumita valoare( {}while numarator<60 ). In cazul acesta nu mai executa întreruperea la tinere si rămâne blocat programul in bucla. Mai sunt si alte metode de a executa un delay si in acelasi timp sa citesc adc-ul? Link spre comentariu
bercioiu Postat Octombrie 20, 2015 Autor Partajează Postat Octombrie 20, 2015 In macroul interuperii nu are ce sa caute bucla... Posteaza fisierul sa iti adaug delay-ul. Nu-i mare lucru, faci o intrerupere cu o frecventa x, adica programul va trece prin macroul intreruperii de x ori/sec. De fiecare data cand trece prin intrerupere, incrementezi o variabila i (i=i+1), daca i=x, a trecut secunda, resetezi i=0 si incrementezi o variabila pentru secunde sec=sec+1 si tot asa, pana obtii ce valoare ai nevoie pentru sec. Daca ai nevoie de timp mai mult, treci la urmatorul ordin, la 60 sec, incrementezi minut etc. Link spre comentariu
Liviu M Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 Daca ai nevoie de timp mai mult, treci la urmatorul ordin, la 60 sec, incrementezi minut etc. Si uite-asa tocmai ai facut un nou ceas... Link spre comentariu
mikella Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 Se pare ca nu m-am facut inteles. Stiu cum sa fac fac sa număr timpul, nu asta e problema. Bucla nu am in macroul cu întreruperea ci in alt macrou care este accesat la un moment dat in program. Acea bucla are rulează pana un anumit timp este incrementat in macroul cu întreruperea. Buba este ca programul intra in bucla si nu mai executa întreruperea, drept urmare timpul nu mai este măsurat si programul rulează on bucla la nesfârșit. Momentan postez de pe telefon si nu pot adăuga flowchartul,mai pe seara îl postez. Link spre comentariu
aureliu67 Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 Ia vezi, gasesti cele 4 diferente intre al tau si al meu? Astazi am testat in soare plin trackerul si mi sa parut prea insensibil.ca sa functioneze tebuie sa acoper complet fotorezistenta. e problema de montaj cumva? Link spre comentariu
Bandi Szasz Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 (editat) Astazi am testat in soare plin trackerul si mi sa parut prea insensibil.ca sa functioneze tebuie sa acoper complet fotorezistenta. e problema de montaj cumva? Intre cele doua fotorezistente se monteaza un "perete" despartitor astfel cand nu este rotit drept spre soare acel perete o sa tina umbra la una dintre fotorezistente. Uite cam asa. Editat Octombrie 20, 2015 de bandi12 Link spre comentariu
aureliu67 Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 Asa am facut dar oricum nu e ok Peretele meu e si mai mare, 30 cm. Fotorezistentele sunt noi (14kom la intuneric) Link spre comentariu
Bandi Szasz Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 (editat) Asa am facut dar oricum nu e ok Peretele meu e si mai mare, 30 cm. Fotorezistentele sunt noi (14kom la intuneric) Am si eu unul facut de mine, nu stiu ce valori au fotorezistentele ( l-am recuperat din lampi solare sparte). Incearca sa masori cu multimetru diferenta de voltaj intre cele doua fotorezistente cand ambele sunt acoperite si cand unul primeste soare si celalalt are umbra de la acel perete. Eu in plin soare am in jur de 4.8V si cel acoperit de perete are undeva la 4.5-4.6 ( rezistenta in plin soare undeva la 170 ohm si cel acoperit in jur de 380ohm). Diferenta nu este mare dar de ajuns incat ADC-ul sa indice diferenta. Azi la mine nu a fost soare de loc si totusi panoul este rotit spre norii in care se ascunde soarele. Daca exista diferenta intre cele doua fotorez. atunci inseamna ca in soft e problema si adc-ul nu indica diferenta. Sau diferenta este mai mica ca punctul e histerezis, eu am pus 25 valori ADC. Editat Octombrie 20, 2015 de bandi12 Link spre comentariu
mars01 Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 (editat) Se pare ca nu m-am facut inteles. Stiu cum sa fac fac sa număr timpul, nu asta e problema. Bucla nu am in macroul cu întreruperea ci in alt macrou care este accesat la un moment dat in program. Acea bucla are rulează pana un anumit timp este incrementat in macroul cu întreruperea. Buba este ca programul intra in bucla si nu mai executa întreruperea, drept urmare timpul nu mai este măsurat si programul rulează on bucla la nesfârșit. Momentan postez de pe telefon si nu pot adăuga flowchartul,mai pe seara îl postez. Chestia este cat se poate de simpla. Se numeste lucru cu "flag-uri" (sau semafoare, daca iti place traducerea, mie nu, asa ca raman flag-uri). Cum s-a spus mai sus. Ex. Ai o intrerupere data de un timer, care iti apeleaza functia de intrerupere sa zicem la fiecare 1ms. Declari o variabila globala de tip unsigned int, sa zicem numita TIMP. Aceasta va fi incrementata pana ajunge la valoarea dorita. Sa zicem o secunda, deci valoarea variabilei TIMP este atunci 1000 (1000ms = 1sec). Mai declari o variabila tip boolean, tot globala (adica in programul principal), numita FLAG si o initializezi cu 0. Inainte de fiecare incrementare testezi daca este >= 1000. Foarte important sa fie >= si nu simplu =. Daca este >= 1000 atunci TIMP ia valoarea 0 si FLAG ia valoarea 1. Daca nu este >= 1000 atunci TIMP = TIMP +1 In programul principal faci o bucla care se executa cat timp FLAG = 0. Cand FLAG = 1 se va iesi din bucla care se executa cat timp FLAG = 0, deci a trecut 1 secunda si, atentie, vei face o initializare FLAG = 0. Apoi faci ce vrei tu. Daca nu initializezi FLAG = 0 imediat dupa ce iese din bucla, atunci programul nu va functiona cum trebuie. Editat Octombrie 20, 2015 de mars01 Link spre comentariu
Liviu M Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 Eu cred ca dezactiveaza undeva/cumva intreruperile, altfel n-are motiv sa ramana blocat intr-un while. Link spre comentariu
bercioiu Postat Octombrie 20, 2015 Autor Partajează Postat Octombrie 20, 2015 (editat) mikella >> Nu degeaba ti-am spus sa postezi fisierul FC... aureliu67 >> posteaza schema electrica si fisierul FC Editat Octombrie 20, 2015 de bercioiu Link spre comentariu
mikella Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 Eram la servici si nu aveam cum posta. Il postez acuma, sa nu dati cu pietre daca sunt multe greseli! In macro Mod aprindere prima bucla ramane blocat si nu mai face intrerupere. Programul se vrea a fi un controler pentru soba cu peleti si momentan este in faza de schita si nu varianta finala. peleti.txt Link spre comentariu
aureliu67 Postat Octombrie 20, 2015 Partajează Postat Octombrie 20, 2015 (editat) Am umblat la cod si am imbunatatit zic eu considerabil sensibilitatea..Am lasat sa compare doar mediile far acel +5..postez acumarhiva originala.. STrack bercioiu.rar Editat Octombrie 20, 2015 de aureliu67 Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum