UDAR Postat Septembrie 27, 2015 Partajează Postat Septembrie 27, 2015 Încă o întrebare , ai preferințe pentru vreun PIC anume ? Din motive de ușurința programării/testării ar merge unul în capsulă DIP. Ca număr de pini , minim 6 pentru LCD , 2-3 pentru butoane , unul ieșire . Deci 14-18 pini ar fi OK . Link spre comentariu
quinn Postat Septembrie 27, 2015 Autor Partajează Postat Septembrie 27, 2015 am pic16f628A Link spre comentariu
UDAR Postat Septembrie 27, 2015 Partajează Postat Septembrie 27, 2015 Chiar mă gândeam să-l propun . Am și eu deci nu mai trebuie să comand altul pentru teste . Cred însă , trebuie să verific , că nu am decât cuarțuri de 16 Mhz nu și de 20 . Link spre comentariu
Bandi Szasz Postat Septembrie 27, 2015 Partajează Postat Septembrie 27, 2015 (editat) Daca e la soft te pot ajuta si eu dar testare efectiva doar in proteus (simulare) urmad ca sa fie testat in realitate de tine. Daca doresti o schema + soft deja testata in realitate atunci te las pe mana lui UDAR daca a zis ca are el componentele necesare testarii in realitate. Editat Septembrie 27, 2015 de bandi12 Link spre comentariu
UDAR Postat Septembrie 27, 2015 Partajează Postat Septembrie 27, 2015 Păi am putea colabora - deși e crunt de lucrat pe codul altuia ! Dacă ai timp și chef , poți pune o variantă aici . Eu sunt relativ modest la programare PIC dar la proiectul ăsta cred că mă descurc , totuși ajutorul unuia mai priceput e binevenit . PS Eu lucrez doar în MikroC. Link spre comentariu
Bandi Szasz Postat Septembrie 27, 2015 Partajează Postat Septembrie 27, 2015 Daca am maine timp o sa fac o prima versiune si o pun aici. Si eu tot cu MikroC lucrez. Link spre comentariu
Bandi Szasz Postat Septembrie 28, 2015 Partajează Postat Septembrie 28, 2015 (editat) Am facut eu o prima versiune, am atasat simularea in proteus cat si codul sursa in mikroC. L-a pornire intra meniul de setare a intervalului ON ( OFF se calculeaza automat din moment ce ON+OFF = 1 ora) cu butonul 2 se incrementeaza minutele cu butonul 3 se incrementeaza secundele (pentru "pedalare" la valori mari de ex. 50s se tine butonul apasat")dupa ce setarea este facuta se apasa butonul 1 se afiseaza un mesaj de confirmare si incepe ciclul cu intervalul ON. Daca se doreste modificarea intervalului in timpul functionarii se apasa butonul 1 si se seteaza din nou ca la pornire. Sensibilitatea butoanelor eu personal le prefer cu un delay de 250ms dar poate difera la alte persoane deci se pot ajusta dupa o testare efectiva in realitate. Cateva poze in proteus. TimerWithLCD.rar Editat Septembrie 28, 2015 de bandi12 1 Link spre comentariu
UDAR Postat Septembrie 28, 2015 Partajează Postat Septembrie 28, 2015 (editat) M-am uitat peste cod și sunt convins că merge , mai ales că a fost și simulat . Eu nu pot încerca simularea , am doar versiunea 7. Experiența se vede - eu mă chinuiam să implementez butoanele cu IOC , evident că e mai simplu și mai eficient așa cum ai făcut . Deci, @quinn, de ce n-ai încerca , fără să mai stai două-trei zile după mine ? Plus minim o zi să testez eu . Dacă nu , mergem în paralel . Editat Septembrie 28, 2015 de UDAR Link spre comentariu
jurevycius3 Postat Septembrie 30, 2015 Partajează Postat Septembrie 30, 2015 Se poate adauga si ore in program? Link spre comentariu
Bandi Szasz Postat Septembrie 30, 2015 Partajează Postat Septembrie 30, 2015 (editat) Se poate adauga si ore in program? Se poate modifica programul sa fie posibila si adaugarea orelor, dar atunci trebuie modificata si timpul de OFF findca este calculat automat din moment ce ON+OFF = 1 ora sau poate fi calculata din ore daca asa trebuie ceva gen ON+OFF = 24 ore in caz contrar trebuie modifiact astfel incat sa se seteze separat On si Off. Editat Septembrie 30, 2015 de bandi12 Link spre comentariu
UDAR Postat Septembrie 30, 2015 Partajează Postat Septembrie 30, 2015 @bandi 12 Poate o să folosească altcuiva munca ta căci văd că OP nu mai este interesat. Link spre comentariu
core Postat Septembrie 30, 2015 Partajează Postat Septembrie 30, 2015 @bandi: msTime ar fi bine sa fie declarata "volatile int", sa stie compilatorul sa nu o optimizeze ca o variabila normala. Link spre comentariu
Bandi Szasz Postat Septembrie 30, 2015 Partajează Postat Septembrie 30, 2015 Da se pare ca a abandonat proiectul, poate o sa fie folositor pentru altcineva. @Core, interesanta treaba o sa ma documentez, sincer sa fiu nu prea am auzit de "volatile" posibil sa-l fi intalnit pe undeva dar nu l-am retinut. Ms. Link spre comentariu
mars01 Postat Octombrie 1, 2015 Partajează Postat Octombrie 1, 2015 @core are dreptate. Variabila msTime trebuie declarata ca "volatile". Pe langa partea cu optimizarea compilatorului, faptul ca de multe ori compilatorul ne salveaza din mici "greseli" nu trebuie sa ne faca sa nu urmam o cale a bunelor practici. O variabila declarata ca "volatile" va fi stocata in RAM si nu va fi incarcata din registrii controller-ului. In acest fel compilatorul stie ca valoarea acstei variabile poate sa fie actualizata de evenimente in afara functiei main. Altfel, daca varibila este declarata simplu, atunci se poate ca atunci cand este folosita in program, sa se incarce valoarea prezenta in registru (o valoare precedenta) fara a se mai incarca din RAM in registru (se face un fel de shorcut, dar valoarea adevarata este cea din RAM in acest caz). Ca si regula simpla, cand o variabila globala este modificata de o intrerupere (cum este cazul aici pentru msTime), ea trebuie declarata cu cuvantul cheie "volatile" pe langa tipul variabilei. Ex: // cand msTime este modificat de o intrerupere int msTime; // WRONG volatile int msTime; // GOOD Link spre comentariu
UDAR Postat Octombrie 1, 2015 Partajează Postat Octombrie 1, 2015 Am învățat ceva , mulțumesc. Deși știam în principiu chestia cu volatile , nu mi-am bătut capul cu ea , credeam că nu contează. De fapt n-am realizat că acțiunile compilatorul pot fi diferite de așteptările noastre , dacă nu este instruit corespunzător. PS Am pus pe dreapta de o vreme un proiect cu mai multe întreruperi .... Poate asta era problema . O să verific cât de curând. 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