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



Teraz jest 1 gru 2024, o 01:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 1 gru 2017, o 11:33 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Próbuję napisać trochę bardziej zaawansowany jak na mnie, program. Zgodnie z zaleceniami Mirka :-) staram się pisać to etapowo. Doszedłem do części odpowiedzialnej za pomiar szerokości impulsu i mam małe zdziwienie. W celu przetestowania czy wszystko jest ok wysyłam wartość rejestru ICP prze UART. Co się okazuję, że do jakieś szerokości impulsu wyniki są prawidłowe niestety po przekroczeniu pewnej wartości mam zazwyczaj 0 lub 1 i od czasu do czasu prawidłową wartość. Nie za bardzo rozumiem gdzie jest błąd i przyczyna.

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


W czasie prób sprawdzałem zapalając diodę w przerwaniu na początku impulsu i na końcu gasząc. Potwierdziło mi to, że przerwanie działa bez zarzutu, dioda odzwierciedlała przebieg mierzony. Niestety jak napisałem wyżej do wartości ok 2000 jest ok później na UART otrzymuję 0 lub 1 od czasu do czasu właściwą wartość licznika.
Program jest normalnie w osobnych plikach, ale połączyłem to żeby było łatwiej przeanalizować i wszystko w jednym miejscu.
Czy problem jest w przesyłaniu wartości przez UART czy w liczeniu przez licznik? Co i gdzie się gubi?
Podpowiedzcie coś proszę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2017, o 12:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Poczytaj w wątek topic2743.html

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2017, o 13:07 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Dziękuję za szybka odpowiedź.
Wrócę z pracy i posiedzę nad waszymi sugestiami. Wczoraj do późna w nocy prowadziłem walkę, niestety bez efektów.Tak się zastanawiałem czy to czasem nie jakieś "atomy" tu mieszają :)

Dzięki na razie koledzy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2017, o 22:02 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Kurcze jednak ATOMIC_BLOCK... nic nie dało. Wydaje mi się, że rozumiem działanie mechanizmu pomiaru długości impulsu. Nie rozumiem natomiast dla czego u mnie tak się to zachowuje.
Zrobiłem "pierwszą" reakcję na zbocze rosnące, "drugą" na zbocze opadające. W "drugim" przerwaniu obliczam długość impulsu i jest tak jak dotychczas, że do pewnej wartości jest ok za każdym razem wynik mniej więcej 2500. Natomiast jak tylko skrócę impuls do wartości ok. 2000 tyknięć timera to zazwyczaj mam 0 lub 1 czasami wynik właściwy.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Gdzie robię błąd? Długość impulsu nie "przekręca" timera zresztą to nie ma znaczenia, zmienna PulseWidth jest volatine. O co tu chodzi???



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 gru 2017, o 23:46 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

A co jest źródłem impulsów, których długość mierzysz?

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2017, o 12:59 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

roske napisał(a):
Noise Canceller próbkuje sygnał przez 4 takty zegara więc tak jakby, z założenia, długość impulsu nie może być krótsza niż okres F_CPU/4


Ale nawet przy F_CPU=8MHz to raptem 0.5us. Zastanawiam się, czy w układzie Autora nie ma jakichś zakłóceń w postaci takich krótkotrwałych "szpilek", które pojawiają się zaraz po pierwszym impulsie ( wyzwalającym pomiar ). W układach cyfrowych o takie zakłócenia nietrudno, stąd moje pytanie.

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2017, o 16:29 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Witam

Częstotliwość impulsów to 64Hz, wypełnienie od 10% do 80%. Reguluję wypełnienie i układ zachowuje się jak opisałem wyżej czyli do pewnej wielkości jest ok później klapa.
Impulsy mam z generatora na układzie TL494 (mały moduł na płytce kupiony na Allegro).
Również zastanawiałem się czy problem nie jest po stronie sprzętowej więc dla testu zrobiłem tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Podglądam oscyloskopem przebieg "oryginalny" oraz przebieg na diodzie LED i jest identyczny. Wniosek z tego, że przerwanie dobrze się wykonuje bo gdy przychodzi zbocze rosnące zapala diodę, zbocze opadające ją gasi.
Obserwując przebieg badany również nie widzę, żadnych niechcianych impulsów. Dodatkowo podłączyłem tez inny generator (układ z AVT z wieloma DIP switchami) i jest tak samo.
Kurde zaczyna mnie to wkurzać, wciąż jakieś kłody, non stop pod górkę a najgorsze jest to, że to ja gdzieś robię błąd.

edit
Nie ma to większego znaczenia, ale dopiszę procesor Atmega32, 11059200 Hz

edit
QuadManZastanowiło mnie coś w twojej wypowiedzi więc jeszcze raz sprawdziłem układ od strony sprzętu i wygląd na to, że winny jest generator TL494. Podłączyłem jeszcze raz generator impulsów AVT2633 i jest ok. Reguluję wypełnienie w szerokim zakresie a w terminalu mam piękne wyniki od pojedynczych wartości do np 18000. Wniosek z tego, że wcześniej w ferworze walki zacząłem deptać po swoich śladach i jednak coś nie do końca właściwie sprawdziłem z zamieniając generatory.
Tak czy siak dziękuję za pomoc wszystkim, mam nadzieję, że teraz ruszę z miejsca w poszukiwaniu kolejnych problemów :lol:
Dzięki.



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