Hallo Community,
ich programmiere gerade eine simple Kommunikation über den ARM M0+
SAMC20 von Atmel in dem Atmel Studio 7.
Folgendes Problem:
1 | uint16_t* writeptr = (uint16_t*)write_data;
|
2 | uint16_t* readptr = (uint16_t*)DB_get_DBAdress() + startpos;
|
3 | uint16_t count = 0;
|
4 |
|
5 | while (count != n_Register)
|
6 | {
|
7 | writeptr[count] =swap16(readptr[count]);
|
8 | count++;
|
9 | }
|
write_data ist ein Pointer, der der Funktion übergeben ist. Write_data
Zeigt auf ein Byte in einem Sendepuffer. Diese Daten müssen in das
Telegramm eingefügt werden, vorher muss die Eandiness geändert werden.
(swap16)
Außerdem kann write_data auf ein Byte zeigen, welches nicht im 16 bit
alignment liegt.
Ich suche nun nach einer Möglichkeit dem Compiler dies mitzuteilen. Das
Programm geht regelmäßig in HardFault.
ARM Information Center sagt:
1 | __packed uint32_t* pMyPointer = (__packed uint32_t*)(&tmp)
|
was jedoch vom Atmel Studio beim Compilieren laut Meldung ignoriert
wird.
Kann mir jemand die Lösung nennen?
Danke & Gruß
Markus