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



Teraz jest 20 sie 2026, o 08:08


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 22 maja 2013, o 00:15 
Offline
Nowy

Dołączył(a): 21 maja 2013
Posty: 3
Pomógł: 0

Witam!
Kupiłem książkę pana Mirka pod tytułem "Mikrokontrolery AVR. Język C. Podstawy programowania", aby nauczyć się obsługi karty sieciowej Ethernet ENC28J60. Chciałbym poprzez stronę Internetową sterować silnikiem krokowym na odległość z użyciem mikrokontrolera ATmega16 oraz ENC28J60. Udało mi się przebrnąć przez rozdział 8.5.2 "Serwer HTTP". Kolejny rozdział (8.5.3 "Sterownik urządzeń - protokół UDP") opisuje możliwości sterowania mikrokontrolerem z wykorzystaniem komunikacji UDP poprzez sieć Ethernet jednakże za pomocą aplikacji na Windowsa napisanej w Delphi (TestyUDP). Chciałbym zrobić coś, co będzie połączeniem jakby tych dwóch rozdziałów, czyli postawić serwer HTTP na ATmedze i sterować jej wyjściami za pomocą tej strony internetowej. Jak wspomniałem udało mi się już postawić serwer na ATmedze (z wykorzystaniem programów z płyty DVD) i uzyskać stabilne połączenie (pingowanie daje czas połączenia rzędu 7 ms). W celu wykonania na stronie internetowej przełączników do zapalania diod udałem się (zgodnie z poleceniem w książce) na stronę http://www.tuxgraphics.org/ a konkretniej do artykułu: http://www.tuxgraphics.org/electronics/ ... rver.shtml W tym artykule jest opisane dokładnie to, co chcę zrobić. Pobrałem kody źródłowe ze strony i zacząłem je analizować. Wiem, że goście z tuxgraphics korzystają z ATmegi88 oraz wyjścia CLKOUT układu ENC28J60, więc pozmieniałem kod w "main.c", czyli wykomentowałem linie dotyczące zegara:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Nie jestem pewien co jeszcze powinienem zmienić w pliku "main.c", oczywiście poza adresem diody, którą chcę zaświecić (tutaj program: http://www.tuxgraphics.org/common/src2/ ... .17.tar.gz). Stwierdziłem, że skoro działa mi serwer HTTP oparty o biblioteki pana Mirka oraz "basic_web_server_example.c" to wkleję do niego zawartość "main.c" (oczywiście po zmianach). Spróbowałem skompilować program i pojawił się problem: funkcja "make_tcp_ack_from_any" ma za mało argumentów. Szybkie spojrzenie w biblioteki i okazuje się, że funkcja "make_tcp_ack_from_any" w plikach pana Mirka "ip_arp_udp_tcp.h" oraz "ip_arp_udp_tcp.c" ma trzy argumenty, a w "main.c" z tuxgraphics.org jest jeden (buf). No to stwierdziłem, że spojrzę do bibliotek deklaracji stosu TCP ze strony tuxgraphics.org i tutaj wielkie zaskoczenie, ponieważ pliki tych gości bardzo różnią się od bibliotek pana Mirka. W takim razie stwierdziłem, że wrzucę oryginalne biblioteki "ip_arp_udp_tcp.h" oraz "ip_arp_udp_tcp.c" ze strony tuxgraphics.org zgodne z "main.c". Ufff, program się skompilował i wgrał na mikroprocesor. ALE strona nie działa oraz podczas pingowania dostaję komunikat, że urządzenie nie jest dostępne. Proszę o pomoc co robić? Jak zmienić program w "main.c", aby współpracował z ATmegą16 i się kompilował? Z jakich bibliotek korzystać? I jak zrobić włączanie diody za pomocą linka na stronie HTTP?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 maja 2013, o 02:44 
Offline
Moderator
Avatar użytkownika

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

widzisz kłopot polega na tym że biblioteki z tuxgraphics rozwijają się wciąż i dlatego różnią się od tych z DVD z książki (to nie koje biblioteki). Dlatego jak zauważyłeś trzeba wprowadzać trochę zmian do kodu stosując ich nowsze wersje a co za tym idzie testować je we własnym zakresie. Ja już dawno ostatnio nic z nimi nie robiłem niestety żeby coś konkretnego ci podpowiedzieć dlaczego teraz cos twm nie działa :(

Musisz (chcąc korzystać z nowszych wersji stosu) oprzeć się na jakimś przykładzie serwera http od nich. Potem próbować wprowadzać swoje zmiany

_________________
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: 22 maja 2013, o 08:37 
Offline
Nowy

Dołączył(a): 21 maja 2013
Posty: 3
Pomógł: 0

Ściągnąłem pliki z tego artykułu z roku 2006 (najstarsze) oraz z 2009 (najnowsze) i są identyczne przy czym znacząco się różnią od tych z płyty. Pobierałem również pliki z wcześniejszego artykułu, który zaczyna jakby temat karty sieciowej ( http://www.tuxgraphics.org/electronics/ ... 6061.shtml) i jest to samo. Naprawdę nie wiem jak to ruszyć i potrzebuje pomocy. Zależy mi tylko na prostym przełączniku do diody na stronie w HTTP.

Chodzi o to, że plik ip_arp_udp_tcp.c na płycie jest znacznie bardziej rozbudowany niż ten na stronie.

Już próbowałem, zgodnie z tym co napisałem w poście wyżej, korzystać z ich przykładu na serwer http, ale jest problem z bibliotekami, ponieważ te z płyty z nim nie współpracują, a te ze strony są na ATmege88 oraz mają aktywne to wyjście CLKOUT z układu ENC28J60.
//Wysłane z Android za pomocą Tapatalk 2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 maja 2013, o 10:35 
Offline
Moderator
Avatar użytkownika

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

No bo tak jak pisałem w książce ja sam przerabiałem nieco np biblioteki zdaje się driverów do ENC dlatego mogą się różnić. Ale bibliotek stosu nie przerabiałem - więc niestety oni mogli pozmieniać w międzyczasie coś ... dlatego sam widzisz że to nie jest ot tak .... z palca strzelić trzeba troszkę nad tym posiedzieć

ale jak piszesz że na ich stronie są przykłady na ATmega88 i działają - no to chyba mniejszy problem jest sobie je przerobić na inny procek ATmega niż grzebać się w bibliotekach stosu czy driverach jeśli się nie ma w tym jeszcze aż takiego doświadczenia....

przecież przeportowanie na inny procek to zmiana w ustawieniach projektu i zmiana pinów ew , zmiana konfiguracji timerów itp

a jeśli chodzi o CLKOUT to porównaj sobie to co masz w książce bo tam zdaje się opisałem co zmieniałem pod tym kątem - to też sam to zmienisz w tych ich nowszych czy starszych driverach do ENC

_________________
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: 22 maja 2013, o 20:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 sty 2012
Posty: 131
Lokalizacja: Kraków
Pomógł: 2

kiedyś odpalałem przykłady z tux i działały.
Zmieniłeś adres ip w bibliotekach z tux'a w pliku main odpowiedni dla twojej sieci?.
W pliku enc28j60.c za komentuj #define F_CPU 12500000UL, ustaw odpowiednio porty dla SPI dla swojego procesora.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 maja 2013, o 15:44 
Offline
Nowy

Dołączył(a): 21 maja 2013
Posty: 3
Pomógł: 0

IP mam dobre, bo postawiłem na nim serwer HTTP zgodnie z przykładem pana Mirka. Więc stwierdziłem, że skoro to działa to nie będę tego zmieniać. Na jaki mikroprocesorze to odpalałeś?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 maja 2013, o 16:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 sty 2012
Posty: 131
Lokalizacja: Kraków
Pomógł: 2

ATMEGA32 z zestaw atb



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