MFRC522 Probleme bei Ansteuerung

Gast #6715226
Lesenswert?

Hallo liebe leut,

ich versuche gerade einen RFID reader (mfrc522) zum laufen zu bringen.
Doch dabei habe ich Probleme (evtl. beim SPI)
1
MFRC -> Arduino Uno -> ATmega328
2
SDA -> Pin10 -> PB2
3
SCK -> PIN13 -> PB5
4
MOSI -> PIN11 -> PB3
5
MISO -> PIN12 -> PB4
6
IRQ -> nicht angeschlossen
7
RST -> PIN9 -> PB1
8
GND -> GND 
9
3.3V -> 3.3V

main.c
1
int main(void)
2
{
3
    sei();
4
    uart_init(MYUBRR);
5
    spi_initMaster();
6
    uart_putstring("start action\n");
7
    char mfrc522Info[100];
8
    mfrc522_init();
9
    uart_putstring("lese dumpVersion...\r\n");
10
    (void)mfrc522_getDumpVersionData(mfrc522Info);
11
    uart_putstring(mfrc522Info);
12
    while (1) 
13
    {
14
        _delay_ms(1000);
15
        uart_putstring("blabla\n");
16
    }
17
}
1
void mfrc522_init(void)
2
{
3
    DDRB |= (1 << PINB2);    /* Set the chipSelectPin as digital output */
4
    
5
    uart_putstring("0\n");
6
    mfrc522_writeRegister(MFRC522_COMMAND_REG, MFRC522_SOFT_RESET);
7
    uint8_t count_u8 = 0;
8
    uint8_t tempVal_u8 = 0;
9
    do
10
    {
11
        _delay_ms(50);
12
        mfrc522_readRegister(MFRC522_COMMAND_REG, &tempVal_u8);
13
    }while((tempVal_u8 & (1 << 4)) && (++count_u8 < 3));
14
    uart_putstring("ios\n")
15
}
16

17

18
static uint8_t mfrc522_writeRegister(uint8_t reg, uint8_t value)
19
{
20
    uint8_t retVal_u8 = 1;;
21
    DDRB &= ~(1 << PINB2);
22
    uart_putstring("1\n");
23
    retVal_u8 = spi_transmitData(reg);
24
    uart_putstring("2\n");
25
    retVal_u8 = spi_transmitData(value);
26
    uart_putstring("3\n");
27
    DDRB |= (1 << PINB2);
28
    return retVal_u8;
29
}
30

31
uint8_t spi_transmitData(uint8_t byte)
32
{
33
    /* start transmission */
34
    SPDR = byte;
35

36
    uart_putstring("before while transmit\n");
37
    /* wait for transission complete */
38
    while(!(SPSR & (1 << SPIF)));
39
    
40
    uart_putstring("after while transmit\n");
41

42
    //return SPDR;
43
    return 1;
44
}

Mein Output wie folgt aus: (benutze HTerm für UART)
1
start action
2
0
3
1
4
before while transmit
5
after while transmit
6
2
7
before while transmit

Dann bekomme ich keine Nachrichten mehr am PC.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren