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

[Atmega8] [Atmega8][C] Jak przekazać tablicę danych do funkcji DS1307_write?

Logan 28 Lut 2012 08:25 1130 1
REKLAMA
  • #1 10609456
    Logan
    Poziom 30  
    Witam

    Ostatnio postanowiłem opanować komunikację z DS1307. Napisałem sobie funkcję odpowiedzialną za zapis danych do tego RTC.

    DS1307_write:
    void DS1307_write(unsigned char adress, unsigned char data[])
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Funkcje tą wywołuje poprzez:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Niestety funkcja zapisuje mi jakieś bzdury.
    Natomiast jeśli przeniosę ciało funkcji do main() i podstawię konkretne liczby zamiast zmiennych to wszystko działa.
  • REKLAMA
  • #2 10609741
    tymon_x
    Poziom 30  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Nie używaj tzw. "magicznych liczb". Od tego masz makra.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    To że deklarujesz to jako char, nie oznacza że będziesz miał element + NULL-terminator, tak jest tylko w przypadku zainicjowania jako string " ".
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    A ciekawe jak będzie, jak będziesz musiał zero wysłać ? Lepszym wyjściem jest stworzenie struktury z tablicą o określonym rozmiarze + informacją ile masz elementów w tym buforze do wysłania i przekazaniem tego przez wskaźnik.
    Logan napisał:
    Natomiast jeśli przeniosę ciało funkcji do main() i podstawię konkretne liczby zamiast zmiennych to wszystko działa.

    Kod jest zły, a nie, gdzie będzie umieszczona i zamiast zmiennych, będzie miała stałe (konkretne liczby).
REKLAMA