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"
  • Data: 2017-03-14 21:21:58
    Temat: Re: sdcc i at89c51 - dost?p do pinu "na oko?o"
    Od: a...@m...uni.wroc.pl szukaj wiadomości tego autora
    [ pokaż wszystkie 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: