matelekt Napisano Czerwiec 18, 2018 Udostępnij Napisano Czerwiec 18, 2018 Cześć wszystkim,Pracuje z z czujnikiem mpu9255(taki mpu6050 tylko z kilkoma dodatkami) i mikrokontrolerem stm32 f103. Mój problem polega na tym, że przy większej częstotliwości pobierania danych, mikrokontroler zawiesza się zaraz po starcie. Ale po kolei, z czujnikiem komunikuje się przez I2C. Konfiguracja żyroskopu i akcelerometru wygląda tak: HAL_I2C_Mem_Write(&hi2c2, 0xD0, GYRO_CONFIG, I2C_MEMADD_SIZE_8BIT, &SETTINGS_GYRO,1,1000); gyro config HAL_I2C_Mem_Write(&hi2c2, 0xD0, ACC_CONFIG, I2C_MEMADD_SIZE_8BIT, &SETTINGS_ACC,1,1000);//acc konfig Sam odczyt danych wywołuje w przerwaniu od timera z częstotliwością 1kHz(na tyle pozwala akcelerometr) HAL_I2C_Mem_Read(&hi2c2, ADDR_MPU, ACCEL_XOUT_H, I2C_MEMADD_SIZE_8BIT, &buf_mpu[0],14,1000); gdzie: ACC_CONFIG =28 GYRO_CONFIG = 27 SETTINGS_ACC=0x00 SETTINGS_GYRO=0x00 ACCEL_XOUT_H = 0x3B Dane pobieram z akcelerometru, termometru oraz żyroskopu. No i właśnie, przy takiej częstotliwości często mikrokontroler zawiesza się i nic się nie dzieje zaraz po starcie(odczytuje dane przy pomocy stmStudio), zazwyczaj załapie po kilku resetach. Zmniejszając częstotliwość przerwania, problem zdarza się rzadziej, aż przy pewnym poziomie ustępuje całkowicie. problem również znika gdy zakomentuje linie do odczytywania wartości. Jaki może być powód takiego działania? [Edit] Źle rozpoznałem problem, niezależnie od częstotliwości przerwania i odczytu danych, uC zawiesza się przy pierwszym wywołaniu funkcji HAL_I2C_Mem_Read. Zawieszenie występuje losowo, czasami kilkanaście razy jest ok a czasami tyle samo trzeba go resetować. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!