-
Data: 2017-03-14 19:07:22
Temat: sdcc i at89c51 - dostęp do pinu "na około"
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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;
Struktura jest inicjowana za pomocą funkcji key_init(), która przypisuje
argumenty do struktury przekazanej przez wskaźnik, czyli wygląda to w
ten sposób:
key_init(&button2, &P0, 0, funkcja, funkcja);
Kolejne argumenty oznaczają: adres struktury, adres portu, numer pinu w
porcie, wskaźnik na funkcję wykonywaną po krótkim wciśnięciu przycisku i
wskaźnik na funkcję wykonywaną po przytrzymaniu przycisku.
Potem stan przycisku jest cały czas sprawdzany wewnątrz funkcji
key_update(), która przyjmuje za argument adres struktury.
Tyle tytułem wprowadzenia.
Sęk w tym, że kod nie chce działać. Drogą eliminacji doszedłem do tego, że:
1) Same wejścia cyfrowe działają - odwołanie się do nich bezpośrednio
daje pozytywny efekt.
2) Działa także konstrukcja key_press = !(P0 & (1<<NUMER_PINU))
3) Program wchodzi do funkcji key_update.
NIE DZIAŁA natomiast następująca konstrukcja:
key_press = !(*(key->port) & (1<<(key->pin)));
Strukturę inicjuję podając dane właściwego portu i pinu, a pomimo tego
wciskanie przycisku nie jest widoczne.
I teraz pytanie: co jest nie tak. Czyżbym w sdcc i/lub at89c51 nie mógł
przesyłać w ten sposób informacji o porcie? A może po prostu coś
przeoczyłem i w powyższej linijce tkwił jakiś banalny błąd, który umyka
mojej uwadze, gdy na nią patrzę?
Następne wpisy z tego wątku
- 14.03.17 19:48 J.F.
- 14.03.17 19:54 Janusz
- 14.03.17 21:03 Atlantis
- 14.03.17 21:09 Zbych
- 14.03.17 21:21 a...@m...uni.wroc.pl
- 14.03.17 21:34 Atlantis
- 14.03.17 22:02 Atlantis
- 14.03.17 22:29 Atlantis
- 15.03.17 01:42 J.F.
- 15.03.17 01:46 J.F.
- 15.03.17 07:51 Atlantis
- 15.03.17 08:57 Atlantis
- 15.03.17 09:57 Piotr Gałka
- 15.03.17 10:21 J.F.
- 15.03.17 10:27 J.F.
Najnowsze wątki z tej grupy
- Wojna w portfelu
- Jaki trojfazowy licznik tuya lub podobny?
- Problem z dekoderem adresów
- Intel się wyprzedaje: po 10latach pchnęli pakiet kontrolny Altery za 1/4 kwoty zakupu
- Korekcja perspektywy
- Wentylator zabija zasilacze LEDek?
- Re: Kompensacja mocy biernej przy 230VAC
- Totaliztyczny obowiązek naprawy maszyn i urządzeń
- Niby uziom ale nie
- Położyłem dwa telefony obok siebie
- Przekaźnik na szynę DIN (?)
- Taśma LED
- Jak odróżnić myjki wibrujące od ultradźwiękowych.
- Ledy na wyłączniku czasowym błyskają
- Re: Kompensacja mocy biernej przy 230VAC
Najnowsze wątki
- 2025-04-19 cena za badanie techniczne
- 2025-04-18 60letnie wierze nadawcze zostaną rozebrane!
- 2025-04-18 ",,Kometa" - nowa gwiazda na polu bitwy"
- 2025-04-18 60letnie wierze nadawcze zostaną rozebrane!
- 2025-04-18 Zakroczymiu (woj. mazowieckie) znaleźli marokańską fontannę!
- 2025-04-18 Minister Berek zapowiada "mgławicę legislacyjną"
- 2025-04-18 "Czy w 2025 roku można legalnie palić gałęzie na swojej działce?"
- 2025-04-18 "Sąd nakazał usunięcie chińskiej podróbki z targów"
- 2025-04-18 "Rozpocznie się budowa nowego, budowanego od podstaw zakładu Jelcza" !!!
- 2025-04-18 "Sąd nakazał usunięcie chińskiej podróbki z targów"
- 2025-04-18 "Rozpocznie się budowa nowego, budowanego od podstaw zakładu Jelcza" !!!
- 2025-04-18 Warszawa => International Freight Forwarder <=
- 2025-04-18 Lublin => JavaScript / Node / Fullstack Developer <=
- 2025-04-18 Prezydent "Andrzej Duda skierował ustawę o mowie nienawiści do Trybunału Konstytucyjnego"
- 2025-04-18 "Bayer przestanie produkować Roundup? Ma dość pozwów za glifosat"