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



Teraz jest 8 lut 2025, o 16:17


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 26 wrz 2017, o 15:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 cze 2016
Posty: 40
Lokalizacja: Łódź
Pomógł: 1

Witam.
Mam takie pytanie odnośnie przerwań generowanych z timera.
Procesor Atmega328p 16 Mhz.
Timer ustawiony na:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

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

Pytanie dotyczy tego czy takie rozwiązanie jest poprawne i jakich komplikacji mogę się spodziewać?
Ogólnie działa wyśmienicie ale jeszcze raczkuję w przerwaniach więc może mnie ktoś bardziej doświadczony wspomoże wiedzą.
Pozdrawiam.



Ostatnio edytowano 26 wrz 2017, o 21:05 przez radek3035, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2017, o 18:34 
Online
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3212
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

topic7402.html


Autor postu otrzymał pochwałę

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 wrz 2017, o 14:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 cze 2016
Posty: 40
Lokalizacja: Łódź
Pomógł: 1

OK. Powyższy kod jest do niczego. Tylko się wydawało że działa ok. Ale już sobie poradziłem...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 wrz 2017, o 14:51 
Offline
Użytkownik

Dołączył(a): 28 wrz 2016
Posty: 215
Pomógł: 14

Jeśli był problem, to zdradź na czym polegał i co pomogło. Ja nie zauważyłem błędu.
Co prawda konwersja trwa krótko i z reguły można sobie pozwolić na to, by po prostu poczekać w przerwaniu od timera na koniec konwersji, i ja tak robię.
Ale czasami potrzeba tych kilkadziesiąt cykli zaoszczędzić i wtedy Twoje rozwiązanie jest jak najbardziej przydatne.

_________________
de gustibus non est disputandum



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 wrz 2017, o 16:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 cze 2016
Posty: 40
Lokalizacja: Łódź
Pomógł: 1

Wydawało się że działa prawidłowo, ale jednak nie do końca...
Po pierwsze:
Preskaler na ADC zbyt mały, ADC może chodzić do 200 kHz przy rozdzielczości 10 bit.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Po drugie:
Skrócenie kodu do minimum bo nie nadążało z przerwaniami.
Po trzecie:
Lepsza synchronizacja pomiaru ze zboczem opadającym na PWM. (Na tym mi zależało bardzo)

Pomiar bez żadnego uśredniania na trzech kanałach jest zarąbiście stabilny :)
Teraz wygląda to tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ewentualnie jeśli robimy tylko pomiary to można wstawić tablicę volatile
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Przy 15.625 kHz timera (pewnie i więcej) wszystko działa bez zarzutu i pomiary są stabilne bez uśredniania.
wartości z pomiarów w zmiennych volatile (pomiar_kanal_x) warto przepisać do zmiennych w głównej pętli programu jeśli operujemy na nich dłużej bo szybko się zmieniają
i mogą wychodzić dziwne obliczenia :)
U mnie działają pomiary i regulacja pwm bez żadnych zacięć niezależnie razem z wyświetlaniem wyników na lcd od noki w 16-to bitowym kolorze czcionką 15 na 27 pixeli ;)

Ps Jeśli moje wypociny się przydały kliknij "pomógł" ;) To motywuje do dalszych wypocin ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2017, o 12:42 
Offline
Użytkownik

Dołączył(a): 28 wrz 2016
Posty: 215
Pomógł: 14

radek3035 napisał(a):
Jeśli moje wypociny się przydały kliknij "pomógł" ;) To motywuje do dalszych wypocin ;)

Bardzo chętnie, powiedz mi tylko jak. To jest Twój wątek i Ty możesz nagradzać, a nie Ciebie można nagradzać. Swoja droga przydałoby się coś takiego, bo np. autorzy poradników pozostają bez uznania.
Co się dzieje, gdy częstotliwość konwersji jest za duża. W PDFie nie jest to wyjaśnione, tylko jest wzmianka by unikac i, że traci się na rozdzielczości. Ale na czym ta utrata polega to już nie wiadomo.

_________________
de gustibus non est disputandum



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 wrz 2017, o 14:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 cze 2016
Posty: 40
Lokalizacja: Łódź
Pomógł: 1

Cytuj:
Co się dzieje, gdy częstotliwość konwersji jest za duża.

W moim przypadku zauważyłem że pomiary zaczynają się "mieszać", zmniejsza się separacja.
Tzn. podanie napięcia na jeden kanał powodowało zmianę pomiaru(wzrost) na innych kanałach mimo że były podłączone do GND.
Im wyższa częstotliwość, tym większe "przebicia".
Rozdzielczość się nie zmniejsza, ale zmniejszając ją możemy zwiększyć częstotliwość ADC do ok. 250 kHz a nawet więcej przy 8 bitach.
Z tym jeszcze nie kombinowałem.
Do obliczania napięcia używam funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Może komuś się przyda...



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