Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[atmega16][c]problem z odczytem RFID na układzie em4095

elvis1987 02 Maj 2010 19:53 1117 0
  • #1 02 Maj 2010 19:53
    elvis1987
    Poziom 13  

    Witam.
    Od dwóch dni walczę ze zrobieniem czytniak rfid. Przeczytałem notkę em4095 i jak dobrze zrozumiałem,w trybie do odczytu (to mnie interesuje) sygnał SHD odpowiada czy układ ma być w trybie uśpienia czy nie (dałem na 0, aby cały czas pracował), sygnał MOD zwieramy do masy (ja dałem zero), RDY/CLK ma dwa zadania - podaje nam sygnał kiedy ktoś zbliżył kartę do czytnika a potem daje nam sygnał zegarowy synchronizujący nas podawanymi danymi. demod który podaje nam już sygnał z danymi

    to moja inicjalizacja:

    Code:
    // Krok 1: Inicjalizacja portow mikrokontrolera jako wejscie
    
       RFID_DDR &=   ~ (1<<DEMOD);      // DEMOD jako wejscie (tutaj odczytuje przerwanie)
       RFID_DDR |= (1<<SHD | 1<<MOD);   // SHD i MOD wyjscia
       RFID_PORT &= ~ (1<<SHD | 1<< MOD);   // zero na tych pinach

       // Krok 3: inicjalizacja przerwania
       MCUCR |=  1<<ISC10;    //przerwanie wyzwalane każdą zmianą
          GICR  |=  1<<INT1;//0x80;    //aktywne INT

       // Krok 4: wlaczenie przerwania
       sei();

    Najpierw chciałem sprawdzić czy poda mi sygnał mówiący o pojawieniu się karty w obrębie czytnika. Więc ustawiłem przerwanie. Jeżeli pojawi się sygnał RDY to na wyświetlaczu miało się pojawić "Odczytuje kartę"

    No i na początku mam już problem bo nie ma karty w pobliżu a on mi pokazuje "odczytuje kartę".
    I teraz jak podłącze do wyjścia DEMOD lub RDY w em4095 do przerwania to mam tak samo (tylko jak odłącze przewód to nie ma przerwania)
    moja funkcja main
    Code:

    int main(void){

    LCD_Initalize();
    LCD_Clear();
    LCD_Home();
    LCD_GoTo(0,0);
    LCD_WriteText("Przybliz karte");
    RFIDinit(); // inicjalizacja rfid
    while(1){ // funkcja główna
    }
    return 0;
    }

    SIGNAL (SIG_INTERRUPT1)
    {
    LCD_GoTo(0,1);
    LCD_WriteText("Odczytuje karte");
    }

    ktoś mógłby mnie naprowadzić co robię źle? Może o czymś zapomniałem...?

    0 0
  Szukaj w 5mln produktów