Sari la conținut
ELFORUM - Forumul electronistilor

Problema functionare PIC16F877A - Ajutor !!!


messu

Postări Recomandate

Va rog sa ma ajutati cu o sugestie in urmatoarea problema, pentru ca nu prea am experienta la microcontrollere.Incerc sa realizez o masina de bobinat "cu comanda digitala" (nu c-as avrea nevoie de asa ceva dar vreau sa ma mai "joc"cu microcontrollere). Pentru asta incerc sa folosesc un 877A cu un quart de 20 de Mhz. Problema sta in felul urmator:Am incarcat hex-ul intr-o simulare in PROTEL si totul merge brici ! Toate functiile sint OK (display, butoane, afisaj, etc.). In realitate insa - DEZASTRU !!!Microcontrollerul se manifesta ca si cum s-ar reseta la foarte des. Ceva de genul - reset de 5 ori pe secunada. Cred ca asta se si intampla, dealtfel.... Mi-a mancat sufletul :cry: Initial, m-am gandit ca e vorba de WDT, pe care l-am dezactivat , ... dar tot nimic....Ce sa mai fac ??Microcontroller-ul pare sa functineze, pentru ca am facut un cod mic (care aprinde niste led-uri intr-o anumita secventa si produce un beep) si totul functioneaza perfect. Si pe simulare si in realitate... Atasez si codul, desi nu stiu cat de edificator va fi ....La compilare imi da un "warning" (la argumentul functiei delay) insa la fel imi spune si la codul cu leduri si beep care functioneaza OK.Orice sugestie e binevenita, ca eu sint invatacel...Va multumesc !

Link spre comentariu
  • Răspunsuri 30
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • messu

    14

  • puiu

    9

  • Liviu M

    4

  • crispus

    2

Top autori în acest subiect

1. Din pacate softul este scris in C si eu nu stiu decat asm. Desi unele instructiuni sunt in asm nu ma pot pronunta, atata doar ca s-ar putea, daca WDT este anulat, sa ai un argument prea mare inintea de a face call in tabelele respective. Acesta este un motiv care poate sa duca la acel comportament.

Link spre comentariu

In C ??Sincer credeam ca e asm... Dar nu va contrazic. Codul e generat de Flowcode, nu e scris de mana mea...In C, cu siguranta e partea de sunet (beep) deci partea cu "delay us" . A fost singura sansa de a crea o intarziere de ordinul microsecundelor pentru realizarea beep-ului. Asa ca am introdus o linie de program, in C, ca sa pot realiza intarzierea. Altfel Flowcode nu "stie" delay decat de ordinul milisecundelor...Cu multumirile pentru raspunsul dvs. tre sa recunosc ca momentan nu m-am lamurit ce trebuie sa modific ca sa rezolv problema...Poate-mi mai da cineve vreo idee...

Link spre comentariu

Apropos, exista posibilitatea sa rulez programul in microcontroller, linie cu line, ca sa vad unde se poticneste ?Ca atunci cand se scrie si se verifica liniile unui program inainte de compilare...Scuze daca intreb o prostie.....

Link spre comentariu

1. In program este scris: Code Generator: BoostC Compiler2. Exista posibilitatea de rulare a unei singure linii printr -un simulator. Chiar acest lucru am vrut sa-l fac eu sa rulez programul prin MPLAB SIM, fara procesor, dar trebuie cineva care stie C in care este scris, deoarece in ASM nu merge (initial trebuie compilat). Oricum am observat ca in loc de org 0x0000 foloseste org 0x00000000. Deci folosesti un sistem de operare pe mai multi biti, s-ar putea acest lucru sa nu-i convina si sa ia la un momentat numai 4 octeti(scrisi in hexa) si sa ia pe cei de la stanga in loc sa ia de la drepta si sa ignore zerourile din fata. Cauzele pot fi multe.3. Vrei sa creze un beep de ordinul us?

Link spre comentariu

Nu,nu, nu vreau sa creez un beep de oridinul microsecundelor. Asta a fost calea la care m-am gandit ca sa pot crea un beep.Practic, deschid si inchid un port. Ca sa iasa beep il tin inchis respectiv deschis un interval de ordinul microsecundelor. Nu stiu daca am gandit barbar treaba, dar asta e ... ca idee, beep-ul se aude. Practic se aude un beep si se aprinde un led dupa care se reseteaza si face asta la infinit. Secventa e corecta, ca asa am gandit-o, dar n-ar trebui sa se repete. Practic executia codului se opreste in acel punct si apoi se reia de la capat Practic vreau sa am un beep de confirmare la fiecare apasare a unei taste. Asta e ideea...Oricum beep-ul e dor o parte din proiect. Ca idee, am refacut codul fara beep, insa nu s-a schimbat nimic... :(

Link spre comentariu

Multumesc mult pentru bunavointa.Delay-ul de 201 uS a fost apreciat, sa-i spunem "la bunul simt". Nu tineteam o frecventa anume ci doar sa obtin un beep. Asa ca am procedat la incercari cu cateva valori cand am ajuns la un rezultat multumitor.Cu scuzele de rigoare nu prea stiu ce sa raspund la intrebarea despre registrii. In Flowcode n-am treaba cu ei :) Cuvantul de configurare e: 0x3F7ASa inteleg ca problema e la gbl_FCV_BUTON_RESET, la label 69 ?Ce ma omoara e ca, ambele simulari, in Flowcode si Protel merg perfect, insa in realitate nu ...O sa incerc in weekend sa "sparg" codul in bucati, sa scot macro-urile si sa vad ce se intampla. Poate ma prind... Desi ma gandesc ca e posibil ca diagnosticarea sa fie "o palarie cam mare" pentru mine...

Link spre comentariu

1. Incearca cuvantul de configurare 0x3F3A in loc de 3F7A. S-ar putea sa ai un soc pe tensiunea de alimentare.2. Nu cred ca gbl_FCV_BUTON_RESET este problema deoarece trece de el daca ii crez conditiile necesare.

Link spre comentariu
Vizitator flopir

Daca in simulari merge si practic nu, sa nu ai o problema electica.... 20 Mhz e cam limita maxima a PIC-ului, atentie daca modelul tau suporta... Alta problema pote sa fie de la alimentare, un condensator de 100uF in paralel cu alimentarea ar trebui sa rezolve problema... Dupa asta treci la configurare.... :bataie

Link spre comentariu

Multumesc pentru noile sugestii.Din pacate n-am reusit nimic in weekend, ca am avut 1000 de alte treburi, insa de gandit m-am gandit si la asta.Intr-adevar nici eu nu nu cred ca e problema la "gbl_FCV_BUTON_RESET" pentru ca asa am gandit codul. Practic acolo citesc starea unui switch, asa ca zic eu ca e normal sa stea intr-un ciclu acolo, pana cand switch-ul trece dintr-o stare in alta...Azi o sa incerc sa trec pe o frecvenata mai joasa, 16 sau chiar 10 MHz. Sa vad ce quarz gasesc p-acasa. Oricum cand am probat uC-ul cu softuletul ala mic care aprinde leduri si face beep, l-am pus tot la 20 MHz si totul a mers brici... Sper ca, tot azi, sa incerc si condensatorul pe alimentare si noul cuvant de configurare si am sa va tin la curent cu rezultatele...

Link spre comentariu

Am facut modificarile. Mai putin cea cu quatz-ul, ca n-am avut vreme sa caut unul mai mic.Schimbari sint, dar n-as spune ca in bine... Merge tot prost, dar altfel.... Incep sa suspectez, si eu, tot o problema electrica, desi momentan nu-mi dau seama care.... Comportamentul e foarte ciudat, cel putin pentru mine. Acum beep-aie si se aprind 2 led-uri in loc de unul si cel mai ciudat e ca frecventa se modifica in momentul in care apropii sau departez mana de microcontroller. Oare sint paranormal ?? :rade: Am mai incercat un delay de o secunda intre beep si aprinderea ledurilor si asta executa corect, dupa care face tot ce vrea el, arza-l-ar focu'. Ma gandesc sa bag cate un delay de o secunda dupa fiecare punc in care citesc/scriu un port sau se ia o decizie, poate asa, la viteza mica imi dau seama unde se impiedica... In sfarsit, ideea e ca tot nu merge. Mai investighez si va mai povestesc de si cum .Daca mai aveti sugestii, le astept cu tot interesul !

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