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



Teraz jest 11 sty 2025, o 00:52


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 11 lut 2016, o 10:26 
Offline
Nowy

Dołączył(a): 02 sty 2016
Posty: 6
Pomógł: 0

Witajcie,

pilnie potrzebuję rady. Otóż, chcę wychwycić zmianę napięcia z czujnika odległości w bieżącym cyklu pomiarowym względem poprzedniego. Pomiar przeprowadzam w przerwaniu (zastosowałam programowy filtr dolnoprzepustowy aby odfiltrować zakłócenia i odchyłki pomiarowe i tym sposobem uśrednioną wartość pomiaru przekazuję i odczytuję w programie głównym), potrzebuję w jakiś sposób zapisać poprzednią wartość pomiaru lub ją utrzymać, i porównać z pomiarem bieżącym aby uchwycić różnicę napięcia. Następnie uaktualnić wskazania i względem poprzedniego pomiaru porównać z bieżącym, itd itd.. Mój projekt to robot który będzie w stanie zlokalizować potencjalną lukę pomiędzy obiektami/w ścianie, aby mógł do niej wjechać. Pomiar przeprowadzam z bocznego czujnika, z którego informacja o wychwyceniu takiego skoku napięcia będzie potencjalnym początkiem luki parkingowej.
Czy ktoś mógłby mi doradzić w jaki sposób mam zapamiętać poprzednią wartość pomiaru?
Czy powinnam to zapamiętać w przerwaniu czy już w programie głównym? Może zapisać wyniki do tablicy? Po odczytaniu w programie głównym wyników wykonuje się ponownie przerwanie, itd cały czas, może powinnam wychwycić że wykonało się przerwanie i na tej podstawie jakoś utrzymać wartość pomiaru a potem po wyjściu z przerwania tę wartość odczytać i porównać z bieżącym wynikiem? Nie bardzo wiem jak to zrealizować.
Bardzo proszę o pomoc,
Natalia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lut 2016, o 10:44 
Offline
Użytkownik
Avatar użytkownika

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

Ciężko się odnieść nie widząc jak to teraz zrealizowałaś. Czy przerwanie przekazuje zmierzoną wartość poprzez docelowa zmienną? Jak tak i nie chcesz tego zmieniać, to musisz przed przypisaniem nowej wartości w przerwaniu zapamiętać starą w dodatkowej zmiennej a dopiero później nadpisać zmienna z wynikiem. Tablica to raczej nie ma sensu, chyba, że potrzebujesz więcej niż aktualny i stary wynik. Prędzej daj strukturę z dwoma zmiennymi na wyniki (aktualny i stary) oraz ewentualnie dodatkową flagę ustawianą przez przerwanie przy dokonaniu pomiaru.

Możesz zrobić tak, że przerwanie zawsze pisze do zmiennej A i ustawia flagę dla programu głównego. Program główny porównuje wartość A z B a następnie przepisuje A do B i kasuje flagę. W ten sposób przerwanie zawsze będzie zwracało wartość tylko w jednej zmiennej i nie będzie "backupowało" starej. O to zadba program główny. A jak nagle program główny będzie potrzebował historii, to zmieniasz tylko tę część dając zamiast B to B[] i po problemie :)

--
Pozdrawiam,
Robert



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

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