Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

32 bity rozbić na 8 bitow.e MplabX warning w starym Mplabie OK.

Seba_smd 19 Lut 2016 21:37 1821 11
  • #1 19 Lut 2016 21:37
    Seba_smd
    Poziom 15  

    Witam.
    W starym Mplabie było OK w MplabX wyskakuje Warning. Mam liczbę 32 bitową chcę ją rozbić na trzy mniejsze po 8 bitów robię tak

    unsigned long c;
    unsigned char liczba1, liczba2, liczba3;

    liczba1=c>>16;
    liczba2=c>>8;
    liczba3=c;

    transfer_do_WS2812.c:17: warning: (752) conversion to shorter data type

    Nie wiem czemu.

    0 11
  • #2 19 Lut 2016 21:44
    grko
    Poziom 33  

    No pisze wyraźnie, że dokonujesz konwersji do krótszego typu danych. Dokładnie to robisz ;)

    0
  • #4 19 Lut 2016 22:02
    Szumlus
    Poziom 17  

    Kompilator się czepia o niejawne rzutowanie ;]

    0
  • #5 19 Lut 2016 22:07
    grko
    Poziom 33  

    Cytat:

    Rozumiem tylko czemu wyskakuje warning czyli ostrzeżenie skoro jest dobrze ?


    To tylko warning. Pewnie w starym IDE domyślnie był wyłączony. Możesz się go pozbyć przez rzutowanie:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pewnie gdzieś w IDE również wyłączyć generowanie tego warninga.

    0
  • #8 19 Lut 2016 23:23
    BlueDraco
    Specjalista - Mikrokontrolery

    Ale ostrzeganie w tym konkretnym przypadku - to gruba przesada. W C przypisanie dłuższej zmienej do krótszej to norma.

    0
  • #9 19 Lut 2016 23:33
    dondu
    Moderator Mikrokontrolery Projektowanie

    Fakt ... szkoda, że nie wiadomo jaki to kompilator, w jakiej wersji i na jakiej licencji.

    0
  • #10 20 Lut 2016 09:41
    Seba_smd
    Poziom 15  

    dondu napisał:
    Fakt ... szkoda, że nie wiadomo jaki to kompilator, w jakiej wersji i na jakiej licencji.
    MPLAB X IDE v3.20 XC8 v1.36
    W firmie mamy wersje PRO w domu Free i w każdym wyświetla komunikat warning. Moim zdanie trochę dziwne że wyświetla komunikat jak kolega BlueDraco zauważył
    BlueDraco napisał:
    Ale ostrzeganie w tym konkretnym przypadku - to gruba przesada. W C przypisanie dłuższej zmienej do krótszej to norma.

    0
  • #11 20 Lut 2016 11:24
    Urgon
    Poziom 36  

    AVE...

    To ostrzeżenie na wypadek, gdybyś przez przypadek przypisywał sobie dwie zmienne różnych typów, gdy naprawdę chodziło Ci o ten sam typ. Dodawaj po prostu nazwę typu w nawiasach i tyle. Nie jestem pewien, ale chyba w ustawieniach kompilatora można ustawić poziom ostrzeżeń. Początkującym takie "trzymanie za rączkę" przez kompilator pomaga w nauce, wiem to z doświadczenia...

    0
  • Pomocny post
    #12 20 Lut 2016 13:09
    Marek_Skalski
    Moderator Projektowanie

    To ostrzeżenie ma sens. Ile razy zdarzyło się Wam przypisać wartość stałej/zmiennej (u)int16_t na (u)int8_t i czekać na osiągnięcie wartości >255? Kompilator zgłasza to ostrzeżenie i wiele innych, ponieważ jest włączona opcja, której w MPLab nie było, albo była domyślnie wyłączona. Swoją drogą MPLab jest martwy od przynajmniej 3 lat.
    Jeżeli komuś bardzo przeszkadzają ostrzeżenia lub chciałby ostrzeżenia zamienić na błędy, to wystarczy w opcjach projektu zaznaczyć/odznaczyć odpowiednią opcję. Jak to zrobić?
    0. W oknie po lewej stronie, domyślnie widoczna jest zakładka Projects. Jeżeli nie jest widoczna, to trzeba ją włączyć poprzez górne menu Window -> Projects lub naciskając Ctrl+1.
    1. Prawy klik na ikonkę projektu, tę na samej górze, na dole listy wybrać Properties.
    2. Lewy klik na dole listy, gdzie są opcje kompilatora, tutaj pewnie będzie xc8-gcc.
    3. Lewy klik na środku okna, u góry, aby wybrać Preprocessing and messages.
    4. Ustawiamy co jest możliwe zgodnie z własnym wyznaniem, potrzebą serca lub poziomem nasłonecznienia.
    5. Zatwierdzamy zmianę lewym klikiem na OK.
    Uwaga, jeżeli coś za bardzo poprzestawiamy, to zawsze można użyć przycisku Reset, po prawej, na górze, do przywrócenia ustawień domyślnych projektu. Jeszcze nigdy nie korzystałem z tej opcji :)

    0