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.

[ATmega32U4][avr-gcc] - Typ zmiennej a jej wartość po petli while.

lucasz 14 Lis 2014 12:02 720 4
  • #1 14 Lis 2014 12:02
    lucasz
    Poziom 7  

    Witam i proszę o wyjaśnienie, dlaczego jeśli zmienna x w funkcji main jest typu long int to po zakończeniu pętli while ma ona wartość mniejszą (66) niż jeśli jest typu int (86). Dzięki.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 4
  • #2 14 Lis 2014 12:10
    Steryd3
    Poziom 31  

    Zmieniasz wartość x w przerwaniu i w pętli główniej (pętlą while) - to jest jakaś forma wyścigu? Co ten program ma robić?
    Ja przypuszczam co się dzieje ale opisz swój mechanizm myślenia- bo może coś mi umyka.

    0
  • #3 14 Lis 2014 12:56
    94075
    Użytkownik usunął konto  
  • #4 14 Lis 2014 12:59
    voytaschec
    Poziom 24  

    Steryd3 napisał:
    Zmieniasz wartość x w przerwaniu i w pętli główniej (pętlą while)

    To nie ma znaczenia, x nie jest zmienną globalną i jest widziana niezależnie w przerwaniu i w pętli głównej.

    Timerem TIMER0 odmierzasz czas 1ms. W pętli głównej inkrementujesz zmienną x (16 lub 32 bitową). Jeśli jest ona 16 bitowa to inkrementacja jej wymaga wygenerowania mniejszego kodu niż w przypadku 32 bitowej. Czyli w ciągu 1 ms będzie więcej obiegów pętli while.

    0
  • #5 14 Lis 2014 13:04
    Steryd3
    Poziom 31  

    albertb napisał:
    Ano umyka.

    Jakoś stwierdziłem, że zadeklarowane przed main ... no wtopa:)

    0