eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikasdcc i at89c51 - dostęp do pinu "na około"Re: sdcc i at89c51 - dost?p do pinu "na oko?o"
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!pwr.wroc.pl!new
    s.wcss.wroc.pl!not-for-mail
    From: a...@m...uni.wroc.pl
    Newsgroups: pl.misc.elektronika
    Subject: Re: sdcc i at89c51 - dost?p do pinu "na oko?o"
    Date: Tue, 14 Mar 2017 20:21:58 +0000 (UTC)
    Organization: Politechnika Wroclawska
    Lines: 39
    Message-ID: <oa9jd6$bea$2@z-news.wcss.wroc.pl>
    References: <oa9bgq$7fd$1@news.icm.edu.pl>
    NNTP-Posting-Host: hera.math.uni.wroc.pl
    X-Trace: z-news.wcss.wroc.pl 1489522918 11722 156.17.86.1 (14 Mar 2017 20:21:58 GMT)
    X-Complaints-To: a...@n...pwr.wroc.pl
    NNTP-Posting-Date: Tue, 14 Mar 2017 20:21:58 +0000 (UTC)
    Cancel-Lock: sha1:tf+cy9pz+nVg+bKzlhbbRmxny5k=
    User-Agent: tin/2.2.1-20140504 ("Tober an Righ") (UNIX) (Linux/4.9.5 (x86_64))
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:714748
    [ ukryj nagłówki ]

    Atlantis <m...@w...pl> wrote:
    > Ci?g dalszy moich eksperyment?w z archaicznymi mikrokontrolerami. ;)
    >
    > Ju? kiedy? pyta?em, czy da si? w jaki? spos?b przes?a? wygodn?
    > konstrukcj? wskazuj?c? bezpo?rednio na pin (np. "P0_0") za pomoc?
    > wska?nika w C. Otrzyma?em odpowied?, ?e si? nie da i musz? to robi? w
    > spos?b standardowy.
    >
    > Natkn??em si? jednak na pewne problemy... Pr?buj? przeportowa? pewn?
    > bibliotek? do obs?ugi przycisk?w (debouncing + wykrywanie d?ugiego
    > wci?ni?cia). Kod podpatrzony w jednej z ksi??ek pana Kardasia, z paroma
    > moimi modyfikacjami.
    >
    > Generalnie sprowadza si? do tego, ?e mam struktur? opisuj?c? przycisk:
    >
    > typedef struct key {
    > unsigned char *port;
    > unsigned char pin:3;
    > unsigned char state:4;
    > unsigned int timer;
    > void (*push_proc)(void);
    > void (*long_proc)(void);
    > } key_t;
    <snip>
    > NIE DZIA?A natomiast nast?puj?ca konstrukcja:
    >
    > key_press = !(*(key->port) & (1<<(key->pin)));

    Przy dostepie do portow powinno byc 'volatile', np:

    typedef struct key {
    volatile unsigned char *port;
    ....

    Twoj problem jest prawdopodobnie zwiazany z at89c51, ale
    bez 'volatile' mozesz miec problem na dowolnym procku.

    --
    Waldek Hebisch

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

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: