Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 7 sty 2025, o 05:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 12 maja 2016, o 01:53 
Offline
Nowy

Dołączył(a): 07 lip 2013
Posty: 13
Pomógł: 0

Niech mi ktoś to wytłumaczy:

Zmienne:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tablica:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdzieś tam w obsłudze przerwania od TIM wywoływana jest funkcja:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W poniższej konfiguracji działa poprawnie tzn. kontroler wysyła odpowiednią wartość z tabeli przez UART:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Po przeniesieniu funkcji send_char do pętli przestaje działać. Program wchodzi do pętli i zawiesza się na tej funkcji.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Co się dzieje takiego w pętli while że funkcja send_char przestaje działać?



Ostatnio edytowano 12 maja 2016, o 10:05 przez adamstepniak41, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 maja 2016, o 06:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Witam
Na początek zamienił bym miejscami volatile i uint32...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 maja 2016, o 07:23 
Offline
Użytkownik

Dołączył(a): 25 lip 2015
Posty: 140
Zbananowany użytkownik

Pomógł: 18

Czy w tym przypadku:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jesteś pewien, że kod działa? Bo wg mnie nie zobaczysz żadnego migania diody.

W drugim przypadku, czyli w którym nie działa wysyłanie, nie odbierasz ani jednego znaku? Jeśli tak, to spróbuj może takiego podejścia:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jesteś pewny, że przed uruchomieniem funkcji, zmienna globalna 'i' jest równa zero?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 maja 2016, o 09:59 
Offline
Nowy

Dołączył(a): 07 lip 2013
Posty: 13
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 maja 2016, o 10:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Witam.
Co do pętli while, to zawiesza się po uzyskaniu przez zmienną i wartości 100.
Nie widzę żerowania zmiennej i.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO