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 :

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



Składnia: [ Pobierz ] [ Ukryj ]
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:

Składnia: [ Pobierz ] [ Ukryj ]
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:  mczarny [ 10 wrz 2018, o 06:45 ]
Tytuł:  Re: Atmega 2560 , HC-SR04 Konfiguracja timera

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

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

No i nie masz ustawionego trybu pracy timera
Obrazek
jeżeli chcesz tryb CTC to bit WGM32 w rejestrze TCCR3B
Zapoznaj się z notą kontrolera tam masz wszystko
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

przykładowo można tak zależy co ile chcesz przerwanie

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:
Składnia: [ Pobierz ] [ Ukryj ]
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)

Składnia: [ Pobierz ] [ Ukryj ]
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:

Składnia: [ Pobierz ] [ Ukryj ]
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 ?

Składnia: [ Pobierz ] [ Ukryj ]
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:

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

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
Składnia: [ Pobierz ] [ Ukryj ]
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ć
Składnia: [ Pobierz ] [ Ukryj ]
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.

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



Składnia: [ Pobierz ] [ Ukryj ]
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:

Składnia: [ Pobierz ] [ Ukryj ]
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:

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



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

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/