NRF24L01+ China-Kracher: Bug oder Feature?

Gast #4444379
Lesenswert?

Hallo,

beim Debuggen vieler Register um der Ursache auf den Grund zu gehen, 
warum die sch... Dinger immer wieder "einfrieren" fiel mir das hier auf:

Ich lese die Payload zurück mit unten stehendem Code. Dabei fiel auf 
dass im Register Fifo_Status die Zahl 0x17 stand. Häh? Fifo is full und 
Fifo is empty zugleich? Yupp... mehrfach getestet indem ich dem Modul 1 
oder 2 Payload schickte. Das Flag FIFO Full setzt sich nicht zurück. 
Müsste es aber ... nur vergleiche ich hier wieder eine Klon Chip mit dem 
Original Datenblatt....argh.

Kann das jemand so bestätigen?
1
void EXTI1_IRQHandler()
2
{
3
    /* IRQ Flag prüfen auf Fehlinterrupt*/
4
    if (EXTI_GetITStatus(EXTI_Line1) == RESET)
5
        return;
6

7
    CE_LOW; 
8

9
    /* Ist das Fifo Status RX Data Bit gesetzt? */
10
    uint8_t status = RF_ReadRegSingle(NRF24L01_REG_FIFO_STATUS);
11
    if ((status & 0x01) == 0)
12
    {
13
        /* RF Modul auslesen */
14
        uint8_t*ptr = (uint8_t*)&rf_data;
15
        CSN_LOW;
16
        SPI_TransferByte(NRF24L01_CMD_R_RX_PAYLOAD);
17
        for (uint8_t i = 0; i < RF_Payload_size; i++)
18
            *(ptr++) = SPI_TransferByte(0xff);
19
        CSN_HIGH;
20

21
        CLEAR_STATUS;
22

23
        /* Fifo Status prüfen und ggf. Restmüll auslesen */
24
        uint8_t stat = RF_ReadRegSingle(NRF24L01_REG_FIFO_STATUS);
25
        do {
26
            if ((stat & 0x01) == 0) {
27
                CSN_LOW;
28
                SPI_TransferByte(NRF24L01_CMD_R_RX_PAYLOAD);
29
                for (uint8_t i = 0; i < RF_Payload_size; i++)
30
                   SPI_TransferByte(0xff);
31
                CSN_HIGH;
32
            }
33
            stat = RF_ReadRegSingle(NRF24L01_REG_FIFO_STATUS);
34
        } while ((stat & 0x01) == 0);
35

36
usw. usw.
Angehängte Dateien:
Gast #4444653
Lesenswert?

Beim ersten Mal wars ganz sicher ein Bug im GCC, diesmal ist der 
Chiphersteller schuld. Was kommt als nächstes, du findest einen Fehler 
in deinem Taschenrechner, den ganz sicher SIE zu verantworten haben?

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