Uruchamiając układy z różnymi procesorami MSP430 napotkałem podobne problemy, ich rozwiązanie zajęło mi troszkę czasu, może komuś go zaoszczędzę.
- Program nie uruchamiał się po włączeniu zasilania, jednak w trybie debagowania, czy po resecie wszystko działało poprawnie.
- Jeśli procesor współpracuje z innymi układami, to układy te po włączeniu zasilania często nie działały, jednak w trybie debagowania, czy po resecie wszystko działało poprawnie.
Okazało się, że powodem takiego zachowania jest ograniczona szybkość narastania napięcia zasilającego. MSP430 zaczyna działać przy 1,8V, zgodnie z przykładami od TI w pierwszej linii kodu wyłączałem watchdoga, następnie konfigurowałem procesor. Jeśli przełączenie wewnętrznego zegara na wyższą częstotliwość nastąpiło zanim napięcie osiągnęło odpowiednią wartość to procesor się zawieszał a watchdoga był wyłączony... Np. dla zegara 16MHz wymagane jest napięcie co najmniej 3,3V.
Podobnie problem wygląda z peryferiami. Inicjacja peryferiów występuje przeważnie na początku programu, jeśli napięcie zasilające wynosi wtedy np. 2V a peryferia działają na 3,3V to nie zostaną one zainicjowane i problem gotowy.
Jeśli w układzie nie mamy możliwości dodania nadzorcy napięcia to najprostszym rozwiązaniem jest dodanie dostatecznie długo trwającej pętli na początku programu.