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



Teraz jest 28 mar 2024, o 15:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 17 kwi 2019, o 22:14 
Offline
Użytkownik

Dołączył(a): 14 wrz 2017
Posty: 85
Pomógł: 1

Cześć,
Mam problem z właściwym ustawieniem licznika T1 tak żeby przerywanie uruchamiało się co 1s.
Licznik konfiguruje w następujący sposób:

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


i obsługa przerywania

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


Przerywanie uruchamia się ale nie co 1s i co więcej mam wrażenie że zmiany wartości w OCR1A nie wpływają na częstotliwość przerywania :( Błąd jest pytanie tylko jaki?

Dodatkowo jak dodałem blok konfiguracji i obsługi przerywania przestał działać mi odbiór pakietów z atnelowskiej biloteki NRF.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2019, o 23:40 
Offline
Użytkownik

Dołączył(a): 14 wrz 2017
Posty: 85
Pomógł: 1

Mam trop, dopiero teraz zauważyłem że są dwa tryby ctc i jak używam ocr1a to muszę użyć inny tryb. Sprawdzę rano..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2019, o 23:51 
Offline
Użytkownik

Dołączył(a): 30 sie 2012
Posty: 226
Pomógł: 11

W rejestrze TCCR1B masz bity WGM13 oraz WGM12, a nie w rejestrze TCCR1A.
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: 18 kwi 2019, o 07:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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

Natomiast wysyłanie czegoś przez uart w przerwaniu to nie jest dobry pomysł.

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2019, o 07:56 
Offline
Użytkownik

Dołączył(a): 14 wrz 2017
Posty: 85
Pomógł: 1

mczarny napisał(a):
Po pierwsze to tryb CTC to tryb - 4
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Natomiast wysyłanie czegoś przez uart w przerwaniu to nie jest dobry pomysł.


Dzięki teraz działa. O ustawianiu bitów WGM13/12 wspominali w rozdziale o TCCR1A i to mnie zmyliło.
Natomiast pytanie dlaczego wysyłanie (a właściwie wrzucanie do bufora, wysyłka jest zrobiona na podstawie bluebooka) w przrywaniu to zły pomysł? Faktycznie jak dodam tą linijke to program przestaje dobrze działać - przestaje wykonywać się kod w pętli głównej?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2019, o 08:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

szymanskim napisał(a):
Natomiast pytanie dlaczego wysyłanie (a właściwie wrzucanie do bufora, wysyłka jest zrobiona na podstawie bluebooka) w przrywaniu to zły pomysł? Faktycznie jak dodam tą linijke to program przestaje dobrze działać - przestaje wykonywać się kod w pętli głównej?

Przeanalizuj sobie procedurę wysyłania znaków przez uart. Jak myślisz czy wysyłanie korzysta z przerwań? Ano korzysta wiec następuje przerwanie w przerwaniu i robi się kaszana. Powołaj sobie lepiej timer programowy na podstawie sprzętowego i wysyłaj to co chcesz w pętli głównej korzystając już z timera programowego.

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2019, o 09:46 
Offline
Użytkownik

Dołączył(a): 14 wrz 2017
Posty: 85
Pomógł: 1

mczarny napisał(a):
szymanskim napisał(a):
Przeanalizuj sobie procedurę wysyłania znaków przez uart. Jak myślisz czy wysyłanie korzysta z przerwań? Ano korzysta wiec następuje przerwanie w przerwaniu i robi się kaszana. Powołaj sobie lepiej timer programowy na podstawie sprzętowego i wysyłaj to co chcesz w pętli głównej korzystając już z timera programowego.


Ok dzięki. Rozumiem że jak napisałeś żeby wyświetlać w pętli głównej to sugerujesz zrobić wysyłanie na uarta bez przerywan czyli wrzucac po znaku i patrzec czy sie wyslalo i nie bawic sie w przerywania uarta? W domu przetestuje bibloteke wysyki bez przerywań - dodalem jednego #define żeby przełączyć biblotekę w tryb bezprzerywaniowy.
Powiem szczerze, że jestem zaskoczony że nie jest wskazane, żeby chodziło parę różnych przerywań. Zakładałem że jest stos i jeśli nawet taka sytuacja się wydarzy to nic złego się nie stanie, no chyba że mówimy o sytuacji gdzie zabraknie miejsca na zmienne na stosie? W końcu jest parę rodzajów przerywanie i chyba twórcy procka założyli że użytkownik wykorzysta parę na raz typu timer + UART?

Swoją drogą ten licznik robiłem po to aby głównie mierzyć czas od ostatniego odbioru pakietu przez biloteke NRF24 i jak czas był za duży restartowałem procek ale okazuje się,że niezbyt o pomaga bo problem jest raczej z układem NRF (a możliwe że z całym ukłądem) i reset procka nic nie daje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2019, o 12:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

W pętli główniej ale nie znak po znaku tylko za pomocą timera programowego coś np:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Masz BB więc sięgnij do rozdziału o systemach czasu rzeczywistego pod koniec książki i zobaczysz jak można to pięknie zrobić.


Autor postu otrzymał pochwałę

_________________
Pomóżcie mi stanąć na nogi



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

Dołączył(a): 14 wrz 2017
Posty: 85
Pomógł: 1

Ok, w wolnym czasie zerknę. Mam te rozdział w planach ale nie było czasu. Na razie to przerobiłem biblotekę wysyłki po UART żeby mogła działać również bez przerywań - jest to akceptowalne w moim przypadku.

Michał



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

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