mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MFRC531 als Slave über USI an ATTiny2313


Autor: georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.


Ich arbeite an einem kleinen RFID Reader. Ich verwende als Controller 
einen ATTiny2313 und als Reader einen NXP Mifare MFRC531.

Diese Beiden ICs sind über SPI(USI) verbunden. (siehe Schaltplan)

Beitrag "Senden/Empfangen Problem mit ATtiny 2313 und FTDI FT232R"

Mein Problem: Ich bekomme vom MFRC531 keine Antwort auf DI(vom 
ATTiny2313)->Leitung ist immer auf LOW.

Ich verwende den ATTiny2313 als Master und habe SPI(USI) dort wie folgt 
initialisiert:
void init_master()
{
  DDRB=~(1<<PB5); //MOSI

}

unsigned char master_trans(unsigned char byte)
{
 
  USIDR=byte;
  USISR=(1<<USIOIF);
  do
    {
    USICR=  (1<<USIWM0)|
        (1<<USICS1)|
        (1<<USICLK)|
        (1<<USITC);
    }
  while (!(USISR&(1<<USIOIF)));
  return USIDR;
}

mit der Funktion "master_trans" kann ich ein byte über DO schicken - 
Funktioniert.


Bei der Initialisierung des MFRC531 habe ich nur NNS aus LOW geschaltet.
init_mfrc()
{
  DDRB |=  (1<<PB3); // NSS  -> Ausgang
  PORTB |=(1<<PB3); // NSS  -> LOW
}

Ich habe mir aus dem Datenblatt des MFRC531 die SPI -Spezifikation(Seite 
17 - 22). angesehen.

http://www.nxp.com/#/pip/pip=[pfp=41960]|pp=[t=pfp,i=41960]

Habe daraus folgenden gemacht:

//Write DATA
    master_trans(4); //Byte 0  : 0|ADDRESS|0  0|000010|0
    _delay_ms(1000);

    master_trans(170);//Byte 1  : 10101010
    _delay_ms(1000);

//Read DATA
    master_trans(132);//Byte 0   : 1|ADDRESS|0   1|000010|0
    _delay_ms(1000);

    master_trans(132);//Byte 1  : 1|ADDRESS|0   1|000010|0
    _delay_ms(1000);

    master_trans(0);//last Byte  : 0|000000|0  
Ich will mit dem oben gepostetem code, den FIFO ansprechen. Im 
Datenblatt(Seite 25) steht dass der FIFOData Register die Adresse 
0x02(also 10 binär) hat, diese hab ich dann oben als Addresse verwendet. 
Wahrscheinlich völliger Schwachsinn.


Ich befürchte, dass bei der Initialisierung vom MFRC531 noch so einiges 
fehlt. Kann mir da jemand helfen?


lg georg

Autor: georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusmmen!


Ich habe auf der Homepage des Herstellers NXP ein paar Tausend Zeilen 
Code gefunden. Diese sind für einen MFRC500 und einem C166 
Microcontroller.

Ich schaft aber nicht das essenzielle da raus zu filtern.

Ich will ja fürs erste nur mal 1 Byte über SPI hin und her schicken. 
dafür werd ich wohl nicht 3000 Zeilen Code brauchen, oder?

Autor: georg (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier der source code von der NXP Homepage.

habe mal versucht, die gesamgte BasicFunctionLibrary in mein Projekt zu 
einzubinden.
Bekomme beim builden folgende Fehlermeldungen:
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/bin/ld.exe: region text is full (tuerschl.elf section .text)
c:/winavr-20080610/bin/../lib/gcc/avr/4.3.0/../../../../avr/bin/ld.exe: region text is full (tuerschl.elf section .text)
MfRc500uC.o: In function `PcdBasicRegisterConfiguration':
D:\tuerschl\tuerschl\default/../MfRc500uC.c:2658: undefined reference to `SleepUs'
MfRc500uC.o: In function `PcdRfReset':
D:\tuerschl\tuerschl\default/../MfRc500uC.c:2231: undefined reference to `SleepMs'
MfRc500uC.o: In function `PcdReset':

PS:
ich verwende AVR Studio und ARV GCC

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.