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



Teraz jest 22 cze 2026, o 17:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 11 cze 2014, o 17:29 
Offline
Nowy

Dołączył(a): 18 kwi 2014
Posty: 24
Pomógł: 0

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

Więc tak, poszczególne eventy są wywoływane z trybu enum. I teraz tak Timer_1 to zmienna która jest odejmowana w przerwaniu od Timera0 o jeden. Dlaczego nie przechodzi mi do pozycji PRACA_SILNIKA? Podczas gdy inne podobne warunki działają bezproblemow. Zmienna Timer_1 to uint16_t Atmega wyświetli to co ma wyświetlić i zamiast przejść do menu PRACY SILNIKA zamraża ją :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2014, o 18:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Nie jest to kompletny kod, ale może brakuje modyfikatora volatile przy zmiennej Timer_1...?

Poza tym dodam tylko, że takie wielokrotnie sprawdzanie warunków w pętli głównej, można również z powodzeniem zastąpić instrukcją switch:

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2014, o 19:48 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

Cytuj:
ale może brakuje modyfikatora volatile przy zmiennej Timer_1...?


Nie może, a na pewno, jeśli zmienna ma być dostępna również w przerwaniach to musi był modyfikator volatile, czyli:

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

_________________
Mam 16 lat, nie jestem zawodowcem ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2014, o 19:49 
Offline
Użytkownik
Avatar użytkownika

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

Musisz znaleźć miejsce gdzie dokładnie Ci się
wiesza uC w której funkcji bo z postu nie wynika to bezpośrednio

tu znajdziesz poradnik jak
https://www.youtube.com/watch?v=yVFf22JxuEs

------------------------ [ Dodano po: 1 minucie ]

@DamCos
Tylko tego nie wiemy bo nie ma wstawionych deklaracji zmiennych w poście
kolegi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 cze 2014, o 22:02 
Offline
Nowy

Dołączył(a): 18 kwi 2014
Posty: 24
Pomógł: 0

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

Cały kod. Volatile jest. Zacina się tylko w tym feralnym momencie. I jeszcze miałbym pytanie jak zrobić przerwanie Capture ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2014, o 00:27 
Offline
Nowy

Dołączył(a): 18 kwi 2014
Posty: 24
Pomógł: 0

Hehe :D Całą sieczke powodowało przerwanie nieustannie chodzące od timera1. Przez co wszystko inne się rozjeżdzało. Ponawiam problem mierzenia jeszcze Timerem 1 długości twania impulsu na którymś pinie. Da się tak zrobić jeśli 2 przerwania już wykorzystałem a potrzeba jeszcze jedno.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 cze 2014, o 18:45 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

Zaba napisał(a):
Musisz znaleźć miejsce gdzie dokładnie Ci się
wiesza uC w której funkcji bo z postu nie wynika to bezpośrednio

tu znajdziesz poradnik jak
https://www.youtube.com/watch?v=yVFf22JxuEs

------------------------ [ Dodano po: 1 minucie ]

@DamCos
Tylko tego nie wiemy bo nie ma wstawionych deklaracji zmiennych w poście
kolegi

Cytuj:
Zmienna Timer_1 to uint16_t Atmega wyświetli to co ma wyświetlić i zamiast przejść do menu PRACY SILNIKA zamraża ją :(

napisał, że to uint16_t

------------------------ [ Dodano po: 5 minutach ]

Konradev2 napisał(a):
Hehe :D Całą sieczke powodowało przerwanie nieustannie chodzące od timera1. Przez co wszystko inne się rozjeżdzało. Ponawiam problem mierzenia jeszcze Timerem 1 długości twania impulsu na którymś pinie. Da się tak zrobić jeśli 2 przerwania już wykorzystałem a potrzeba jeszcze jedno.


Nie wiem jaki masz procek (albo nie widzę :D ), ale ile masz timerów, tyle przerwań możesz zrobić. Jeśli masz dwa timery, to już trzeciego przerwania wewnętrznego chyba się nie da zrobić, chyba, że podasz jakiś zegar na pin INTx, np INT0, INT1, INT2.

_________________
Mam 16 lat, nie jestem zawodowcem ;)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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