Sari la conținut
ELFORUM - Forumul electronistilor

Lucreaza cineva cu FLOWCODE ?


bercioiu

Postări Recomandate

Are cineva idee cum setez oscillator intern la 18f4550?

Facand un upgrade automatului de cafea am constatat ca mai am nevoie de cel putin un pin si sa renunt la oscilatorul extern.

Am incercat toate combinatiile in project option si se misca al naibi de greu.Am introdus si o portiune de "c"  FOSC = INTOSC_HS

  osccon=0x78

dar flowcode nu imi compileaza codul.

Link spre comentariu

Nu m-am uitat in datasheet, dar incearca cu un cod C la inceputul programului:

osccon = 0xF2 // 8MHz intern

"FOSC = INTOSC_HS" este redundant, daca ai trecut la setarile picului clock intern.

Frecventa maxima cu ceasul intern este de 8MHz.

Editat de bercioiu
Link spre comentariu

Din nou greseala de noob.Nu puneam  "punct si virgula" dupa cod si deaia nu compila.

E mai aproape de realitate ,oricum nu imi trebuie precizie de ceas.

Ma mai gandeam totusi ca la sursa folosita cu 18f252 sa ma folosesc mai mult de acest pic avand in vedere ca e mult prea "destept" pentru al folosi doar pentru o sursa banala.

Voi intra in posesia unui L4970 si ma gandeam ca ar merge realizata o sursa digitala(reglajul sa fie digital).Se poate implementa un programel care sa simuleze un divisor rezitiv reglabil cu care sa controlez feedback-ul?La iesirea unui pin sa am cel mai probabil o frecventa reglabila pe care voi vedea eu cum sa o transform in tensiune.

Link spre comentariu

Am si eu nevoie de ajutor daca se incumeta cineva. Am inceput si eu un proiect in Flowcode5 si nu reusesc sa-l duc la capat.Schema ar trebui sa functioneze asa: la pornire sa se pozitioneze pe programul 1 (p1);din butonul SET sa se poata alege intre p1...p4 ; la apasarea butonului START sa ruleze programul selectat din SET si sa se opreasca dupa cele 3 cicluri. Pana aici am reusit (functioneaza) dar eu mai am nevoie si de o iesire PWM reglabil din potentiometru care sa functioneze pe tot timpul rularii unui program (PWM-ul poate sa functioneze tot timpul daca e mai simplu).

Oare este realizabil asa ceva?

Va multumesc

PROGRAM_SI_PWM.rar

Link spre comentariu

Ai delay-uri mari, alea trebuiesc tratate in intrerupere. Iti creezi un "ceas" intr-un macro al intreruperii, care iti "bate" secunda, iar in macrourile programelor, pui if-uri in functie de secunda in care te afli, in felul acesta, renunti si la buclele macrourilor. Daca nu ai inteles, iti fac eu un exemplu.

Referitor la PWM, nu trebuie sa-l pui in bucla, ori il pui in main, ori pui in main un goto spre macroul pwm-ului. De asemenea,initializarea pwm-ului trebuie facuta o singura data, la inceputul programului.

Link spre comentariu

Functioneaza! Pana la urma cred ca am inteles si cum functioneaza proiectul,am mai facut si eu modificari,eu aveam nevoie de temporizari mai lungi.De asemeni am modificat sa nu se poata schimba programul cat timp ruleaza iar la o apasare mai lunga a butonului start sa se opreasca.Am prins curaj si am facut un proiect si cu 16F628 cu modificarea PWM-ului din butoane. Varianta cu 690 am testat-o practic. Acum vin intrebarile :scarpin .

1.Puteti sa-mi spuneti si mie cum ati calculat valoarea TICK-ului?

2.Oare 16F628 ruleaza la 8Mhz cu oscilator intern (nu m-am descurcat cu catalogul)?

3.La varianta cu 628 se poate memora ultima valoare setata a PWM-ului (si cum)?

Multumesc anticipat si scuze ca va deranjez din nou.

PROGRAM_SI_PWM_690.rar

PROGRAM_SI_PWM_628.rar

Editat de bentanioan
Link spre comentariu

1. Foarte simplu, dupa ce setezi parametri intreruperii, vezi in partea de jos frecventa rezultata. In cazul tau este de aproximativ 30 Hz. Asta inseamna ca programul va trece prin macroul intreruperii de 30 de ori pe secunda. De fiecare data cand trece prin macro, va incrementa variabila Tick cu 1. Cand Tick a ajuns la 30, este clar ca a trecut o secunda. Daca ai nevoie de timpi sub o secunda, calulezi cate "tick-uri" ai nevoie.

2. 16F628 are ceas intern de 4MHz. Pentru asta, sa nu mai modifici toate setarile programului, schimbi prescalerul la 125 si pastrezi frecventa de 30 Hz.

3. Pentru memorare, adaugi un eeprom. Dupa ce incrementezi/decrementezi count1, il scrii intr-o locatie a eeprom-ului. La pornirea programului, citesti locatia respectiva si o pui in variabila count1.

 

Daca nu te descurci, iti fac un exemplu.

 

L.E. Trebuie sa ai grija cand lucrezi cu eepromul pentru ca are un numar limitat de scrieri! Asta inseamna ca trebuie sa scrii in el doar atunci cand esti sigur ca s-a modificat ceva. Sa ai grija sa nu-l pui in vreo bucla sa scrii in el in bucla, pentru ca in cateva minute, l-ai stricat.

Editat de bercioiu
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