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



Teraz jest 1 sty 2025, o 08:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
 Tytuł: PPM
PostNapisane: 5 wrz 2016, o 23:35 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Witam
Potrzebuję pomóc ź protokołem PPM.
Można to zrobić na jednym timerze? Nie mogę sobie wyobrazić, jak przeliczyć 8 kanałów.
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PPM
PostNapisane: 6 wrz 2016, o 10:47 
Offline
Nowy

Dołączył(a): 16 maja 2016
Posty: 24
Pomógł: 3

A chodzi o nadawanie czy odbiór?
Jeśli odbiór, to sprawa jest prosta - mierzysz czas między zboczami. Można to zrobić przez przerwanie, które jest wywoływane zboczem i odczytuje stan timera. Może potem zerować timer lub też zapamiętać jego wartość, by przy następnym przerwaniu obliczyć różnicę.
Jeśli chodzi o nadawanie, to potrzebujesz tablicy wartości długości okresu (w tym przypadku 8 elementowa), oraz indeksu/wskaźnika który element tablicy ma być aktywny. A działać ma to mniej więcej tak:
- zerujesz wyjście
- opóźnienie 0,3ms
- ustawiasz wyjście
- odczytujesz z tablicy wartość opóźnienia i wpisujesz go do timera
- zwiększasz indeks, by wskazywał następny czas
- czekasz na zakończenie zliczania timera
i od nowa, aż zostaną wysłanie wszystkie impulsy i na koniec impuls stop.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PPM
PostNapisane: 6 wrz 2016, o 19:32 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Chodzi mi o nadanie ramki.
W jakim trybie mam skonfigurować timer TCT czy PWM, jak szybko ma liczycz?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PPM
PostNapisane: 6 wrz 2016, o 20:32 
Offline
Nowy

Dołączył(a): 16 maja 2016
Posty: 24
Pomógł: 3

Pełny projekt na Arduino jest na https://github.com/Hasi123/generate-ppm ... odelay.ino



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PPM
PostNapisane: 6 wrz 2016, o 22:43 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Jak przetłumaczyć ten fragment kodu do Języka C
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PPM
PostNapisane: 7 wrz 2016, o 07:10 
Offline
Nowy

Dołączył(a): 16 maja 2016
Posty: 24
Pomógł: 3

To nie jest czyste C tylko Arduino. W Arduino mamy specjalne funkcje do sterowania wyjściami.
Myślę, że najlepiej wyjaśnie na podstawie wybranyck kilku linijek w/w kodu:
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


linia 1: definiujemy polaryzację sygnału PPM, tu onState jest 1 czyli HIGH
linia 2: definiujemy które wyjście będzie wyjściem sygnału PPM, w tym przypadku jest to pin Arduino nr 10, który odpowiada pinowi atmega PB2
linia 3: ustawiamy pin 10 jako wyjście cyfrowe
linia 4: ustawia wyjście cyfrowe Arduino nr 10 w stan !onState czyli niski.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PPM
PostNapisane: 7 wrz 2016, o 13:14 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Dlaczego przerwanie jest tak szybkie około 19,76 KHz ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PPM
PostNapisane: 7 wrz 2016, o 14:44 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Już zaczęłę pisać kod, sprawdzam po kawałku z oscyloskopem na pinie OC1A pojawił sie tylko stan wysoki.Nie miał się pojawić start puls?
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  
 Tytuł: Re: PPM
PostNapisane: 9 wrz 2016, o 19:13 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

Co będę musiał zrobić by skompilować ten kod w C++ ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PPM
PostNapisane: 9 wrz 2016, o 21:27 
Offline
Nowy

Dołączył(a): 16 maja 2016
Posty: 24
Pomógł: 3

Podaj jaki masz procesor i jak taktowany. Od tego zależy konfiguracja timerów. W różnych procesorach nazwy rejestrów i funkcje mogą być różne.
Poniżej kod "przetłumaczony" na C, sprawdziłem tylko na szybko symulację w AS.

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  
 Tytuł: Re: PPM
PostNapisane: 9 wrz 2016, o 22:01 
Offline
Użytkownik

Dołączył(a): 28 cze 2013
Posty: 99
Pomógł: 2

procesor mam atmega32 i jest taktowany 16MHz



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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