Sari la conținut
ELFORUM - Forumul electronistilor

Creare delay la PIC 16f88 in programat in ASM


Vizitator shadownike

Postări Recomandate

Vizitator shadownike

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
  • Răspunsuri 11
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

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

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 de thunderer
Link spre comentariu
Vizitator shadownike

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

post-207990-0-28304700-1436718032_thumb.jpgPic16f88 fara inv.pdfcounter-sch. originala.pdf

Link spre comentariu

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).

 

Posted Image

Editat de mars01
Link spre comentariu

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

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
Vizitator shadownike

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

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări