1. Zamiana miejscami nic nie dała
2. Tak jestem pewny, dioda nie miała migać. Kod działa, ponieważ na PC otrzymuje wysłane z kontrolera bajty. Linijki z załączaniem i wyłączeniem diody to pozostałość po moich próbach ustalenia w którym miejscu program się zawiesza. Zapomniałem tego usunąć przed wklejeniem. Już poprawiam.
3. Omyłkowo napisałem że instrukcja sendMessage(standardMessage); wywoływana jest z poziomu pętli głównej programu. W rzeczywistości jest wywoływana z poziomu przerwania od timera.
4. Instrukcja nie działa w głównej pętli programu, w konfiguracji w której działa w timerze
------------------------ [ Dodano po: 22 minutach ]Już sobie poradziłem
Okazało się że program zawieszał się w obsłudze przerwania od UART. Timer miał ustawiony wyższy priorytet, więc instrukcja z tego poziomu była wywoływana pomimo tego że while nie działał bo program wisiał na przerwaniu od UART. Cudów z pętlą while nie potrafię wytłumaczyć, ale problem już nie występuje po poprawieniu kodu.