ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
433937 Топик полностью
fk0, легенда (19.08.2013 10:57 - 11:01, просмотров: 109) ответил Dingo на Запись, как поинимаю.
datatype -- тип данных ячейки/регистра куда запись. Если AVR, то там всё 8-битное, то можно написать unsigned char. Иногда просто unsigned (int) для 16-битных регистров (но к последним же нужно обращаться в определённом порядке часто, так что http://caxapa.ru/388971.html
нужно вручную в коде писать два обращения к нужным половинкам регистров в нужном порядке). И, кстати, volatile не гарантирует порядок операций! Тут обсуждали (см. ссылку). PS: (char*) нужен чтоб сказать компилятору, что базовый адрес считается по-байтово, а не по-словно или ещё как. Это может стать актуально, если он (сам адрес) является изначально не числом, а указателем на слово, например. Вместо (char *) можно (size_t) написать или лучше (ptrdiff_t). Или даже (unsigned) или (int), но последние 2 варианта могут не проканать на 16-битной архитектуре с адресуемыми данными больше 64кБайт. Вот (uintptr_t) или (intptr_t) подойдут, но они есть только при поддержке stdint.h
[ZX]