bercioiu Postat Noiembrie 10, 2014 Autor Partajează Postat Noiembrie 10, 2014 Cum iti spuneam mai sus, fiecare inrerupere cu macroul ei. In momentul in care se intrunesc conditiile ca o intrerupere sa se execute, programul lasa balta ce facea, executa macroul intreruperii respective, dupa care isi reia cursul din punctul de unde a fost intrerupt. Eventual, pune fisierul *.fcf sa vad ce nu-ti iese. Tu tot mai ai o legatura cu curentul, dar eu am o cu totul alta meserie din care-mi castig painea si cu toate astea, nu a fost priect sa nu pot sa-l rezolv cu Flowcode... Am facut de la ceasuri nixie, la controlere pentru centrale termice destul de complexe, sau incubatoare automate, cu acest program pentru idioti (folosit de baieti destepti). Majoritatea proiectelor mele sunt publice pe forum... 1 Link spre comentariu
ardiles Postat Noiembrie 10, 2014 Partajează Postat Noiembrie 10, 2014 asa este normal dar la mine atunci nu-mi dau seama/nu-mi dadeam seama de ce simula/functiona anormal... acum a venit si treaba cu TMR1 care ma determina sa complic mai tare complicarea si ma sacaia anomalia descrisa. in alta ordine de idei, cate variabile poate sa "duca" un microcontroler? imediat ce dispun de niste banuti, cumpar direct varianta profi...daca nu cea profesionala, macar cea pentru PIC-uri. Link spre comentariu
Liviu M Postat Noiembrie 10, 2014 Partajează Postat Noiembrie 10, 2014 @LiviuM... practic dezactivezi intreruperea respectiva?Nu, doar stergi evenimentul din "memorie". Link spre comentariu
ardiles Postat Noiembrie 11, 2014 Partajează Postat Noiembrie 11, 2014 (editat) adica resetezi o variabila care s-a schimbat doar daca microcontrolerul a tratat rutina de intrerupere? variabila care nu are legatura cu macro-ul intreruperii... Editat Noiembrie 11, 2014 de ardiles Link spre comentariu
bobinatorul Postat Noiembrie 17, 2014 Partajează Postat Noiembrie 17, 2014 Salut din nou! Am realizat fizic montajul si functioneaza exact ca in flowcode mai putin variabilele. De ce in program acestea pot lua valori pana la 65535 dar in "lumea reala" nu sare de 255?Am nevoie de a contoriza pana la 1000 de impulsuri de la contorul volumetric. Stiu ca pot intercala un divisor dar totusi ma racaie treaba asta. Apropo,ar fi posibil sa ne "combinam" pentru varianta profi? Link spre comentariu
Liviu M Postat Noiembrie 17, 2014 Partajează Postat Noiembrie 17, 2014 65535 este un numar de tip (unsigned) integer (16 biti), 255 este un (unsigned) char (byte). Ca sa modifici "lumea reala" trebuie sa folosesti variabilele potrivite. Link spre comentariu
bercioiu Postat Noiembrie 17, 2014 Autor Partajează Postat Noiembrie 17, 2014 Daca ai folosit variabile de tip "UInt" variabila poate lua valori pana la 65535. Cum ai concluzionat ca in practica nu ia valori peste 255? Vezi ca daca folosesti locatii EEPROM, acolo poti salva doar variabile simple de 8 biti (pana la 255). Pentru a contoriza valori pana la 1000, poti folosi variabile de tip "Int" (-32768;32767). De fapt, eu cand lucrez cu encoder, variabile din astea folosesc (Int, signed) pentru ca in momentul in care rotesc intr-un sens, la variabila adun "+1" iar cand rotesc invers adun "-1", adica scad... Link spre comentariu
Vizitator cpu54321 Postat Noiembrie 19, 2014 Partajează Postat Noiembrie 19, 2014 Buna ziua Ma numesc Radu si de ceva vreme(o jumatate de an) am incput sa ma joc cu flowcode5 si pic-uri de doua zile tot incerc sa folosesc un Encoder mecanic pt a incrementa si decrementa o variabila(in functie de sensul de rotire) am tot studiat pe forum si modele de program dar nu am reusit poate cineva sa ma ajute cu un sfat, un exemplu.... folosesc un PIC 16F628A, un afisaj LCD 16x2 si un Encoder mecanic cu 3 pini A C B Precizez ca pana la momentul actual nu am inteles si nu am folosit intreruperi si din ce am studiat am inteles ca asa s-ar putea rezova Multumesc anticipat Link spre comentariu
ardiles Postat Noiembrie 19, 2014 Partajează Postat Noiembrie 19, 2014 (editat) deci, in primul rand vreau sa mentionez ca sunt incepator! insa, de curand(deci e calda informatia), m-am jucat cu componenta encoder din flowcode si am un pic idee, cred ca pot sfatui(cred ca spre bine), pe alt incepator. in al doilea rand, pentru a folosi componenta encoder, din flowcode V5(sau v6), trebuie sa ai licenta de flowcode profesional. componenta encoder din flowcode 5 nu poate fi simulata in flowcode! se compileaza si se simuleaza(se si(cacofonie)), in protheus sau altceva ori fizic breadboard(eu asa am facut, e mai sfant). daca vrei sa simulezi componenta encoder, in flowcode, poti sa o faci doar in flowcode v6. dar, sa trecem la ale noastre, presupunand ca ai Flowcode profesional: 1. componenta encoder din flowcode, V5, o gasesti in: Mechatronix, quadrature encoder, si este doar cu 2 pini, 2. o adaugi pe "panoul de lucru"... 3. click dreapta pe ea, conexiuni - alegi pinii unde vrei s-o conectezi(doar pini cu IOC-intrerupt on change) 4. in main, "call component macro" - ENABLE, nu ai posibilitatea de a intoarce variabila. 5. tot in main, activezi intreruprea PORT(IOC), 6. la proprietatile intreruperii PORT(IOC), select pins - alegii aceiasi pini unde ai conectat encoderul - "trigger on falling & rising edge"(in realitate scrie - trigger on both edge si pinii cu IOC sunt bifati cu verde) - faci click pe acei pini pana apar verzi; 7. creezi macro-ul ce va fi rulat cand exista "schimbari de stare" pe pinii IOC(ce i-ai ales mai sus); 8. in macroul ce este apelat de IOC, creat la pct.7, : call component macro - check for changes si intorci variabila - "X", sau numele preferat de tine(asta va fi valoarea incrementata/decrementata de encoder. 9. in bucla din main: call component macro - read counter, aici vei intoarce variabila, aceeasi cu cea de la pct.8, de simulat in protheus, se face simplu, doua butoane, insa ori activezi pull-upurile interne(pe pinii encoderului), ori legi rezistoare de pull-up pe aceiasi pini. butoanele le faci cu punere la masa. LE: daca nu te superi, ce vrei sa faci cu acea aplicatie? Editat Noiembrie 19, 2014 de ardiles Link spre comentariu
bobinatorul Postat Noiembrie 19, 2014 Partajează Postat Noiembrie 19, 2014 Intr-adevar aam folosit variabile Uint pe care le-am memorat intr-o locatie am considerat ca nu am nevoie de valori negative.Voi incerca si cu cele de tip Int dar la fel cred va depasi cei 8 biti.Cum am concluzionat? Incerc pur si simplu sa incrementez variabila dar la 255 se reseteaza cu toate ca in flowcode se duce pana la ce valoare am nevoie.Picul folosit este 18f4550. Link spre comentariu
ardiles Postat Noiembrie 19, 2014 Partajează Postat Noiembrie 19, 2014 vrei sa faci numarator de spire? Link spre comentariu
Vizitator cpu54321 Postat Noiembrie 19, 2014 Partajează Postat Noiembrie 19, 2014 Multumesc ardiles pentru promtitudine am sa incerc in seara asta..... vreu sa folosesc encoderul mecanic rotativ pt navigare in meniu....la diverse aplicatii Link spre comentariu
ardiles Postat Noiembrie 20, 2014 Partajează Postat Noiembrie 20, 2014 cu mare placere! mai departe vei "jongla" din variabila incrementata/decrementata de "encoder", variabila "X" de la pct.8, in exemplul meu, este botezata "encoder", este numar intreg(Z), ia valori de la -32 pana la +32... poate te ajuta sa intelegi, exemplul meu, daca encoder este 0, aprinde un led, daca encoder <-1, stinge led-ul aprins anterior si aprinde alt led, daca encoder>1, aprinde alt led. exemplu cu componenta encoder - flowcodeV5.rar Link spre comentariu
Vizitator cpu54321 Postat Noiembrie 20, 2014 Partajează Postat Noiembrie 20, 2014 Am reusit aseara sa folosesc encoder-ul Nu a mers din cauza a eu nu am stiut ca doar I/O de la B4 la B7 sunt cu IOC dupa ce ma conectat encoder-ul pe pinii buni a functionat Multumesc Link spre comentariu
ardiles Postat Noiembrie 21, 2014 Partajează Postat Noiembrie 21, 2014 (editat) ma bucur! fizic, pe placa de test? ce tip de encoder ai folosit? cumva are buton push in centru? Editat Noiembrie 21, 2014 de ardiles 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