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

ATMEGA32/AVR6.0/c - Po zmianie nazwy zmienna się sama zeruje...

Herrero 10 Sie 2012 19:01 774 2
  • #1 10 Sie 2012 19:01
    Herrero
    Poziom 9  

    Witam,

    Piszę program do obsługi zasilacza sterowanego cyfrowo i napotkałem na dziwny błąd polegający na zerowaniu się zmiennej. Poniżej zamieszczam wadliwy fragment kodu:

    deklaracja

    Kod: c
    Zaloguj się, aby zobaczyć kod


    kod
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Po wykonaniu zaznaczonej instrukcji zmienna ogr_prad_liczby przyjmuje wartosć 0 mimo, że przed zaznaczoną operacją miała wartość 1. Po zmianie nazwy zmiennej na dowolną inną (użyłem funkcji rename) wszystko działa. Po zamkomentowaniu pogrubionej linijki też działa. Nie działa natomiast jak zmienna się nazywa ogr_prad_liczby. Dodam, że program nie wchodzi w żadne przerwanie w czasie wykonywania zaznaczonej instrukcji. Czy ktoś spotkał się z czymś takim? Z góry dziękuję za sugestie ;)

    0 2
  • Pomocny post
    #2 10 Sie 2012 19:20
    szulat
    Poziom 23  

    Zapewne wrzucasz zbyt długi string do tablicy i ostatnie zero włazi na zmienną. Zauważ że nawet jeżeli twój wyświetlacz ma tylko 16 znaków i chcesz wpisać dokładnie 16 za pomocą sprintf to zawsze będzie dodatkowo na końcu zero (siedemnasty znak) bo tak działają funkcje stringowe w C.
    Powiększ tablicę i będzie dobrze.

    0
  • #3 10 Sie 2012 20:14
    Herrero
    Poziom 9  

    Mam nadzieję, że to pomoże - będę mógł to sprawdzić dopiero w poniedziałek w pracy. Nie wpadłbym na to, bo po zmianie nazwy zmiennej wszystko działa ok, albo mi się tak tylko zdaje ;)

    0