uint8_t
DATAPTR - uint16_t (у atxmega адресация 16-битная)
надо получить байт по адресу DATAPTR+n
tmp8=*((uint8_t*)(((USB_EndpointTable_t*)USB.EPPTR)->Endpoints[0].OUT.DATAPTR)+n);
так правильно?
Негласное правило supapro звучит так: не делай UB, иначе тебя побьют стандартом. Впрочем, может быть это правило не распространяется на железяки
Прикольно, и это они программируют наши микроконтролллеры...
Тут UB, программа некорректна
Получи uint16_t, потом выдели младший байт, если тебе так надо.
Кроме того, на все твои вопросы не ответить, не зная определений этих структур.
http://risovach.ru/thumb/upload/200s/2019/10/mem/larin-po-konyam_222429091_orig_.jpg?9bkt4
Так правильно. Если не считать, что там UB на UB
Обсуждают сегодня