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



Teraz jest 7 sty 2025, o 01:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 30 mar 2013, o 11:51 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

Mam podłączone czujniki Sharpa na wejściach ADC, czy program powinien być napisany tak, że po zauważeniu przeciwnika następuje przerwanie od ADC czy normalnie zrobić to pętlą if? Jeśli przez przerwanie ADC to proszę o jakieś porady jak to zrobić bo nigdy tego nie robiłem, czytam datasheet ale nie wiele mi to rozjaśnia całą sytuację



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 12:59 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27338
Lokalizacja: Szczecin
Pomógł: 1041

Przerwanie wcale nie jest konieczne. Ale czy myślisz że na wszystko jest jedna porada ? .... ;) to zależy od tego jak budujesz program, od potrzeb, od sytuacji itp itd. Bardzo ciężko na tak mega ogólnie postawione pytanie coś jednoznacznie podpowiedzieć.

Gdybyś np pokazał jakiś swój fragment kodu i napisał - że masz z czymś tam kłopot - to pewnie dałoby radę lepiej coś podpowiedzieć.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 13:07 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

w zasadzie mozna to zrobic tak :

przykładowa funkcja obsługi sharpów:

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


i oczywiście w przerwaniu od timera skanowanie sharpów i linii .....

oczywiście to przykład tylko :

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

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 13:53 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

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


musiałem wyłączyć linijkę //sharp[0]=read_adc(); bo kompilator wyrzucał jakiś błąd, dlaczego? I za co jest odpowiedzialna ta komenda? Sharpy mam podłączone na PC4 i PC5



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 14:23 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

pokazałem ci fragment obsługi .... wiec nie dziwne że nie zadziała ...
pokazałem jak to zrobić w przerwaniu , ale nie dałem całego rozwiązania :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 15:58 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

A mógłbyś napisać kod jak obsłużyć jednego sharpa? Tak jak mówiłem nie bardzo to rozumiem, stąd mój problem :-/ Na podstawie kodu może załapię o co chodzi ;-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 16:01 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27338
Lokalizacja: Szczecin
Pomógł: 1041

No ale Sun podał ci praktycznie gotowca ... jeśli nie możesz załapać na tej podstawie to jednak trzeba poćwiczyć troszkę język C, podstawową obsługę ADC przede wszystkim itp

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 16:04 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

No właśnie obsługi ADC w języku C nie umiem, obsługiwałem wcześniej ADC ale przez Bascom'a, a to niestety całkiem co innego. Proszę Was o jakieś wskazówki i porady, bo w sieci nie ma zbyt wiele informacji na ten temat, a z Datasheetu nie wiele rozumiem bo jest po ang :-(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 16:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27338
Lokalizacja: Szczecin
Pomógł: 1041

ja mogę ci szczerze polecić rozpoczęcie nauki C z tą książką

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

tam masz także sporo o ADC

a niedługo ukaże się jeszcze Video poradnik do książki na temat ADC

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 16:14 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

mozna np tak :




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


oczywiście sposobów jest wiele :)

oczywiście ja sobie ułatwiłem poprzez :

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

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 18:26 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

Pani Mirku książka jest fajna, ale niesety nie przyjdzie mi teraz zamówienie przez święta :-/
SunRiver wiem, że masz już mnie dosyć, ale to nadal nie działa. Nie wiem w końcu który kod powinienem wkleić żeby działał ten sharp w przerwaniu.. Mam go podpiętego na PC4



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 18:47 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

ojjj... dlaczego miałbym mieć dosyć :)
jak coś to na porcie C niema ADC :) ale jest na Porcie A :)

jest jeszcze ważna sprawa jakiego masz sharpa bo są analogowe i cyfrowe :)
jak masz cyfrowego to ADC nie jest potrzebne :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 18:50 
Offline
Nowy

Dołączył(a): 26 mar 2013
Posty: 5
Pomógł: 1

Mówisz że dokumentacje Atmela są trudne do zrozumienia ? Przecież to jedne z najlepiej udokumentowanych procków, przykłady w C i Asm, ponad 300 stron na których jest wszystko opisane z przykładami. Poczytaj sobie dokumentacje HopeRF, zobaczysz dopiero co to znaczy że dokumentacje trudno zrozumieć ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 19:07 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

W atmega8 ADC jest na portach C :-) Sharp jest cyfrowy, podpięty pod PC4. Tak też się zastanawiałem dlaczego porównywanie skoro to odczyt cyfrowy :-) Więc czy jest sens robić przerwania od sharpów, czy lepiej cały program oprzeć na pętlach if? Jeśli przerwania to jak je zapisać bo przecież sharp nie jest ani na Timerze0 ani Timer1?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 19:24 
Offline
Nowy

Dołączył(a): 21 sty 2013
Posty: 14
Pomógł: 0

To ja postaram się wytłumaczyć :)
Jeżeli czujnik jest analogowy, to tak jak piszesz potrzebny jest przetwornik ADC. Na przykładzie pokażę jak to zrobić.
Po pierwsze w funkcji main wybieramy działanie przetwornika:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ustawiliśmy przetwornik, czas na obsługę przerwania od niego, czyli moment w którym zakończy się pojedyńcza konwersja (którą wywołamy w pętli). W przerwaniu tym będziemy zapisywać do tablicy (w tym przypadku czteroelementowej) wyniki pomiarów, które mieszczą się w dwóch rejestrach osmiobitowych - traktuj je dla uproszczenia jako jeden rejestr ADCW.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Teraz czas na odczyt z tablicy tych pomiarów w pętli głównej. Sumujemy pomiary w zmiennej wynik i dzielimy ją przez 4 - ja tak często robię ze względu na duży rozrzut pomiarowy tych czujników, więc uśredniając kilka pomiarów dostaję dosyć stabilny wynik.

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


Teraz najtrudniejsza sprawa, czyli przeliczenie zmiennej wynik na odległość - jest to kłopotliwe, gdyż trudno napisać prostą funkcję do tego, więc spróbuj wyświetlić sobie tą zmienną na LCD i jak się to uda to pokażę Ci co robię z tym dalej :)

Aha - podłącz w tym ustawieniu sharpa do PC0



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 19:42 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

Dziękuję za tak dokładny opis, ale mój sharp jest cyfrowy więc chyba nie dam rady tego zrobić na nim :-) ale kod mi się przyda jak będę podłączał analogowy czujnik do wykrywania białej lini, jednak póki co chcę podłączyć sharpy i je poprawnie uruchomić, żeby wziąć się za kolejną rzecz :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 20:14 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

Młody od tego trzeba było zacząć :) jaki jest twój sharp :)

ale młody wróć do mojego kodu funkcja od sharpów zauważ że masz tam 1 analogowy na początki i 2 cyfrowe wystarczy wyrzucić odczyt analogowego (czujniki lini to inna zabawa)

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


Funkcja ta wpisuje stan sharpów do tabeli np takiej

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


to pozwala łatwo robić takie funkcje jak Atak czy czy inne:

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




a potem można w petli głównej realizować całośc :

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

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 20:58 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

Coraz więcej zaczynam rozumieć, ale mam jeszcze kilka problemów:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jako jazdawprzo powinienem ustawić porty z mostka a wartości (600,600) to wartość podawana na OC1A i OC1B?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
co to jest ta wartość 1024?

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


Jako co jest SHARP_PRZOD? skąd k>300000? Na jakiej podstawie zostanie to wyliczone?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 21:39 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

Sharp[0] to sharp analogowy - wejscie analogowe przyjmuje wartości od 0 do 1024

Sharp[1] i [2] to cyfrowe Lewy i Prawy
wiec siłą rzeczy Sharp_przod to ??

k się inkrementuje jak szukamy wroga 300000 to wartośc do jakiej jest ograniczone kręcenie się dookoła :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 mar 2013, o 21:57 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

Trochę to pozmieniałem, ale cały czas wyrzuca mi błędy:
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  
PostNapisane: 1 kwi 2013, o 20:21 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

Udało mi się rozgryźć te tablice i sharpy, ale mam pewien problem. Działanie każdego sharpa zapisuje do tablicy, ale chcąc odpalić silniki kiedy jednocześnie dwa widzą przeszkodę to nie działa, bo albo nie chodzi żaden, albo lewy, albo prawy, co bym nie wpisał w pętli if to nie działa...
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  
PostNapisane: 2 kwi 2013, o 14:53 
Offline
Nowy

Dołączył(a): 30 mar 2013
Posty: 11
Pomógł: 0

Panowie, przejrzy ktos ten program i powie co powinienem zmienić?



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

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