<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=8&amp;t=19143&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-09-07T23:04:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=19143&amp;mode</id>
<entry>
<author><name><![CDATA[RybaSG]]></name></author>
<updated>2017-09-07T23:04:02+01:00</updated>
<published>2017-09-07T23:04:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19143&amp;p=194641#p194641</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19143&amp;p=194641#p194641"/>
<title type="html"><![CDATA[RFID RC522]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19143&amp;p=194641#p194641"><![CDATA[
Cześć, <br />Próbowałem ostatnio ujarzmić czytnik kart RFID RC522, niestety bez skutku. Znalazłem na internecie spis komend, które umieszczam poniżej.<br /><br />[syntax=c]/* Registers<br /><br />   MFRC522 Datasheed Page 36<br />*/<br /><br />// Command and status<br />#define CommandReg    0x01 // Starts and stops command execution<br />#define ComIEnReg     0x02 // Enable and disable interrupt request control bits<br />#define DivIEnReg     0x03 // Enable and disable interrupt request control bits<br />#define ComIrqReg     0x04 // Interrupt request bits<br />#define DivIrqReg     0x05 // Interrupt request bits<br />#define ErrorReg      0x06 // Error bits showing the error status of the last command executed<br />#define Status1Reg    0x07 // Communication status bits<br />#define Status2Reg    0x08 // Receiver and transmitter status bits<br />#define FIFODataReg   0x09 // Input and output of 64 byte FIFO buffer<br />#define FIFOLevelReg  0x0A // Number of bytes stored in the FIFO buffer<br />#define WaterLevelReg 0x0B // Level of FIFO underflow and overflow warning<br />#define ControlReg    0x0C // Miscellaneous control registers<br />#define BitFramingReg 0x0D // Adjustments for bit-oriented frames<br />#define CollReg       0x0E // Bit position of the first bit-collision detected on the RF interface<br /><br />// Command<br />#define ModeReg        0x11 // Defines general modes for transmitting and receiving<br />#define TxModeReg      0x12 // Defines general modes for transmitting and receiving<br />#define RxModeReg      0x13 // Defines reception data rate and framing<br />#define TxControlReg   0x14 // Controls the logical behavior of the antenna driver pins TX1 and TX2<br />#define TxASKReg       0x15 // Controls the setting of the transmission modulation<br />#define TxSelReg       0x16 // Selects the internal sources for the antenna driver<br />#define RxSelReg       0x17 // Selects internal receiver settings<br />#define RxThresholdReg 0x18 // Selects thresholds for the bit decoder<br />#define DemodReg       0x19 // Defines demodulator settings<br />#define MfTxReg        0x1C // Controls some MIFARE communication transmit parameters<br />#define MfRxReg        0x1D // Controls some MIFARE communication receive parameters<br />#define SerialSpeedReg 0x1F // Selects the speed of the serial UART interface<br /><br />// Configuration<br />#define CRCResultRegL   0x21 // Shows the MSB and LSB values of the CRC calculation<br />#define CRCResultRegH   0x22<br />#define ModWidthReg     0x24 // Controls the ModWidth setting<br />#define RFCfgReg        0x26 // Configures the receiver gain<br />#define GsNReg          0x27 // Selects the conductance of the antenna driver pins for modulation<br />#define CWGsPReg        0x28 // Defines the conductance of the p-driver output during periods of no modulation<br />#define ModGsPReg       0x29 // Defines the conductance of the p-driver output during periods of no modulation<br />#define TModeReg        0x2A // Defines settings for the internal timer<br />#define TPrescalerReg   0x2B // Defines settings for the internal timer<br />#define TReloadRegL     0x2C // Defines the 16-bit timer reload value<br />#define TReloadRegH     0x2D<br />#define TCounterValRegL 0x2E // Shows the 16-bit timer value<br />#define TCounterValRegH 0x2F<br /><br />// Test register<br />#define TestSel1Reg     0x31 // General test signal configuration<br />#define TestSel2Reg     0x32 // General test signal configuration and PRBS control<br />#define TestPinEnReg    0x33 // Enables pin output driver on pins D1 to D7<br />#define TestPinValueReg 0x34 // Defines the values for D1 to D7 when it is used as an I/O bus<br />#define TestBusReg      0x35 // Shows the status of the internal test bus<br />#define AutoTestReg     0x36 // Controls the digital self test<br />#define VersionReg      0x37 // Shows the software version<br />#define AnalogTestReg   0x38 // Controls the pins AUX1 and AUX2<br />#define TestDAC1Reg     0x39 // Defines the test value for TestDAC1<br />#define TestDAC2Reg     0x3A // Defines the test value for TestDAC2<br />#define TestADCReg      0x3B // Shows the value of ADC I and Q channels<br /><br /><br /><br />/* Commands<br /><br />   MFRC522 Datasheed Page 70<br />*/<br /><br />#define cmd_idle             0x00 // No action, cancels the current command execution<br />#define cmd_mem              0x01 // Stores 25 bytes into the internal buffer<br />#define cmd_generateRandomID 0x02 // Generates a 10-byte random ID number<br />#define cmd_calcCRC          0x03 // Activates the CRC coprocessor of performs a self test<br />#define cmd_transmit         0x04 // Transmits data from the FIFO buffer<br />#define cmd_noCmdChange      0x07 // Can be used to modify the CommandReg register bits without affecting the command<br />#define cmd_recieve          0x08 // Activates the receiver circuits<br />#define cmd_transceive       0x0C // Transmits data from FIFO buffer to antenna and activate receiver after transmission<br />#define cmd_mfAuthent        0x0E // Performs the MIFARE standard authentication as a reader<br />#define cmd_softReset        0x0F // Resets the MFRC522[/syntax]<br /><br />Zależy mi głównie tylko na odczycie karty i wyświetlenie kodu na wyświetlaczu LCD. <br /><br />Tak wygląda mój program :<br />main.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;SPI/SPI.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />int main()<br />{<br />PORTB |= (1&lt;&lt;PB4);<br /><br />SPI_init_master();<br />lcd_init();<br />//sei();<br /><br /><br />SPI_send(0x02);<br /><br /><br />for(;;)<br />{<br />lcd_hex(SPI_receive());<br />_delay_ms(500);<br />}<br /><br />}[/syntax]<br /><br />SPI.h<br />[syntax=c]#ifndef SPI_H_<br />#define SPI_H_<br /><br />#define MOSI PB5<br />#define MISO PB6<br />#define SCK PB7<br />#define SS PB4<br /><br />void SPI_init_master();\<br />void SPI_init_slave();<br />void SPI_send( uint8_t byte);<br />uint8_t SPI_receive(void);<br /><br />#endif /* SPI_SPI_H_ */[/syntax]<br /><br />SPI.c<br />[syntax=c]/*<br /> * SPI.c<br /> *<br /> *  Created on: 7 Sep 2017<br /> *      Author: Maciej<br /> */<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;SPI.h&quot;<br /><br />void SPI_init_master()<br />{<br />// outputs<br />DDRB |= (1&lt;&lt;MOSI) | (1&lt;&lt;SCK) | (1&lt;&lt;SS);<br />// miso is always input if 1&lt;&lt;SPE<br /><br />SPCR |= (1&lt;&lt;SPE) | (1&lt;&lt;MSTR) | (1&lt;&lt;SPR1); // enable, master, prescaler 64<br /><br />}<br /><br />void SPI_send( uint8_t byte)<br />{<br />SPDR = byte;<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />}<br /><br />uint8_t SPI_receive(void)<br />{<br />while( !(SPSR &amp; (1&lt;&lt;SPIF)) );<br />return SPDR;<br />}<br /><br />void SPI_init_slave()<br />{<br />DDRB |= (1&lt;&lt;MISO);<br />SPCR |= (1&lt;&lt;SPE);<br />}[/syntax]<br /><br />Do czytnika wysyłam 0x02 co ma spowodować wygenerowanie losowego ID.<br />Ma ktoś może doświadczenie z takim czytnikiem i jest w stanie udzielić jakiś porad jak się za to dobrze zabrać? Wiem, że takie ID jest bodajże 32 bitowe, ja odczytuję tylko 8 bitów, ale zależy mi na jakiejkolwiek komunikacji z modułem.<br />Z góry dziękuję i pozdrawiam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=15776">RybaSG</a> — 7 wrz 2017, o 23:04</p><hr />
]]></content>
</entry>
</feed>