Код
volatile uint16_t* p1 = &OCR3A;
volatile unsigned short* p2 = &OCR3A;
На вторую строчку получаю:
warning: initialization from incompatible pointer type
Компилятор правильно проводит различие между unsigned int и unsigned short - это разные типы.
Есть определение в stdint.h: typedef unsigned int uint16_t;
а в нашем случае (avr-gcc) int реально эквивалентен short.
Макросы в sfr_defs.h во всю используют uint16_t.
Короче где-то не стыковка, или у меня в голове или не совсем корректно объявлен uint16_t (на мой взгляд, надо его объявлять через unsigned short).
Кто рассудит?