Witam,
Mam taki dylemat otóż jest sobie funkcja odczytująca z pamięci eeprom up
5bajtów i jeśli używam wskaźnika na tablicę do przenoszenia to qupa ,a jak przenosze dane przez 5 wskaźników to jest ok.. Zeby było jaśniej co i jak kawałek kodu z funkcją wykożystującą wskaźniki:void LoadDataProfile(uint8_t *_pwm[4], uint8_t *_outs, uint8_t prof_id) { uint8_t tmp, tmp2; prof_id = prof_id*5; // 5bajtów konfiguracyjnych (zakres konfiguracji:
0x05[05]-0x14[20]) for (tmp=0;tmp<4;tmp++) { tmp2 = prof_id+tmp; *(_pwm1+tmp) = eeprom_read_byte(tmp2); } tmp2 = prof_id+4; *_outs = eeprom_read_byte(tmp2); }i wywołanie: uint8_t _pwm[4], _outs; [..] LoadDataProfile(&_pwm,&_outs,2);
I w tablicy potem mam tylko wartość dla _pwm[0] i _pwm[3] ,a pozostałe [1] i [2] ,mają = 0x00. Nie wiem czemu.
A ten kod działa (nawet za dobrze :)) ): void LoadDataProfile(uint8_t *_pwm1, uint8_t *_pwm2, uint8_t *_pwm3, uint8_t *_pwm4, uint8_t *_outs, uint8_t prof_id) { uint8_t tmp, tmp2; prof_id = prof_id*5; // 5bajtów konfiguracyjnych (zakres konfiguracji:
0x05[05]-0x14[20]) tmp2 = prof_id+0; *_pwm1 = eeprom_read_byte(tmp2); tmp2 = prof_id+1; *_pwm2 = eeprom_read_byte(tmp2); tmp2 = prof_id+2; *_pwm3 = eeprom_read_byte(tmp2); tmp2 = prof_id+3; *_pwm4 = eeprom_read_byte(tmp2); tmp2 = prof_id+4; *_outs = eeprom_read_byte(tmp2); }i wywołanie: LoadDataProfile(&_pwm[0],&_pwm[1],&_pwm[2],&_pwm[3],&_outs,1);
Może mi wskazać ktoś gdzie robie błąd w tym pierwszym kodzie czy to jest jak czarna dziura :/
Ps. Wskaźników staram się omijać jak ognia :/ - nie jestem z nimi za pan brat ale praktyka czyni mistrza :))