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

ATMEGA [C] - Przechowywanie nazw portów i pinów w tablicy lub strukturze

adam_1234 05 Cze 2014 22:50 1968 7
REKLAMA
  • #1 13682772
    adam_1234
    Poziom 9  
    Witam,
    czy istnieje możliwość przechowania nazw portów i pinów w tablicy lub podobnej strukturze (coś na kształt tablicy definicji), tak żeby można je wywoływać kolejno w pętli, posługując się tylko indeksami tej tablicy?
    Zamiast tworzyć coś takiego:
    --------------------------
    #define PORT_OUT1 PORTA
    #define OUT1 0
    #define PORT_OUT2 PORTA
    #define OUT2 1
    #define PORT_OUT3 PORTA
    #define OUT3 2
    #define PORT_OUT4 PORTA
    #define OUT4 3
    lub
    #OUT1 PORTA|=(1<<0);
    #OUT2 PORTA|=(1<<1);
    #OUT3 PORTA|=(1<<2);
    #OUT4 PORTA|=(1<<3);
    --------------------------
    utworzyć jakąś tablicę, dajmy na to OUT [] której elementami byłby
    PORT_OUT1|=(1<<OUT1)
    itd.
    a następnie wywoływać to:
    OUT[0]
    itd.
    ?
    Zdaję sobie sprawę, że wyżej wymieniony przypadek można by rozwiązać na przesunięciu bitowym, jednak chodzi mi o uniwersalny dostęp do wszystkich portów i ich dowolne definiowanie.
    Mam nadzieję, że wyraziłem się w miarę zrozumiale. Będę wdzięczny za wszelkie podpowiedzi. Z góry dziękuję.
  • REKLAMA
  • #2 13682801
    mickpr
    Poziom 39  
    adam_1234 napisał:
    czy istnieje możliwość przechowania nazw portów i pinów w tablicy lub podobnej strukturze (coś na kształt tablicy definicji), tak żeby można je wywoływać kolejno w pętli, posługując się tylko indeksami tej tablicy?
    Identyczne pytanie, inny język : https://www.elektroda.pl/rtvforum/topic2824269.html
    Czemu nie zrobisz sobie funkcji zastępującej taką hipotetyczną tabelę, której parametr będzie "indeksem" wybierającym żądany port?
  • REKLAMA
  • #3 13682827
    adam_1234
    Poziom 9  
    Trochę nad tym myślałem, ale nie szkoda czasu? Myślałem, że jest może jakieś prostsze rozwiązanie.
    Ale dziękuję bardzo za odpowiedź.
  • #4 13683704
    perlon
    Poziom 20  
    Coś może w takim stylu. Kod wyrwany z większej całości i trochę zagmatwany. Jest to fragment kodu do tablicowania wyjść w zespole wyświetlaczy 7-segmentowych LED. Fragment dotyczy wspólnych anod/katod ale jest również w podobnym stylu do obsługi poszczególnych segmentów podpiętych do różnych/dowolnych portów i pinów. Większość rozwiązań wykorzystuje jeden cały port. Tutaj może być dowolność:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #5 13737381
    sepako
    Poziom 14  
    A może coś takiego
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #6 13794983
    margas4542
    Poziom 16  
    Podpinam się pod temat. Potrzebuje dziesięć wyjść do sterowania jednostek cyfr lamp NIXIE a np; PORT C ma ich tylko osiem więc pożyczam dwa wyjścia PORT D a pozostałe sześć jako wyjścia sterujące anodami NIXIE. Trochę się z tym męczę bo myślałem właśnie o jakiejś tablicy ale niby proste a nic z tego nie wyszło.
  • #7 13795049
    BlueDraco
    Specjalista - Mikrokontrolery
    A konkretnie co w tym nie jest proste?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #8 13796507
    margas4542
    Poziom 16  
    Nie łapie ; proste inaczej....

    Kod: C#
    Zaloguj się, aby zobaczyć kod
REKLAMA