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



Teraz jest 19 mar 2026, o 02:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 18 gru 2013, o 17:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 78
Lokalizacja: Grójec
Pomógł: 2

Witam. Napisałem sobie taką obsługę przerwania, która jest odpowiedzialna za analizę 3 ostatnich bitów w pierwszym elemencie tablicy i zapaleniu odpowiednich diod LED
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Mam problem z warunkiem if(ledidx == 3) ledidx = 0; wiem, że nie ma on sensu ponieważ nigdzie nie zwiększam wartości zmiennej ledidx która cały czas jest równa 0, ale warunek będzie mi potrzebny w następnych etapach pracy nad programem.
Jeśli go skasuje wszystko jest ok i zapalają się odpowiednie diody, natomiast jeśli go zostawię żadna dioda się nie zapala (brak reakcji).
Gdzie popełniłem błąd? :mrgreen:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2013, o 20:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

A czy zmienna "mask" jest przywracana do 128, bo wydaje mi się że tylko przy jej deklaracji przyjmuje tą wartość, a później to już ...to co wyniknie z programu czyli po pierwszym wykonaniu pętli for mask=0

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2013, o 21:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 78
Lokalizacja: Grójec
Pomógł: 2

Myślę, że jeśli zmienna mask nie jest statyczną to po wystąpieniu następnego przerwania ponownie przypisywana jest wartość 128 czyli tak jak powinno być



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2013, o 22:11 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

abstrahując od problemu
wywołanie funkcji w przerwaniu nie jest dobrym stylem programowania.
Generalnie tak się nie powinno robić.
Zastosuj ewentualnie funkcję inline.

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2013, o 22:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Witam
z jaką wartością porównujesz w rejestrze
bo może przerwanie nie wykonuje się do końca (jest przerywane przez siebie samego o ile jest to możliwe)
To tylko takie moje domysły i mogę się mylić ale warto sprawdzić :)
spróbuj po po dodaniu warunku zwiększyć wartość porównywaną (compare) żeby zwolnić
częstotliwość przerwania.



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 1 gość


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO