eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaDefiniowane portów/flag w CRe: Definiowane portów/flag w C
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!.POSTED.pi.v.chmurka.n
    et!not-for-mail
    From: g...@s...invalid (Adam Wysocki)
    Newsgroups: pl.misc.elektronika
    Subject: Re: Definiowane portów/flag w C
    Date: Fri, 20 Oct 2017 13:17:15 +0000 (UTC)
    Organization: news.chmurka.net
    Message-ID: <osct0r$vb6$1$gof@news.chmurka.net>
    References: <osa0qm$mhc$1@node1.news.atman.pl> <osa3ci$tb1$4$gof@news.chmurka.net>
    <osa55j$r0r$1@node1.news.atman.pl> <f...@m...uni-berlin.de>
    <osatlp$gjd$1@node2.news.atman.pl>
    NNTP-Posting-Host: pi.v.chmurka.net
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    Injection-Date: Fri, 20 Oct 2017 13:17:15 +0000 (UTC)
    Injection-Info: news.chmurka.net; posting-account="gof";
    posting-host="pi.v.chmurka.net:172.24.44.20"; logging-data="32102";
    mail-complaints-to="abuse-news.(at).chmurka.net"
    User-Agent: tin/2.4.1-20161224 ("Daill") (UNIX) (Linux/4.4.50-v7+ (armv7l))
    Cancel-Lock: sha1:56meqzqNC41C/nIOLHxVgjZWeXU=
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:725124
    [ ukryj nagłówki ]

    sword <n...@p...onet.pl> wrote:

    > Hmm, mogę dać inline ale wydaje mi się, że jestem w tym samym
    > punkcie co z makrami.

    Niekoniecznie.

    > static inline void setbit (u8 port, u8 pin)

    Nie wiem na jaką platformę piszesz, ale na AVR port nie ma typu u8
    (uint8).

    > No i co dalej? Chciałbym ją tak samo wywołać, np.:
    >
    > setbit(F_LED)

    Spróbuj tak:

    [gof@pi /tmp]$ cat test.c
    #include <inttypes.h>
    #include <avr/io.h>

    // bez nawiasów, żeby nie rozwinęło się tylko do jednego argumentu
    #define MAKE(port, bit) &port, _BV(bit)

    // podejście z MAKE
    #define LED1 MAKE(PORTB, 3)
    #define BUZZER1 MAKE(PORTC, 0)

    // podejście bez MAKE - bez nawiasów!
    #define LED2 &PORTB, _BV(3)
    #define BUZZER2 &PORTC, _BV(0)

    static inline void setbit(volatile uint8_t *port, uint8_t mask)
    {
    *port |= mask;
    }

    int main(void)
    {
    setbit(LED1);
    setbit(BUZZER1);
    setbit(LED2);
    setbit(BUZZER2);

    return 0;
    }
    [gof@pi /tmp]$ avr-gcc -mmcu=atmega8 -Wall -Wextra test.c
    [gof@pi /tmp]$

    --
    [ Email: a@b a=grp b=chmurka.net ]
    [ Web: http://www.chmurka.net/ ]

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: