Если вы используете 8-битный MCU, сдвиг целой 32-битной переменной - это немного работы. В этом случае лучше прочитать 4 байта CurrentPosition, используя арифметику указателя. Актерский состав:
unsigned char *p = (unsigned char*)&CurrentPosition;
не изменяет текущую позицию, но если вы попытаетесь записать в p [0], вы измените младший байт текущей позиции. Если вам нужна копия, сделайте это:
unsigned char *p = (unsigned char*)&CurrentPosition;
unsigned char arr[4];
arr[0] = p[0];
arr[1] = p[1];
arr[2] = p[2];
arr[3] = p[3];
и работа с обр. (Если вы хотите, чтобы младший байт был первым, измените порядок в этих назначениях).
Если вы предпочитаете 4 переменные, вы, очевидно, можете сделать:
unsigned char CP1 = p[0];
unsigned char CP2 = p[1];
unsigned char CP3 = p[2];
unsigned char CP4 = p[3];