Sari la conținut
ELFORUM - Forumul electronistilor

Lucreaza cineva cu FLOWCODE ?


bercioiu

Postări Recomandate

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

Link spre comentariu

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

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 de ardiles
Link spre comentariu

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

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

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

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

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 de ardiles
Link spre comentariu

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

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

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

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