bentanioan Postat Septembrie 8, 2016 Partajează Postat Septembrie 8, 2016 La serviciu il folosesc numai pentru mine (proiecte mici) mai mult pentru exercitiu. Am dezinstalat bitdefender si merge perfect , deci antivirusul se pare ca-l incetineste. Link spre comentariu
bobinatorul Postat Septembrie 9, 2016 Partajează Postat Septembrie 9, 2016 (editat) Salut Vreau sa folosesc 2 timere (tmr0 si tmr1) si am o mica problema. Timerele sunt conditionate de un buton care ar trebui sa declansze intreruperile. Tmr0 lucreaza cand apas butonul insa Tmr1 porneste inca de la inceputul programului.Este normal? M-am uitat prrin datasheet si am gasit asta TMR1ON: Timer1 On bit 1 = Enables Timer1 0 = Stops Timer1 In conditie ar trebui sa pun un cod in care bitul 0 sa fie 1? ceva de genu TMR1ON=1 iar la incput sa pun TMR1ON=0 ? Sau altfel stau treburile? Mai concret cum as putea ca din xsecunde in xsecunde sa afisez ceva. Ma mai gandeam la o impartire cu x in care restul sa fie 0 si atunci sa afisez altceva. Multumesc Editat Septembrie 9, 2016 de bobinatorul Link spre comentariu
bercioiu Postat Septembrie 9, 2016 Autor Partajează Postat Septembrie 9, 2016 (editat) Tmr-urile pornesc dinn momentul declararii lor... Trebuie sa folosesti macrourile lor pentru a le intrebuinta in functie de necesitatile tale. Editat Septembrie 9, 2016 de bercioiu Link spre comentariu
bobinatorul Postat Septembrie 9, 2016 Partajează Postat Septembrie 9, 2016 Am facut macrourile asa cum spui numai ca la macroul tmr1 se intampla balarii.Nu stiu ce tampenii am facut pe acolo Am lasat balta ca oricum ma chinuiam de 2 zile si intre timp am mai citit matematica de clasa a 6-a si am facut analogia cu ajutorul functiei MOD. secunde = variabila MOD xsecunde si obtin intervalul . In felul asta imi ajunge un singur timer. Link spre comentariu
mikella Postat Octombrie 23, 2016 Partajează Postat Octombrie 23, 2016 Poate cineva sa dea un exemplu de cum se foloseste functia "pow" ? Mai exact, vreau sa transform presiunea atmosferica in altitudine cu formula din imagine si capul asta nu ma ajuta azi. Link spre comentariu
mars01 Postat Octombrie 23, 2016 Partajează Postat Octombrie 23, 2016 (editat) float altitude = 44330 * (1.0 - pow(p/p0,0.19029)); Editat Octombrie 23, 2016 de mars01 Link spre comentariu
mikella Postat Octombrie 24, 2016 Partajează Postat Octombrie 24, 2016 Se pare ca merge. Eu incercam in flowcode 5 si dadea eroare, cu 6-le merge. Sanatate! Link spre comentariu
mikella Postat Octombrie 24, 2016 Partajează Postat Octombrie 24, 2016 Imi da o eroare la compilare "Unexpected constant" , ce inseamna? Am atasat si programul, nu dati cu parul prea tare ca atat ma pricep. bmp180(6).zip Link spre comentariu
mars01 Postat Octombrie 24, 2016 Partajează Postat Octombrie 24, 2016 Sunt multe erori dar ... 1. incearca sa ai o uniformitate a codului. Foloseste-te cat mai putin de C-Code pentru a putea beneficia de mesaje clare cu privire la erori. 2. daca definesti o variabila care va contine valoarea returnata de un macro, apoi acea variabila trebuie sa fie locala si nu globala (exact acest gen amestec il faci in macroul read(): daca te uiti la sursa o sa vezi ca ai doua return-uri in acea functie/macro, care iti strica codul). 3. sunt mai multe erori printre care: variabila "altitude" o definesti ca integer in interfata FC si apoi o definesti din nou ca float in C-CODE block. Macar de ii faceai un casting. Log-ul de la compilare cu XC8, dar fii sigur ca sunt mai multe probleme: bmp180(6).c: 85: MX_UINT8 6; ^ (285) no identifier in declaration ^ (314) ";" expectedbmp180(6).c: FCM_calculation() 1255: 6 = 1; ^ (202) only lvalues can be assigned to or modified 1293: if( FCV_B7 < 0x80000000) ^ (355) implicit signed to unsigned conversion (warning) 1307: float FCV_ALTITUDE=44330*(1.0-pow(FLC_PRS/101325,0.19029)); ^ (192) undefined identifier "FLC_PRS"(908) exit status = 1(908) exit status = 1C:Program Files (x86)Microchipxc8v1.38binxc8.exe reported error code 1FINISHED Link spre comentariu
mikella Postat Octombrie 25, 2016 Partajează Postat Octombrie 25, 2016 (editat) Am scris programul din nou, mai ordonat si fara sa ma folosesc de C code. Asa cum l-am scris acum, compileaza cu succes. Insa imi lipseste o bucata de calcul presiune, pe care nu stiu cum sa o scriu in fereastra de calculare. Daca o bag in program cu C code nu compileaza, da eroare generala. Copy pastre din CFCV_B7 = (unsigned long)(FCV_UP - FCV_B3)* (50000>>1);if( FCV_B7 < 0x80000000) {FCV_P = (FCV_B7 * 2) / FCV_B4;} else {FCV_P = (FCV_B7 / FCV_B4) * 2;} Nu inteleg de ce (unsigned long).Eeste tipul de variabila, de ce este specificat asa? pentru If si else, pot folosi o decizie? Editat Octombrie 25, 2016 de mikella Link spre comentariu
mars01 Postat Octombrie 25, 2016 Partajează Postat Octombrie 25, 2016 (editat) Atunci cand folosesti UNSIGNED LONG intre paranteze in fata unei variabile inseamna ca desi tipul acelei variabile poate fi altul decat LONG (de ex INT), totusi acea variabila va fi convertita si stocata ca un LONG (adica intr-o zona de memorie cu dimensiunea unui tip LONG; pentru PIC 8bit inseamna ca variabila va fi stocata pe 32bit). Se numeste "type casting". Aceasta se face atunci cand in stanga egalului este o variabila tip LONG, adica in cazul tau FCV_B7 este de tip LONG, si vrei ca rezultatul operatiilor din dreapta egalului sa se stocheze ca si un LONG pentru ca dupa finalizarea operatiilor din dreapta egalului sa se poata muta continutul in variabila FCV_B7 (care are tipul LONG) fara a se pierde informatie in proces. Da, in loc de if ... else poti folosi un block de decizie din FlowCode. Editat Octombrie 25, 2016 de mars01 Link spre comentariu
mikella Postat Octombrie 25, 2016 Partajează Postat Octombrie 25, 2016 Si cum introduc b7=(unsigned long)(UP-b3) in casuta de calcul? Ca nu vrea expresia unsigned long. Link spre comentariu
mars01 Postat Octombrie 25, 2016 Partajează Postat Octombrie 25, 2016 (editat) Expresia acea o lasi in blocul C-CODE. Nu cred ca se poate face type casting la nivel grafic. Dar o poti scrie mai simplu asa: FCV_B7 = (unsigned long)(FCV_UP - FCV_B3)* 25000uL pentru ca 50000>>1 este totuna cu 50000/2 adica 25000 LE: Pe de alta parte, daca te asiguri ca tipurile variabilelor B7, UP si B3 sunt unsigned long in modul grafic atunci ai putea sa renunti la type casting si sa scrii in blocul de Calcul: B7 = (UP - B3) * 25000 Editat Octombrie 25, 2016 de mars01 Link spre comentariu
mikella Postat Octombrie 25, 2016 Partajează Postat Octombrie 25, 2016 Acuma compileaza fara erori. Poate vine senzorul pana vineri sa dau si o proba fizica. Multumesc frumos pentru tot. O seara buna! Link spre comentariu
mikella Postat Octombrie 30, 2016 Partajează Postat Octombrie 30, 2016 Se pare ca ma depaseste problema. Citeste corect temperatura insa la presiune numai balarii. Nu stiu daca citesc corect adresele cu valoarea presiuni. Calculele sunt exact ca in foaia de catalog. Atasez programul poate are cineva timp sa arunce un ochi peste el, in caz ca am vre-o greseala. Si inca o treaba, acelasi program scris in fc5 incape intr-un 16f788 iar daca il scriu in fc6 nu mai incape. Ce face diferit 6le ca nu mai incape. bmp180.zip 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