Vizitator shadownike Postat Iulie 11, 2015 Partajează Postat Iulie 11, 2015 Rog daca cineva ma poate ajuta cu crearea unui Delay pe intrarea RB0 a PIC-ului 16F88 ,este vorba de un timp mai mare intre actionari ,ex de la 2 sec ..10sec depinde .In acest interval sa nu preia nici o comanda deoarece la un contact mecanic afiseaza eronat(numara in plus). Am incercat o metoda de pe siteul http://www.piclist.com/techref/piclist/codegen/delay.htm?key=delay+routine&from cu un generator dar nu cunosc mai exact unde trebuie atasat acel cod si in ce fisier mai exact,am incercat in (function.inc) dar mi-a iesit alte minuni. AM ATASAT MAI JOS LINKUL de unde am luat schema,functineaza foarte bine dar l-am modificat pe digiti de 100mm si e ok dar persista problema cu delay-ul. http://picprojects.org.uk/projects/counter/counter.htm Inteleg ceva in C dar in assembly sunt varza ,Daca ma puteti ajuta cu un sfat va multumesc anticipat. Probabil in timp am sa invat mai multe,dar e mai greu pt mine pt ca am inceput de curand cu aceste microcontrolere plus ca fac parte din generatia veche si prind mai greu. Multumesc de intelegere Link spre comentariu
mars01 Postat Iulie 11, 2015 Partajează Postat Iulie 11, 2015 Probabil ca sunt colegi care cunosc bine programare assembler dar dvs trebuie sa va enuntati foarte clar problema. Informatiile pe care le oferiti sunt sumare si fara o cursivitate logica. Cei care va pot ajuta nu pot sa va citeasca mintea. Delay intre ce actionari (in ce conditii intervin aceste "actionari")? Actionarile cui? Link spre comentariu
Mircea Postat Iulie 11, 2015 Partajează Postat Iulie 11, 2015 (editat) Cred ca vrea sa zica: pentru 2 secunde se ignora ce se primeste pe RB0.Cred, iar, ca se vrea ca PIC sa stea degeaba in acele 2 secunde. Nu mai lucrez in assembler de mult. Recomand tutorialul de pe Gooligum. Creezi un delay (e explicat acolo) si pui PIC-ul sa faca nimic.LE: RB0 e INT. Trebuie dezactivata intreruperea pe durata dorita ca sa ignore pulsurile parazite. Dar nu e mai simplu sa rezolvi problema hardware mai inainte? Editat Iulie 11, 2015 de thunderer Link spre comentariu
mars01 Postat Iulie 11, 2015 Partajează Postat Iulie 11, 2015 Probabil cu un timer 555. M-am uitat putin prin cod si cum e practic necomentat, "good luck reading it". Oricum acum sunt foarte obosit, poate altcineva il va ajuta pe coleg. Link spre comentariu
Vizitator shadownike Postat Iulie 12, 2015 Partajează Postat Iulie 12, 2015 THUNDERER a inteles perfect ce vreau sa zic,oricum va multumesc pentru amabilitate. iN legatura cu acest contor pe intrare am aplicat un optocuplor pentru ca montajul sa fie separat complet de sursa care il comanda,(adica il face sa numere).El poate fi comandat printr-un contact NO si ii va da optocuplorului printr-o rezistenta tensiunea de 24V.Am vrut acest delay (adica sa nu faca nimic)dupa prima comanda(impuls)apoi 2 secunde repaus pentru ca intradevar "utilajul" care comanda releul sau un senzor de proximitate da uneori si informatii eronate si as vrea sa anulez acest lucru,am incercat cu capacitati pe intrare dar nu mi se pare o solutie viabila.Practic daca utilajul face 20 piese ma trezesc ca-mi numara vreo 24 de bucati.Schema facuta de mine si luata de de pe siteul care l-am mentionat este modificata sa functioneze cu Digiti de 100mm,incerc sa atasez o poza.Aici un555 nu cred ca are cu ce sa ma ajute,oricum sunt deschis la orice sugestie. MULTUMESC Pic16f88 fara inv.pdfcounter-sch. originala.pdf Link spre comentariu
mars01 Postat Iulie 12, 2015 Partajează Postat Iulie 12, 2015 (editat) Daca aveti schema deja facuta, incercati sa introduceti un rezistor de cca 10 ... 30 ohmi intre pinul pozitiv al lui C1 si pinul 5 al optocuplorului OK7 iar intre pinul pozitiv al lui C1 si pinul RB0 introduceti un buffer trigger Schmidt. Poate rezolvati asa si scapati de semnale false. Daca circuitul este folosit intr-un cadru industrial aveti grija sa filtrati bine tensiunea de alimentare si nu strica sa ecranati tot si sa legati la impamantare ecranul. Ar fi bine si ca in controller sa fie activat watchdog-ul dar .... asamblare, phuah. LE: Iar in ceea ce priveste utilizarea unui 555, daca am inteles corect ce doriti, la o simpla cautare pe Google a aparut acest rezultat: https://www.youtube.com/watch?v=FZxpw6_lgC0 Un circuit simplu. LLE: OK. Inteleg ca aveti nevoie ca dupa un impuls (care nu stiu cum decideti daca este corect sau nu) timp de 2 secunde intrarea RB0 numai este activa, apoi devine din nou activa, dar cum decideti daca prima activare sosita dupa acest delay este valida? O alta idee. De ce nu folositi doua switch-uri si daca si numai daca ambele sunt activate (LOW), doar atunci aveti la iesire un semnal HIGH? Plasati switch-urile judicios si rezolvati problema. Evident puteti si aici sa folositi optocuploare si ajustati logica ca sa obtineti in final un semnal HIGH pt fiecare activare. Cam ca in schema (contine doua buffere inversoare tip trigger Schmidt si o poarta AND dar puteti tot atat de bine sa folosti doua buffere neinversoare trigger Schmidt si o poarta NAND; depinde ce aveti la indemana). Editat Iulie 12, 2015 de mars01 Link spre comentariu
mars01 Postat Iulie 12, 2015 Partajează Postat Iulie 12, 2015 (editat) Oops. De fapt semnalul pe RB0 este activ LOW. In schema de mai sus folositi o poarta NAND in locul AND-ului. Sau daca folositi buffere trigger Schmidt neinversoare atunci folositi o poarta OR. Editat Iulie 12, 2015 de mars01 Link spre comentariu
masterpic77 Postat Iulie 13, 2015 Partajează Postat Iulie 13, 2015 Vad ca PIC-ul lucreaza la 8MHz intern ; uite un delay de aprox 8.5 secunde in ASM , va trebui sa declari variabilele contor1,2,3 , modificand valorile lor poti modifica delay-ul : Delay_8_5s movlw D'255' movwf contor1 loop2 movlw D'255' movwf contor2 loop3 movlw D'255' movwf contor3 decfz contor3,1 goto $-1 decfsz contor2,1 goto loop3 decfsz contor1,1 goto loop2 return Link spre comentariu
Vizitator shadownike Postat Iulie 13, 2015 Partajează Postat Iulie 13, 2015 Salut ,in legatura cu declaratia contor 1,2,si 3 unde mai exact trebuie sa-l declar in fisierul main.inc ,asm.inc?si codul de care mi l-ai dat il pun in function.inc?.Aici sunt derutat,nu putea sa fie facut intr-un singur fisier? In orice caz MULTUMESC foarte mult o sa ma "lupt" cu el ,voi incerca ceva din variantele propuse si mai invat cate ceva ,binenteles altcumva intelegi cand citesti si altceva si mult mai de ajutor este cand cineva are rabdare sa-ti explice ce si cum.Pe vremuri am fost doar un depanator de televizoare difuzoare etc.,dupa, 12 ani electrician ,deci am pierdut multDoar de 1 an de zile am inceput sa invat Arduino si un pic C si Ladder pt PLC..Assembly mi se pare groaznic Link spre comentariu
masterpic77 Postat Iulie 14, 2015 Partajează Postat Iulie 14, 2015 Salut , declararea contor1,2,3 o faci in .asm undeva la cbloc 0x20 ( inainte de endc) . Codul de mai sus trebuie sa-l copiezi in function.inc , iar din main.inc il apelezi unde ai nevoie cu call Delay_8_5s . Link spre comentariu
Mircea Postat Iulie 14, 2015 Partajează Postat Iulie 14, 2015 Shadownike, sunt atatea alternative la ASM. C, Basic, Pascal... care mai de care vizuale si intuitive. Programe mai mult sau mai putin free.E doar alegerea ta catre care compilator vrei sa te indrepti. Link spre comentariu
Vizitator shadownike Postat Iulie 14, 2015 Partajează Postat Iulie 14, 2015 THUNDERER sigur ma voi decide pe C,dar am insistat cu acest PIC si programul lui pentru ca pe asta l-am gasit free,si am modificat schema electrica ,deci este construit deja ce sa mai fac cu el?Sincer am construit cateva bucati acum 2 ani iar eu m-am apucat sa studiez modul de programare acum un an si asta dintr-o greseala .Niste neintelegeri la fostul loc de munca (unde gestionam 15 Roboti Fanuc de sudura)am plecat si m-am angajat la o alta firma unde m-am imprietenit cu un coleg care mi-a deschis ochii in acest domeniu,dar acum am fost rechemat la locul vechi de munca cat si fostul coleg nu mai lucreaza nici el acolo,pur si simplu nu mai dau de el. Cel putin va multumesc ca a-ti fost de treaba si nu m-ati criticat pt ignoranta mea,in continuare voi incerca metodele pe care mi le-ati recomandat.Sa aveti o zi buna. 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