srdjan Postat Septembrie 25, 2010 Partajează Postat Septembrie 25, 2010 partea cu cifrele care raman se poate rezova ori dand un clear() la lcd (vezi libraria ce comanda are pentru asa ceva) ori scriind un sir de spatii pe rand inainte de a scrie numarul dorit.cat despre valoarea afisata ti-as recomanda sa afisezi (deodata sau pe rand) valoarea lui RPM, valoarea lui T si raportul lor pentru a putea intelege de unde apare valoarea aia fantezista. iti amintesc ca la MCU sa zicem ca ai o variabila pe 8 biti fara semn... 255+1=0; 255+2=1; 0-1=255; 0-2=254... de aici probabil si valoarea ta ciudata (dar pe 32 biti) Link spre comentariu
criss Postat Septembrie 25, 2010 Autor Partajează Postat Septembrie 25, 2010 Am o functie de stergere lcd si am testato, dar nici o modificare . uint32_t R;uint32_t F;char s[7];char z[7];char y[7];//convesie turatieF=(uint32_t)RPM; lcd_gotoxy( 0, 0 ); itoa(F, z, 10); lcd_puts(z);//afisare mesaj delimitare. lcd_puts("T");//afisarea timpului itoa(T, y, 10); lcd_puts(y);//turatia calculata lcd_gotoxy( 0, 1 ); R= RPM/T; itoa(R, s, 10); lcd_puts(s);ce a afisat(RPM separat prin 'T' si timpul, ambele au valori -):-30976T-17814(acesta din urma variind)1257Cand cobor turatia motorului timpul se modifica iar cand ajunge la +(ca este in minus) atuncea valoarea turatiei sare la peste 7420.(eu spun ca undeva am zapacito cu calculele).nu stiu ce sa zic .. poate este in regula ~1257rpm (motorul de test este una de imprimanta de joasa turatie) doar cand cobor turatia motorului valoarea creste . Link spre comentariu
srdjan Postat Septembrie 25, 2010 Partajează Postat Septembrie 25, 2010 incearca sa folosesti baza 16 (ltoa(x,y,16)) pentru ca am impresia ca desi numarul tau e pe 32 de biti, fiind facut sirul de caractere in baza 10 cred ca ltoa iti considera implicit MSB-ul ca bit de semn. cel mai bine e sa folosesti baza 16 pt afisare... iei valorile, le convertesti "de mana" in baza 10 si vezi daca sunt bune si faci calculul ca sa verifici cine unde greseste Link spre comentariu
godFather89 Postat Septembrie 28, 2010 Partajează Postat Septembrie 28, 2010 Vad ca folosesti itoa pentru conversie in string. itoa primeste numere pe 16 biti semnate (int-uri). Foloseste ltoa. Link spre comentariu
criss Postat Octombrie 3, 2010 Autor Partajează Postat Octombrie 3, 2010 din pacate nu-mi functioneaza nici nu ltoa :(imi afiseaza aceeasi valoare de ~1573rpmpe cand are doar ~800. 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