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

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

Herrero 10 Sie 2012 19:01 948 2
REKLAMA
  • #1 11195209
    Herrero
    Poziom 10  
    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 / C++
    Zaloguj się, aby zobaczyć kod


    kod
    Kod: C / 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 ;)
  • REKLAMA
  • Pomocny post
    #2 11195271
    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.
  • #3 11195493
    Herrero
    Poziom 10  
    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 ;)
REKLAMA