Fout in Bit manipulation

int watch_get_date(uint8_t* year, uint8_t* month, uint8_t* day_of_month)
{
    uint8_t date_bits_low, date_bits_high;

    if (year == NULL || month == NULL || day_of_month == NULL)
    {
        return -1;
    }

    if (watch_i2c_read_byte(ADDRESS_DATE_LOW, &date_bits_low) != 0)
    {
        return -1;
    }
    if (watch_i2c_read_byte(ADDRESS_DATE_HIGH, &date_bits_high) != 0)
    {
        return -1;
    }

    watch_registers_get_date(
                date_bits_low, date_bits_low, year, month, day_of_month);

    return 0;
}

.h file
void watch_registers_get_date(
            uint8_t date_bits_low, uint8_t date_bits_high, uint8_t* year,
            uint8_t* month, uint8_t* day_of_month);

void watch_registers_get_date(
            uint8_t date_bits_low, uint8_t date_bits_high, uint8_t* year,
            uint8_t* month, uint8_t* day_of_month)
{
    
    *year = date_bits_low & 0b01111111 ; 
 
    *month = ((date_bits_high & 0b00000111)<<1) + (date_bits_low <<7);

    *day_of_month = ((date_bits_high & 0b11111000 >>3));

    
}

ik krijg steeds een fout bij get of month tijdens een test case te maken kan iemand zo zien wat het is

Het kan handig zijn als je de volledige (en exacte) fout melding geeft :wink: Je volledige programma maakt het ook eenvoudiger om alles te analyseren; als het te groot is kun je een mimimaal voorbeeld maken dat het gedrag vertoont.

//Edit:
Zie ook Error in Bit manipulation. Ik ga hier verder geen tijd aan besteden.

het is niet echt een fout meer van waneer ik een testcase maak deze in error krijgt van fail test. omdat deshifting van de bits niet goed gedaan is van get *month , op de engelshe forum kom ik niet verder ik denk dat hun er niks van snappen

Ik weet vrijwel zeker dat ze er meer van snappen dan je denkt. Als M[0..3] de maand is, zull je date_bits_low 7 plekken naar rechts moeten schuiiven om M[0] te krijgen, niet naar links.

Bedankt sterretje dit is een goede uitleg kort en krachtig nu werkt het wel bedankt

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.