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

sprintf() nie działa na LCD - problem z formatowaniem tekstu

5657jz 15 Lut 2016 10:12 1119 9
  • #1 15437255
    5657jz
    Poziom 14  
    Nie mogę sformatować tekstu. Dlaczego ?
    Może Ktoś zerknąć na obrazek (to debugowanie programu.)
    sprintf() nie działa na LCD - problem z formatowaniem tekstu
  • #2 15437326
    grko
    Poziom 33  
    Dodaj do flag linkera:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    W Atmel studio pewnie można gdzieś wyklikać to myszką. Poza tym sprintf zwraca wartość. Warto to również sprawdzać.
  • #3 15437441
    bgolab
    Poziom 22  
    Prawdopodobnie nie jest obsługiwany float przez blibliotekę.
    Osobiście unikam float gdyż biblioteki zabierają za dużo miejsca. Można operowac na integerach tak by nie tracić dokłądności np. zamiast 2.56 uzywać 256 a na końcu uzyć "wynik/100" i "wynik%100" do wyłuskania części całkowitej i ułamkowej (w tym wypadku uzyto 100 bo mnozyliśmy przez 100 by nie stracic precyzji obliczeń).
  • #5 15437490
    grko
    Poziom 33  
    @bgolab

    Nie zajmuje aż tak dużo. Bez float:
    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    Z float:

    Kod: Bash
    Zaloguj się, aby zobaczyć kod


    Całe 2KB kodu. Nie mam ochoty robić żadnych protez na intach. Na jakichś małych ATMegach to może mieć sens.
  • #6 15437496
    bgolab
    Poziom 22  
    Ja nie namawiałem do robienia protez. Ale jak się ktoś porusza w obrębie attiny to może miec sens.

    Dodano po 1 [minuty]:

    Nie wspomne tez o czasie przetwarzania.

    Dodano po 8 [minuty]:

    Tak mi się przypomniało, że ludzie kórzy siedzą w branzy od lat i wygląda na to, że się chociaż trochę znają nie nazywają tego "protezami" ale "fixed point math":
    http://www.embedded.com/electronics-blogs/break-points/4440492/Fixed-point-math
  • #7 15437556
    grko
    Poziom 33  
    Cytat:

    Tak mi się przypomniało, że ludzie kórzy siedzą w branzy od lat i wygląda na to, że się chociaż trochę znają nie nazywają tego "protezami" ale "fixed point math":
    http://www.embedded.com/electronics-blogs/break-points/4440492/Fixed-point-math


    Sorry, ale fixed point nie został wynaleźiony do formatowania liczb dla printf/sprintf.

    Przechowywanie pomiaru w formacie:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Też ma niewiele wspólnego z fixed point arithmetic
  • #8 15437565
    bgolab
    Poziom 22  
    Wydawalo mi się, że rozwiązujemy problem biblioteki, która miała problem z float.

    Nieużywanie float chyba jest też rozwiazaniem.

    Dodano po 49 [sekundy]:

    Jeżeli Kolega ama za cel wykazywanie swojej wyższości to ja pasuję - nie chce mi się tracić zdrowia...
  • #9 15437581
    grko
    Poziom 33  
    Problem został rozwiązany w pierwszych kilku postach. Dla mnie rozwiązanie z częścią całkowitą i ułamkową jest protezą bo naturalnym wydaje się użycie w takim wypadku float. To, że takie coś nie mieści się na ATTiny to jest inna bajka. Wtedy należy się posiłkować rozwiązaniami z częścią całkowitą i ułamkową. Poza tym Autor tematu nie napisał ile ma dostępnej pamięci. Może po prostu te 2KB extra w pamięci flash nie robią mu różnicy.
  • #10 15437735
    5657jz
    Poziom 14  
    @GrzegorzKostka
    Wielkie dzięki za pomoc.
REKLAMA