Правильно: что бит DMA_CH0TRNIF_bm в регистре DMA_INTFLAGS по завершении задания установится все равно, даже если я прерывания не разрешала
ибо
When a transaction on channel n has been completed, the CHnTRFIF flag will be set.
Периферия ставит флаги прерывания независимо от того разрешены они или нет. А как по-другому-то?
думала, что раз уж TRFCNT в следующий раз не перезагружаем, то он всегда постоянный.
С чего бы ему постоянным быть?
When TRFCNT
reaches zero, the register is reloaded with the last value written to it.
Написано же -
is reloaded with the last value
Не поняла только, зачем он в 0x3B по дороге нулик пишет.
Предположу - 0x3B - это RAMPZ. В прерывании запись идёт через регистр Z, но функция обработки прерывания не может знать что делается регистром Z в остальной части программы, поэтому сначала сохраняет весь Z, потом обнуляет третий байт регистра и использует для своих целей.
4. У меня на плате старая ATxmega128A1 еще без USB, но и канал АЦП мне нужен только один, а потому проблемы с этим возникнуть не должно
Но 1MSps 12 бит оно же всё равно не выдаст, хоть и старая xmega? Или нет?