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