Witam,
Jakiś czas temu na forum pytałem o koncepcję prostownika mikroprocesorowego. Od tamtego czasu zacząłem działać i stworzyłem płytkę, wlutowałem komponenty i zacząłem pisać program i testować układy. Wszystko szło dobrze dopóki nie rozbudowałem programu i zacząłem testy pod obciążeniem. W aplikacji wykorzystuję 3 wejścia ADC do pracy z DMA: pomiar prądu (wzmacniacz (INA180A1), napięcia na wyjściu(dzielnik), oraz potencjometr do ustawienia prądu ładowania. Odczyty są w miarę okej, dane zapisuję w tablicy. Na tej podstawie zmniejszam lub zwiększam PWM tak by U_odczyt nie przekroczyło 14,8V oraz jednocześnie nie było przekroczenia I_odczyt ustawionego na podstawie I_zadane z potencjometru. Wszystko działało w miarę ok, do czasu gdy nie zwiększę prądu do 4-5A. Wtedy układ się zawiesza i wpada w HardFault_Handler lub czasem NMI_Handler. Wykluczyłem problemy z zasilaniem, na sztywno Potencjometr->PWM wszystko chodzi bez zarzutu. Próbowałem szukać przyczyny i modyfikować kod, debugować ale bezskutecznie, jestem tylko hobbystą i dopiero co zacząłem przygodę z CortexM0. Poniżej zrzuty rejestrów w momencie wykrycia HardFault przez CubeIDE oraz kod w funkcji main. Proszę o pomoc w namierzeniu problemu bo próbuję od kilku dni i nic nie mogę wymyśleć. Z góry dziękuję.
Jakiś czas temu na forum pytałem o koncepcję prostownika mikroprocesorowego. Od tamtego czasu zacząłem działać i stworzyłem płytkę, wlutowałem komponenty i zacząłem pisać program i testować układy. Wszystko szło dobrze dopóki nie rozbudowałem programu i zacząłem testy pod obciążeniem. W aplikacji wykorzystuję 3 wejścia ADC do pracy z DMA: pomiar prądu (wzmacniacz (INA180A1), napięcia na wyjściu(dzielnik), oraz potencjometr do ustawienia prądu ładowania. Odczyty są w miarę okej, dane zapisuję w tablicy. Na tej podstawie zmniejszam lub zwiększam PWM tak by U_odczyt nie przekroczyło 14,8V oraz jednocześnie nie było przekroczenia I_odczyt ustawionego na podstawie I_zadane z potencjometru. Wszystko działało w miarę ok, do czasu gdy nie zwiększę prądu do 4-5A. Wtedy układ się zawiesza i wpada w HardFault_Handler lub czasem NMI_Handler. Wykluczyłem problemy z zasilaniem, na sztywno Potencjometr->PWM wszystko chodzi bez zarzutu. Próbowałem szukać przyczyny i modyfikować kod, debugować ale bezskutecznie, jestem tylko hobbystą i dopiero co zacząłem przygodę z CortexM0. Poniżej zrzuty rejestrów w momencie wykrycia HardFault przez CubeIDE oraz kod w funkcji main. Proszę o pomoc w namierzeniu problemu bo próbuję od kilku dni i nic nie mogę wymyśleć. Z góry dziękuję.
Kod: C / C++