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

Zmienna 32bit (>65535) problem z sprintf Atmega168

psine.pl 01 Gru 2009 12:24 1170 4
REKLAMA
  • #1 7331380
    psine.pl

    Poziom 30  
    Witam.
    Mam kłopot staram się wyświetlić na lcd lub wysłać przez USART zmienną która powinna przyjąć wartość około 70000 - 100000 ...
    Mam wielkiego zonka :-(

    Teoretycznie definiuję zmienną jako

    volatile uint32_t licznik = 70000;

    a na lcd dostaję jakieś dziwne odczyty ... to samo na rs...
    używam takiej funckji :

    sprintf_P((char*)tekst, PSTR("Licznik: ""%09u "),licznik);
    send_rs_wyraz(tekst); //wysyła na USART
    write_text(tekst); //wyświetla na LCD

    proszę o pomoc bo nie wiem o co chodzi ...

    Liczy poprawnie do 65535 ... czyli obsługuje zmienną 16bit a ja muszę mieć 32bit .

    Dodałem wpis do linkera : -Wl,-u,vfprintf
    Lecz to też nie pomogło ...


    Mała wskazówka ...
    użycie funkcji :

    send_rs_wyraz(ltoa(licznik,tekst,10));

    Daje prawidłową wartość ... czyli błąd (moja niewiedza) dotyczy funkcji sprintf ... lub czegoś z nią powiązanego .
  • REKLAMA
  • #2 7331530
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 7331662
    psine.pl

    Poziom 30  
    Witam...
    wiem co to znaczy %u ale sprawdzałem %l i %d i to samo.

    Pozdrawiam
  • REKLAMA
  • #4 7331740
    Konto nie istnieje
    Konto nie istnieje  
  • #5 7331811
    psine.pl

    Poziom 30  
    Cytuję :

    The format for "long long" is %lld (or %llx etc.). Keep in mind
    though, that a long long is not necessarily 64 bits. If you
    specifically need 64 bits, use the types defined in stdint.h and the
    format macros in inttypes.h.

    to samo dotyczy %ld tylko dla 32bit ....

    Pozdrawiam
REKLAMA