ATNEL tech-forum https://forum.atnel.pl/ |
|
Atmega 2560 , HC-SR04 Konfiguracja timera https://forum.atnel.pl/topic21269.html |
Strona 1 z 1 |
Autor: | weles [ 9 wrz 2018, o 21:36 ] |
Tytuł: | Atmega 2560 , HC-SR04 Konfiguracja timera |
Witam Nadeszła w moim projekcie pora na uruchomienie pomiarów z dwóch modułów HC-SR04. Kiedy wcześniej testowałem działanie na Atmega32 i zastosowaniu kodu z poradnika Mirka wszystko działało poprawnie. Ale teraz używam Atmega 2560 i nie jest już tak prosto. Nie dość że to inny mikrokontroler to do tego muszę użyć dwóch modułów HC. Piny jakich używam do modułów HC to : język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Gdzie piny mikrokontrolera L0 i L1 to ICP. Wydaje mi się że problemem jest tu konfiguracja timera. Do dyspozycji mam sprzętowy Timer3. Robię to tak: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. I zapewne pierwszy błąd znajduje się właśnie tu. Bo o ile preskaler i zbocze potrafię ustawić to problemem jest odblokowanie przerwania. Zwyczajnie nie wiem jak powinienem zabrać się za obsługę dwóch modułów. W sumie na tym mikrokontrolerze nawet jednego nie potrafię uruchomić :/ Może znajdzie się wśród kolegów i koleżanek ktoś kto zechciałby nieco mi pomóc w tej kwestii. Chciałbym w pierwszej kolejności poprawnie ustawić timer i dokonać odczytu z jednego modułu HC. Potem przyjdzie pora na kolejny. |
Autor: | weles [ 11 wrz 2018, o 20:19 ] |
Tytuł: | Re: Atmega 2560 , HC-SR04 Konfiguracja timera |
A więc tak. Ja potrzebuję mierzyć czas w mikrosekundach poprzez wejścia timera ICP Zacznijmy od tego że potrzebuję przerwania od ICP. Czyli (jeśli chodzi o kod z Atmega 32) powinno to wyglądać tak: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. ale ja używam M2560. Znalazłem przykład dla M2560 i Timera4 na Avrfreaks (z tym że dla kwarcu 1MHz) język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W zasadzie mogę użyć Timera4 ale muszę dopasować go do mojego kwarcu czyli 14745600. Dodatkowo nie do końca rozumiem jak mam obsłużyć dwa moduły HC-SR04 odczytywane z pinów ICP4 i ICP5. Czy chodzi o to: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. i dla drugiego pinu ICP powinienem ustawić to w taki sposób ? język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Jeśli to dobrze rozumiem to odczyt dla ICP4 powinien wyglądać tak: |
Autor: | mczarny [ 11 wrz 2018, o 22:17 ] |
Tytuł: | Re: Atmega 2560 , HC-SR04 Konfiguracja timera |
Strasznie mieszasz Kolego nie wiem skąd wziąłeś to język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. mieszasz rejestry i numery timerów dla timera4 powinno być język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. i spróbuj z jednym czujnikiem a jak zadziała to pójdziemy dalej |
Autor: | weles [ 11 wrz 2018, o 22:31 ] |
Tytuł: | Re: Atmega 2560 , HC-SR04 Konfiguracja timera |
No właśnie przy takim ustawieniu timera procesor się cyklicznie restartuje. A przy tym kodzie pomiar na jednym czujniku działa ale nie zgadza się odległość. Niby ma być wynik w CM a jest w milimetrach. Ale i tak nieco się różni od rzeczywistego. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Według metody prób i błędów problem w dużej mierze tkwi tutaj: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Liczba 4608 wychodzi mi z obliczenia cyklu 80ms dla odczytu. 80ms cycle: 14745600/256 = 57600 counts/second => 57600/10 = 5760 counts/100ms => 5760/100*80 = 4608 counts / 80ms Producent zaleca powyżej 60ms. Dodatkowo kolejny błąd tkwi tutaj. Ma to kluczowe znaczenie przy końcowym wyliczeniu odległości. Teoretycznie powinno to wyglądać tak: us_per_count = 128; // 14745600/256 = 57600 counts/second => 14745600/57600 Ale w miarę zbliżony do prawdziwego wyniku pomiaru odległości muszę wprowadzić wartość us_per_count = 164; |
Autor: | weles [ 13 wrz 2018, o 20:13 ] |
Tytuł: | Re: Atmega 2560 , HC-SR04 Konfiguracja timera |
No dobrze. Udało mi się odpowiednio skonfigurować wszystko aby odległość mierzona była poprawna. Wygląda to tak: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tylko teraz muszę jeszcze obsłużyć drugi HC-SR05. Pierwszy czujnik obsługuję z pinu ICP4 (pin 49). Drugi mam podpięte pod ICP5. Proszę o jakąś poradę jak tego dokonać nie rozbudowując niepotrzebnie zbytnio kodu. Z resztą już sobie poradzę. |
Autor: | weles [ 14 wrz 2018, o 14:04 ] |
Tytuł: | Re: Atmega 2560 , HC-SR04 Konfiguracja timera |
Na prawdę nikt,nic? Może ktoś z kolegów dysponuje jakimś przykładowym kodem na tą atmegę? |
Autor: | andrews [ 14 wrz 2018, o 18:30 ] |
Tytuł: | Re: Atmega 2560 , HC-SR04 Konfiguracja timera |
Przeczytaj uważnie komentarze na początku kodu: |
Autor: | weles [ 15 wrz 2018, o 01:13 ] |
Tytuł: | Re: Atmega 2560 , HC-SR04 Konfiguracja timera |
Dziękuję za pomoc. Dzięki przykładowi kolegi Andrews zmodyfikowałem ( i zrozumiałem) działanie własnego kodu i używając Timera5 ,umożliwiłem obsługę drugiego modułu HC. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |