Hi!
Ich würde gern auf ein Array von Bytes, welcher folgendermaßen definiert
ist zugreifen:
1 | const uint8_t tx_addr[5] = {0x00,0x00,0x00,0x00,0x00};
|
In der folgenden Funktion möchte ich über dieses Array iterieren:
1 | void rf_write_register(uint8_t reg, const uint8_t *value, uint8_t len){
|
2 | rf_CSN_lo();
|
3 | spi_shift_sync(W_REGISTER|(REGISTER_MASK & reg));
|
4 | while(len--){
|
5 | spi_shift_sync(*(value++));
|
6 | }
|
7 | rf_CSN_hi();
|
8 | }
|
Ich rufe die Funktion so auf:
1 | rf_write_register(TX_ADDR,tx_addr,5);
|
Ich erwarte, dass die Funktion "spi_shift_sync" mit dem Inhalt des
dereferenzierten Pointers "value" aufgerufen wird.
Stadtdessen aber wird Code generiert welcher die Adresse der
Speicherzelle "value" im Datenspeicher nimmt und diese als Funktion
aufruft...
1 | 0xCC: MOVLB 0x0
|
2 | 0xCD: MOVF value, W
|
3 | 0xCE: MOVLP 0x1
|
4 | 0xCF: CALLW
|
5 | 0xD0: MOVLP 0x0
|
6 | 0xD1: MOVLP 0x1
|
Was geht da schief?
Viele Grüße
Alex