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



Teraz jest 28 mar 2024, o 22:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 9 maja 2019, o 20:23 
Offline
Użytkownik

Dołączył(a): 28 maja 2016
Posty: 469
Lokalizacja: Katowice
Pomógł: 1

hej. dawno mnie tu nie było. Ale to dlatego,że zająłem się własną edukacją i niestety nie miałem czasu na programowanie uC.
Postanowiłem znów zasiąść do zestawy ATB i jest klops.
Przerabiam dla ćwiczeń multipleksowanie z poradnika Pawła Kardasia na YT. I mam kłopot z kodem w pętli głównej. Samo multipleksowanie działa mi super. Napisałem dodatkowo kod, który zlicza godziny i minuty. Jeśli w pętli głównej motorkiem napędzającym, a raczej zwalniającym będzie poczciwy delaj, to cyferki pięknie zliczają czas na wyświetlaczu siedmio segmentowym. Kłopot mam jeśli zamiast delaja chcę wrzucić zliczanie z przerwania. Coś źle robię i nie mogę dojść do tego, gdzie robię błąd. Wrzucam kod z delajem w pętli głównej, oraz z flagą z przerwania. Proszę o podpowiedź. :)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A tytaj koz bez delaja:


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



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


i kod z deklaracją zmiennej tykanie:

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


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


Ewidentnie jest coś nie tak ze zmienną tykanie. Niestety nie wiem w czym rzecz.



edytuję post.
Już mi się coś rozjaśniło po rozmowie z Darkiem. CHyba to ogarnę :)

_________________
Nikt nie mówił,że będzie łatwo...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2019, o 05:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

A czemu ty dajsz to extern?? Masz w innym pliku zdefiniowaną zmienną tykanie??


Poza tym ten warunek

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Będzie się wykonywał prawie cały czas bo zmienna tykanie == 0 jest tylko 1/20 tyknięć timera

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

Wtedy warunek wykona się jak tykanie==0 ale pozostaje jeszcze jeden problem, że pętla znów wykona się wiele razy gdy tykanie == 0 bo zmieni się dopiero przy kolejnym tyknięciu timera ( od tyknięcia do tyknięcie pętla główna wykona się wiele razy)

A najprosciej chyba bylo by gdyby w przerwaniu zwiejszac te zmienne licznik1 licznik2... a petla glowna niech sobie śmiga bez żadnego delay



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2019, o 11:37 
Offline
Użytkownik

Dołączył(a): 28 maja 2016
Posty: 469
Lokalizacja: Katowice
Pomógł: 1

tak, tykanie jest w innym pliku, dlatego jest extern. Wczoraj myślałem intensywnie i będę przerabiał kod. Mam już koncepcję, zobaczę co mi z tego wyjdzie :) Ale dziękuję za podpowiedzi

_________________
Nikt nie mówił,że będzie łatwo...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2019, o 11:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

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

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

Bo nigdzie nie widac :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2019, o 13:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

wojciechgorzolka napisał(a):
tak, tykanie jest w innym pliku, dlatego jest extern.

To oznacza, że ten plik, gdzie masz definicję zmiennej, nie jest kompilowany.

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


a zapis:
#ifndef MULTIPLEKS_MULTIPLEKS_H_
sugeruje, że plik ma końcówkę "multipleks.h" a ty inkludujesz "multipl.h" zatem masz duże pomieszanie z poplątaniem.
Powyższy, mylący zapis z #ifndef może powodować, że preprocesor pomija niektóre wpisy, pomimo, że nie widać "wyszarzeń" w IDE.
Chyba, że piszesz w innym edytorze dobrze byłoby go wskazać, a tak na slepo trochę.

Na próbę zdefiniuj w pliku main.c "volatile uint8_t tykanie", powinieneś dostać inne błędy, ale może kompilacja przejdzie.
Jeśli przejdzie to i tak to nie rozwiąże problemu, ale znaczy się, że bałagan w projekcie jest znacznie większy niż przypuszczam :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2019, o 15:58 
Offline
Użytkownik

Dołączył(a): 28 maja 2016
Posty: 469
Lokalizacja: Katowice
Pomógł: 1

dzięki :)

_________________
Nikt nie mówił,że będzie łatwo...



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 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