A lot of times it depends on your code and layout of a structure...
As Michael mentioned, it gets more complicated when you send data between two different types of processors. For example a 16 bit value takes up two bytes. On some processors it will be in memory as <LSB><MSB> and on others it will be <MSB><LSB> So general purpose code needs to understand this and the protocol needs to be set one way or the other and the code setup to read or write in the correct order...
Now as for packing, again it depends on processors, but some (many) processors demand that to access a 32 bit value it must be on a 4 byte boundary... Some I believe handle it, but take longer and others just raise an exception....
So when possible it is best to setup your structures with the largest sized values first, followed by the next sized ones... For example if you had a structure like:
Code:
struct {
uint8_t var1;
uint16_t var2;
uint16_t var3;
uint8_t var4;
uint32_t var5;
}
with PACK(1), this would take 10 bytes? Without packing, probably would take maybe (2+2+2+2+4) = 12 bytes? My first guess was 14, but it dpends as you have to figure how the alignment is for each member and how much padding it takes to get to the natural alignment...
But if you rearranged this, like:
Code:
struct {
uint32_t var5;
uint16_t var2;
uint16_t var3;
uint8_t var1;
uint8_t var4;
}
Then it does not matter if you pack or not pack it...
So if you are sending from a Pro mini to Teensy and you only need 8bits of data, I would assume 8 bit would work fine...
Edit: Not sure about RFM69 or how you are sending the data. But with may playing around with RFM95, I believe I am sending stuff using packets. Not sure how much time difference there is of sending lets say 2 data bytes in a packet versus 10... Let alone 1 vs 2.