Цитата(rezident @ Oct 8 2007, 15:20)

должен ли быть только указатель на структуру port_t типом volatile или все-таки все члены структуры должны быть volatile?
volatile там не указатель, а тот объект, на который он указывает.
Ведь не
port_t * volatile pport;написано.
Т.е. вся структура (все её поля) - volatile. Так же, как все они const, если вся структура const.
Вместо этого приписывать кавлификатор персонально к полям имеет смысл только тогда, когда часть полей volatile, часть - нет.
Собственно, квалификатор нужно было вообще в typedef включить и везде использовать просто
port_t *Код
typedef volatile struct {
uint8_t pin;
uint8_t ddr;
uint8_t port;
} port_t;