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

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

elvis1987 02 Maj 2010 19:53 1333 0
REKLAMA
  • #1 8027232
    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:
    // 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
    
    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...?
  • REKLAMA
REKLAMA