Sari la conținut
ELFORUM - Forumul electronistilor

Releu de nivel cu pic


Postări Recomandate

  • Răspunsuri 82
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

Zice ca s-a pornit o noua conversie inainte ca timpul de asteptare acordat conversiei anterioare sa fi expirat.

Exista o practica, in cazul in care nu se doresc toti cei 10 biti de precizie ADC, pentru a grabi conversia, sa se comute clock-ul ADC pe o viteza ilegal de mare la generarea ultimilor biti (biti nedoriti), iar rezultatul va avea acei ultimi biti distrusi, ei fiind oricum ignorati de program. Chestii socoteli. :pol: Oricum, daca e asa, in cazul proiectului de fata mi se pare putin exces de zel.

 

Apasa click-dreapta pe uC apoi Edit Proprieties. Apare o fereastra. In casuta Advanced Proprieties selecteaza ADC Minimum Acquisition Time si introdu o valoare mica: 2u.

Link spre comentariu

Va salutFunctioneaza insa nu sunt pe deplin multumit, nu stiu in realitate cum functioneaza, dupa testele facute de Ticu se pare ca ar fi ok. Acum ca mi-a captat atentia si m-am implicat suficient cat sa fiu curios ce corectii trebuiau facute in program, vorba cuiva foarte drag spunea cam asa:ca sa inveti trebuie sa-ti trezesc interesul ca sa ai suficienta rabdare sa intelegi.Linia de program pe care 10vid a sters-o, este vorba de: "__idlocs 0xFFFF"conform mesajului dat de proteus: Program or EEPROM data has invalid address (2000) for this device.Si mai este vorba de foarte multe linii care au fost sterse, eu am sa trec aici ultimile patru: ADDLW 0xFF ; b'11111111' d'255' ADDLW 0xFF ; b'11111111' d'255' ADDLW 0xFF ; b'11111111' d'255' RETLW 0x47 ; b'01000111' d'071' "G"rezolva problema si proteus poate simula.Daca gresesc il rog pe 10vid sa ma corecteze. Mai este ceva ce nu-i dau de cap, spre exempluam dezasamblat fisierul hex waterscris3.hex, am sters linia "__idlocs 0xFFFF", am asamblat cu mpasmsi am obtinut fisierul hex, acest fisier l-am incarcat in 12F675 din proteus, acum programul estepregatit sa simuleze (nu respinge simularea), dar nu functioneaza, nici un led nu se aprinde, undegresesc? Altfel, am dezasamblat fisierul waterscris3_b.hex de la 10vid (care functioneaza in proteus)si l-am reasamblat, fisierul hex obtinut l-am incarcat in 12F675 din proteus si se intimpla ca mai sus,nu functioneaza, desi proteus nu respinge simularea. Mentionez ca folosesc PICDisasm v1.6 pentrudezasamblare.

Link spre comentariu

Eu nu l-am dezansamblat, ci am sters acele linii direct din hex.Ce am sters eu:-o gramada de spatiu gol (interpretat ca ADDLW 0xFF, dar care de fapt = 0x3FFF = 111111 11111111)-valoarea OSCCAL din capatul memoriei, specifica fiecarui cip in parte, nu se scrie din hex-device ID, 4 wordsMai trebuiau sterse si liniile cu continutul eeprom, acum se vede dupa dezansamblare ca nu contin nimic important decat numele, data si site-ul autorului, incadrat de blankuri.Cred ca acest hex nu e altceva decat un dump de memorie de pe un cip preprogramat. Asamblorul nu genereaza spatiu gol.Partea cea mai interesanta e urmatoarea: Exista o greseala, un invalid opcode (vezi imaginea atasata) in program, semnalat si de proteus (TRISA instruction??), sau de alte dezansambloare (TRIS PORTA??), sau simplu DB 0x65 de catre PICDisasm, care evita sa aduca instructiunea care are acel cod (de altfel nespecifica acestui procesor) in sursa si se multumeste sa declare locatia ca de tip data (DB).Totusi PICDisasm greseste, uita ca ordinea celor doi bytes intr-un word e MSB-first cand se declara date in bytes, si ii inverseaza, din 0065h face 6500h (00 din coada e bagat in completare de asamblor atunci cand in sursa se dau un numar impar de bytes). 6500h e un numar prea mare ca sa incapa in cei 14 biti cati are o locatie de memorie la PIC12Fxxx (limita e 3FFFh), astfel ca MPASM da un warning ca va trunchia acea valoare. Astfel se ajunge la 2500h (s-a taiat bitul cel mai semnificativ). Si surpriza: 2500h e codul unei instructiuni valide de data aceasta, si anume CALL 500h, adica saltul in necunoscut. :nebun: Normal ca nu mergea dupa reansamblare.Am incercat sa pun NOP in locul acelui cod ilegal, dar tot n-a mers.Am intrat cu debugger-ul sa vad ce se intampla cand se executa acel cod misterios, si am vazut ca registrul TRISIO isi modifica toti bitii din 1 in 0 facand pinii output. Si asta fara ca TRISIO sa fie macar selectat. :nas: Foarte curios.Deci in concluzie, ca sa mearga reansamblat, la adresa 132h textul incorect dat de PICDisasm DB 65h trebuie inlocuit cu DB 0, 65h.Pe de alta parte, greseala facuta de PICDisasm nu e asa grava, stiut fiind faptul ca la PIC12Fxxx directiva DB nu se foloseste niciodata. (se folosaeste DT in schimb)

post-39383-1398293273_thumb.gif

Link spre comentariu
  • 1 an mai târziu...

Buna ziua,Eu as vrea sa fac o comanda pentru o pompa a unui drenaj pe care deocmadata nu am unde sa il racordez la vreo canalizare ,scopul automatului este de a mentine nivelul sub senzorul S2, ideea este ca daca apa ajunge la senzorul S1 pompa sa porneasca pina ce nivelul coboara la senzorul S2 si chiar daca senzorul S2 va mai comuta accidental pompa sa nu faca nimic decit doar in caqzul in care senzorul S1 a fost actionat atunci sa se ia in considerare "raspunsul" senzorului S2, in ideea ca senzorul S2 comuta parazit.Se poate implmenta cu microcontroller aceasta schita?Multumesc

Link spre comentariu

Ti-am atasat pentru pompa de drenaj simularea si hexul. Senzorii actioneaza spre masa. S1 este superior si porneste pompa, S2 este inferior si opreste pompa. Daca nu consuma foarte mult pompa, actionarea se poate face cu un optocuplor si un triac. Daca vrei varianta asta, iti postez o schema.Spor la treaba!

post-79176-139829692331_thumb.jpg

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