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

ATMEGA328P - RC522-tylko raz można odczytać kartę RFID

excray 02 Sty 2016 22:42 1929 11
REKLAMA
  • #1 15293454
    excray
    Poziom 41  
    Hej. Napisałem prosty program do współpracy z płytką RFID-RC522. Generalnie program działa tylko że po pierwszym poprawnym odczycie (status po odczycie jest OK) nie widzi już więcej żadnej karty - funkcja "MFRC522_Request(PICC_REQIDL,str)" zwraca brak karty w zasięgu. Pomaga dopiero umieszczenie na końcu kodu ponownej inicjalizacji bądź zresetowanie mikroprocesora. Czytałem że w tym celu powinna być na końcu kodu umieszczona funkcja "MFRC522_Halt()" niemniej nic ona nie zmienia w działaniu kodu. Biblioteka jest analogiczna do wielu dostępnych w necie. Szczególnie przyjrzałem się funkcji "MFRC522_Halt()" ale jest ona identyczna względem innych bibliotek. Proszę o pomoc w rozwiązaniu problemu.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #2 15297619
    kamyczek
    Poziom 38  
    Pierwsza sprawa to opis biblioteki i zapoznanie się z nim to że biblioteka obsługuje kartę nie oznacza że załatwia wszystkie operacje związane z obsługą cewki , poza tym warto umieścić schemat . tego typu karty nie mają własnego źródła zasilania energię czerpią pola magnetycznego cewki czytnika o ile on takie pole emituje . Czy biblioteka załatwia ten problem czy jest on załatwiany na drodze sprzętowej nie mam pojęcia . Poza tym w internecie , za darmo nikt nie powiesi porządnej biblioteki a jak już ją znajdziesz to zapłacisz autorowi
  • REKLAMA
  • #3 15297713
    excray
    Poziom 41  
    Tego typu karta:
    ATMEGA328P - RC522-tylko raz można odczytać kartę RFID
    Wykorzystano:
    SCK - PB5
    MISO - PB4
    MOSI - PB3
    NSS - PB2 z dodatkowym opornikiem 4k7 do +5V
    RESET - podpiety pod +5V
    Sprawdzałem inne biblioteki w tym od arduino i wszystkie wyglądają podobnie.
    Biblioteka której używam:
    MF522.c
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    MF522.h
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #4 15297766
    kamyczek
    Poziom 38  
    AntennaOn AntennaOff to chyba po coś jest w tej bibliotece nie trzeba czasem załączyć antenę po identyfikacji żeby podtrzymać zasilanie transpondera z karty ?
  • #5 15297790
    excray
    Poziom 41  
    Owszem jest coś takiego ale przeglądałem chyba z 5 różnych bibliotek z przykładowymi kodami i żaden nie używał tego w obsłudze. Żeby nie było nieporozumień - nie mam problemu z obsługą karty. Mogę się z nią połączyć, odczytywać, zapisywać, etc. tyle że jak odsunę tą kartę od czytnika i podsunę inną czy tą samą to już nic się nie dzieje. Prawdopodobnie chip po procedurze SelectTag zobligowany jest do komunikacji tylko z tą jedną wybraną kartą przynajmniej do momentu kiedy nie zrobimy czegoś w stylu deselect. tyle że najprawdopodobniej za to odpowiada komenda halt która z bliżej nieokreślonego powodu nie działa. Jak wspomniałem sprawdzałem tą komendę w kilku bibliotekach i wszędzie jest identyczna.
  • #6 15297799
    kamyczek
    Poziom 38  
    Wywołaj ponownie procedurę inicjalizacji czytnika powinno to przywrócić mu pierwotne ustawienia Halt wstrzymuje komunikację jak czytnik nie ma co zrobić z kartą zapis/odczyt . Może więc potrzeba zrobić inicjalizację lub twardy reset zasilaniem ;)
  • REKLAMA
  • #7 15297811
    excray
    Poziom 41  
    Zedytowałem post a w międzyczasie Ty odpowiedziałeś dlatego proszę przeczytaj jeszcze raz post #5
  • Pomocny post
    #8 15297812
    grko
    Poziom 33  
    O ile dobrze pamiętam (a kartami zajmowałem się bardzo dawno) aby wyjśc ze stanu HALT należy wykonać komendę WUPA. Niestety z tego co widzę nie ma jej w Twojej bibliotece.

    Edit:
    Masz jednak w bibliotece definicje tej komendy: PICC_REQALL
  • #9 15299811
    excray
    Poziom 41  
    Wygląda na to że czytnik "podwiesza się" po komendzie MFRC522_Auth. Jeśli po wszystkich operacjach jeszcze raz wywołam MFRC522_Auth ale z błędnym kluczem wtedy program dalej działa już bezproblemowo - wykrywa tą samą bądź kolejną kartę bez problemu. Chyba będę musiał podejść do tematu bardziej ambitnie zamiast i zapoznać się bliżej z obszernym DS-em tego układu.
  • Pomocny post
    #10 15299965
    grko
    Poziom 33  
    Zmieniłeś PICC_REQIDL na PICC_REQALL? Pomogło to coś?
  • Pomocny post
    #11 15300115
    kamyczek
    Poziom 38  
    A może tak po prostu napisać sobie samemu co potrzeba . Wystarczy przeczytać 2 pdfy od karty i czytnika i zrobić coś swojego od zera i cieszyć się własną biblioteką szybką pewną i stworzoną do własnych potrzeb ...
  • REKLAMA
  • #12 15304458
    excray
    Poziom 41  
    GrzegorzKostka napisał:
    Zmieniłeś PICC_REQIDL na PICC_REQALL? Pomogło to coś?

    Niestety nie
    kamyczek napisał:
    A może tak po prostu napisać sobie samemu co potrzeba . Wystarczy przeczytać 2 pdfy od karty i czytnika i zrobić coś swojego od zera i cieszyć się własną biblioteką szybką pewną i stworzoną do własnych potrzeb ...

    Dokładnie tego własnie wolałbym uniknąć.
    Na razie zamykam temat bo czytnik ten nie jest mi do niczego potrzebny - zajmowałem sie nim tylko z czystej ciekawości a mam teraz inne rzeczy na głowie. Gdyby ktoś miał taki sam problem i natknął sie na ten temat to informuję że pośrednim rozwiązaniem jest wywołanie MFRC522_Auth z błędnym kluczem. Kolegom @GrzegorzKostka i @kamyczek dziękuję za zainteresowanie tematem i chęć pomocy. Pozdrawiam.
REKLAMA