Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 2 kwi 2026, o 20:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 19 mar 2014, o 20:02 
Offline
Użytkownik

Dołączył(a): 03 lis 2012
Posty: 43
Pomógł: 1

Witam
Kiedy mam taki program, na LCD szaleją jakieś dziwne liczby, natomiast kiedy zakreskuję fragmenty z modulo:
usivertydzie=uremy%100;
Wszystko gra - tzn jest prawidłowy odczyt w uR/h, a uSv/h zmienia się tylko wartość przed kropką (jeżeli oczywiście jest odpowiednio wysoka zmienna). Czemu modulo niszczy mi program? :P Próba załatwienia tego tak:
usivertydzie=(100 * uremy) - (100* usivertyjed);
Nic nie daje. Te liczby to np 25600, -2022, 1824, 196804, i raz na czas pojawia się dobra wartość, ale tylko na 1/2 sekundy. Co tutaj jest źle?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2014, o 22:18 
Offline
Użytkownik

Dołączył(a): 22 gru 2013
Posty: 296
Lokalizacja: Szczecin
Pomógł: 47

Witam.
A przypadkiem nie ma warningów: ...warning: implicit declaration of function 'itoa',
bo nie widzę deklaracji #include <stdlib.h>;
może także warto (tak na próbę) trochę zwiększyć bufor dla funkcji itoa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 mar 2014, o 16:40 
Offline
Użytkownik

Dołączył(a): 03 lis 2012
Posty: 43
Pomógł: 1

Bufor zwiększyłem i zadeklarowałem bibliotekę - jest mały postęp, tzn zmienia się też druga zmienna, ale widać ją raz na czas, a tak to są różne wartości. Po kilku zmianach znów widać właściwy wynik i znów powtórka z rozrywki i losowe wartości.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 mar 2014, o 17:08 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Napisz sobie taką wersję programu w którym te wartości są stałe potem przelicz to sam. Tu mogą być dwa problemy: jakiś wynik przekracza rozmiar zmiennej albo wynik cząstkowy przekracza int i trzeba dodać rzutowanie. Po szczegóły odsyłam na blog Mirka.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2014, o 20:41 
Offline
Użytkownik

Dołączył(a): 03 lis 2012
Posty: 43
Pomógł: 1

Kiedy przypisałem do zmiennej uremy liczbę 150, wszystko jest wyświetlane poprawnie. Kiedy ręcznie przypisałem w tabeli parę wartości, to zaczęło się sypać. Kiedy przed tym przypisaniem wstawiłem zerowanie tabeli (tzn dopiero po zerowaniu przypisywałem wartości) wyświetlało poprawnie.
Nie mam pojęcia, co jest źle w moim kodzie :/.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2014, o 23:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 sty 2014
Posty: 178
Pomógł: 24

Podaj parę przykładów liczb które się źle wyświetlają i co wtedy widać .Podaj parę przykładów liczb które się dobrze wyświetlają . Czy błędne wyświetlenie powtarza się dla danej liczby czy za każdym razem jest inne?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 mar 2014, o 23:33 
Offline
Użytkownik

Dołączył(a): 03 lis 2012
Posty: 43
Pomógł: 1

Co jakiś czas jest wyświetlana poprawna liczba, reszta to jakieś losowe liczby. Proszę przeczytaj dokładniej - nie ma reguły, dla jakiej są dobrze wyświetlane, po prostu różnie je przypisywałem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2014, o 01:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 sty 2014
Posty: 178
Pomógł: 24

ok. racja nie doczytałem. co do kodu to:
1) tablica pomieści tylko 79 komórek(czyli indeksy wynoszą - od 0 do uwaga 78) a w linii kodu 55 wpisujesz indeks (zmienną j) równym 79 nadpisując coś za tablicą .Potem w linii kodu 64 następuje odczyt z 80 komórki(indeks = 79)a tablica pomieści tylko 79 komórek.
2) Wydaje mi się, że wynik uremy+tablica[i] jeżeli jest to uśrednianie powinien być podzielony przez przez ilość wartości wpisanych do tablicy(albo po prostu przez 79 ale wtedy prawidłowy wynik ustali się po ok. 40 s ponieważ napełniasz 79 komórek co 0,5 s) bo inaczej co 0,5s wzrasta wynik i na początku jest ok i(to by potwierdzało to co pisałeś: " Kiedy przed tym przypisaniem wstawiłem zerowanie tabeli (tzn. dopiero po zerowaniu przypisywałem wartości) wyświetlało poprawnie") może to jest przyczyna.
Spróbuj tam jak trzeba to podzielić albo raczej znacznie przyspieszyć napełnianie tablicy no i zwiększyć rozmiar tablica (albo zmienić warunki indeksacji 79 zamiast 80)
pozdrawiam


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 mar 2014, o 13:31 
Offline
Użytkownik

Dołączył(a): 03 lis 2012
Posty: 43
Pomógł: 1

Jestem debilem -.- Serdecznie dziękuję Kuźnio (tak się odmienia Twój nick?) - problem był z tablicą. Pomyliłem sobie numer komórki z ilością komórek (tzn myślałem że jeżeli napiszę int tablica[79] będę miał do dyspozycji 80 komórek tablicy...). Teraz wszystko śmiga - dziękuję jeszcze raz.

Co do drugiego puntu - wydaje Ci się :P. Po prostu co 0.5 sekundy ma mi zsumować całą tablicę i przypisać ją do zmiennej, a kiedy zapełni 80 komórek (czyli po 40 sekundach) zaczyna je nadpisywać - coś a'la bufor kołowy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2014, o 13:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 sty 2014
Posty: 178
Pomógł: 24

MrDarkenRahl napisał(a):
Co do drugiego puntu - wydaje Ci się . Po prostu co 0.5 sekundy ma mi zsumować całą tablicę i przypisać ją do zmiennej, a kiedy zapełni 80 komórek (czyli po 40 sekundach) zaczyna je nadpisywać - coś a'la bufor kołowy.


tak. ale co przedstawia zmiena uremy, a co zawiera bufor?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 20 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO