I've tried several times now to get the CRC peripheral to work, and haven't gotten anything besides all zeros. FWIW I don't use ASF at all, but afaict I've replicated exactly what it does and still get nothing:
CRC.CTRL = CRC_RESET_RESET0_gc | CRC_SOURCE_IO_gc;
CRC.DATAIN = 0xde; // send data
CRC.DATAIN = 0xad; // send data
CRC.DATAIN = 0xbe; // send data
CRC.DATAIN = 0xef; // send data
CRC.STATUS |= CRC_BUSY_bm; // finish
loop_until_bit_is_clear(CRC.STATUS,CRC_BUSY_bp); // wait for done
// ...printf CHECKSUM3:0
It seems like a pretty simple peripheral, but I've got nothing.
a) does it actually work?
b) is the ASF driver doing anything else I'm missing?
At the moment I'm working with an 128a3u rev G but have used the 192a3u rev G with similar results. Selecting CRC32 and adding excessive delays does nothing either.