logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[c][Atmega32] ADC + LCD. Konwersja na BCD. Głupoty na wyświetlaczu.

Mathew26 29 Kwi 2011 22:34 1445 3
REKLAMA
  • #1 9453003
    Mathew26
    Poziom 10  
    Witam,
    napisałem prosty program do obsługi LCD z przetwornikiem ADC.
    Atmega32 : zew. kwarc 16 Mhz
    Funkcje obsługi LCD działają prawidłowo, są od Radzia.
    Idea była taka,żeby przekonwertować wartość z przetwornika na BCD. Przetwornik 10 bitowy. Na wyświetlaczu pojawiają się kompletne głupoty. Co ciekawe nieraz pojawiają się symbole, a przecież program został napisany tak by pojawiały się tylko cyfry.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9453026
    tadzik85
    Poziom 38  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    to można zapisać prościej, po co wykorzystywać dodatkowe zmienne?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    a co najważniejsze masz skopaną funkcję konwersji. Dlaczego nie zastosujesz itoa();?

    A skopana bo czekasz na wartość ujemną zmiennej bez znaku.

    W dodatku nie zerujesz zmiennych zawierających cyfry przed każdą konwersją.
  • REKLAMA
  • #3 9453072
    Mathew26
    Poziom 10  
    Problem rozwiązany, zabrakło zerowania zmiennych:
    set,
    tys,
    dzies,
    jedn.


    Czekam na wartość ujemną zmiennej 'wynik'.
    Wynik jest zmienną typu int16_t, wydaję mi się że jest to zmienna uwzględniająca znak.

    Taki sposób konwersji jest mniej wydajny niż itoa()?
  • #4 9453111
    tadzik85
    Poziom 38  
    Mniej itoa(); jest odpowiednio napisana dzięki czemu uzyskano znaczną optymalizację. No i nie ma wówczas takich problemów z jakimi się spotkałeś.
REKLAMA