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



Teraz jest 27 kwi 2024, o 08:47


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
 Tytuł: ADC obliczenia
PostNapisane: 28 gru 2011, o 17:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 gru 2011
Posty: 110
Lokalizacja: Dolnyśląsk
Pomógł: 0

Witam witam :)

Mam problem dotyczący obliczenia podstawowego napięcia. kod z książki nie bardzo chce działać jak powinien za to działa u mnie taka wersja.

Kod:
      pm = pomiar();             // odczyt wartości ADC np. = 450
      wynik = pm * 48;       // wynik = 194400
      cz_d = wynik/10000;         // część dziesiętna
      cz_u = (wynik%10000) / 10;   // część ułamkowa
      lcd_int( cz_d );
      lcd_char( '.' );
      lcd_int( cz_u );
      lcd_char( 'V' );


Ale jeśli zamiast 48 napisze 483 to już wynik głupieje.

Niecący jeszcze coś przy jarałem na płytce xP ale to chyba tylko dzielnik bo tak jak by z niego się zadymiło ^ ^'
normalnie podłączałem dzielnik najpierw przez ten rezystor 10kOHM co jest na płytce. A do procka podłączałem 'wyjście' potencjometru. Działało ale nie uzyskiwałem maksymalnego napięcia 5V tylko 3 coś bo leci wszystko przez ów rezystor 10K. Pomyślałem że podłącze na odwrót i coś się przydymiło :(
No ale zdaje się że wszystko działa jak należy. Jakieś sugestie, porady co do mojego wykroczenia ?

No i chciałem się zapytać skąd w książce wzięło się
Kod:
        return ADCW;

W nocie PDF nie znalazłem tego ale już w plikach po naciśnięciu CTRL + LPM było.
Co do tego to bardziej bym chciał wiedzieć jak szukać takich rzeczy na przyszłość :)

Serdecznie pozdrawiam

P.S zdaje sobie sprawy że mogę zadawać dość błahe pytania aczkolwiek chciałbym zrozumieć pewne aspekty a nie przechodzić boczkiem. Chodź i tak czasem robię.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 gru 2011, o 17:51 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

Proszę spróbować tak pisać tę linijkę:

wynik = pm * 48UL;

czyli do liczby dodawać UL

albo przed pm zrobić rzutowanie na typ uint32_t np tak

Kod:
wynik = (uint32_t)pm * 48;



Była już też o tym mowa na naszym forum, przypomnę link:

post743.html#p743

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2011, o 19:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 gru 2011
Posty: 110
Lokalizacja: Dolnyśląsk
Pomógł: 0

Dzięki wielkie :) bardzo mi pomógł i rozjaśnił parę aspektów ów odnośnik do innego tematu o tym na forum.

Z drugiej strony szkoda że w książce nie było wyjaśnienia co do 'ADCW' oraz jakiejś notki odnośnie 'UL' a przydało by się.

Całe szczęście że jest to forum i Pan Panie Mirku :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2011, o 21:51 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

Co do UL to na pewno było wyjaśnienie. A z tym brakiem UL w tym akurat obliczeniu, to jak pisałem w tamtym wątku hmmm pewna nieścisłość bo nawet nie jest to błąd za bardzo.

Tzn błąd jest wtedy gdy obliczana wartość przekroczy zakres uint16_t, ale to tylko mówi o jednym - ZAWSZE trzeba myśleć i pilnować typów. Akurat w tym doświadczeniu mierzyłem jakieś małe zakresy napięć i po prostu nie zauważyłem tego, że wartość może zostać przekroczona a nieco na wyrost napisałem, iż program może mierzyć napięcia w nieco większym zakresie. Ale cóż też jestem tylko człowiekiem ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2011, o 23:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 gru 2011
Posty: 110
Lokalizacja: Dolnyśląsk
Pomógł: 0

Rzeczą ludzką jest się mylić więc to normalne a co do UL to może jakoś mi po prostu umknęło. Tak czy siak dziękuje bardzo jak zwykle za cierpliwość do nowicjuszy takich jak ja :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2011, o 23:55 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

DidekxD napisał(a):
... a co do UL to może jakoś mi po prostu umknęło.


Rozdział:

4.3.2.1 Stałe jako liczby całkowite

;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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