Skocz do zawartości

ATmega8 i WIZ107SR


Nissun93

Pomocna odpowiedź

Cześć!

Jestem tu nowy i mam problem. Otóż podłączyłem moduł WIZ107SR z uC jak na schemacie, ustawiłem też moduł zestawem uruchomieniowym ale nie mam pojęcia jak zabrać się do komunikacji ATmegi8L z PC poprzez ethernet. Proszę was o pomoc, może jakieś przykłady.

Ogólnie to mam zrobić moduł I/O cyfrowych ustawianych i sprawdzanych z PC, ale wolę najpierw przerobić prostszy przykład z książki taki, żeby wysyłać znak do uC, a ten żeby na diodach wyświetlał wartość binarną w kodzie ASCII. Narazie tylko tyle zaprogramowałem w uC:

#include <avr/io.h>
#define FOSC 8000000// Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1

void main(void)
{
unsigned char serialCharacter;

DDRB = 0xFF;
void initUSART(unsigned int);
unsigned char receiveByte(void);
void transmitByte(unsigned char);

initUSART(MYUBRR);

while(1)
{
	serialCharacter = receiveByte();
	transmitByte(serialCharacter);
	PORTB = serialCharacter;		
}
}

void initUSART( unsigned int ubrr)
{
/* Set baud rate */
UBRRH = (unsigned char)(ubrr>>8);
UBRRL = (unsigned char)ubrr;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}

void transmitByte( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )	;
/* Put data into buffer, sends the data */
UDR = data;
}

unsigned char receiveByte( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) );
/* Get and return received data from buffer */
return UDR;
}

Powinienem dopisywać coś do programu żeby ATmega nawiązała kontakt z modułem ethernet?

Link do komentarza
Share on other sites

1. Sprawdź, czy Twój moduł rzeczywiście nazywa się WIZ107SR czy może WIZ107SR-TTL. To podstawowa różnica. Jeżeli jest tak jak napisałeś, być może już spaliłeś porty procesora, bo moduł w wersji nie-TTL wysyła na linie TXDB ±12V,zgodnie ze standardem RS232C. Miedzy takim modułem a procesorem musi stanąć specjalny scalak do konwersji napięć i odwracania polaryzacji. Wersja -TTL jest OK.

2. Twój stabilizator ma napędzać procesor i moduł. Oba razem mogą ciągnąć dobrze ponad 200mA. Przy zasilaniu z 12V mamy moc (12-3.3)*0.2=1.7W. Obudowa TO93 wytrzymuje ok. 1W a wtedy naprawdę parzy i gotuje na sobie wodę. Naiwnością jest sądzić, że ten układ będzie pracował po uaktywnieniu nadajnika sieci LAN.

3. Dlaczego wybrałeś taki interfejs? Przecież do podłączenia do PC wystarczy zero-kosztujący UART lub USB przez prostą przejściówkę za 20zł. Chyba, że chodzi o coś więcej, ale jeśli zawsze w pobliżu będzie jakiś PC, taniej było to zrobić inaczej.

4. To nie jest moduł przez który możesz sobie przesłać jeden znak z PC i zobaczyć go po drugiej stronie. Sieć Ethernet jest bardzo rozbudowana, ma wiele warstw a protokoły na nich obowiązujące są dość skomplikowane. Jest też prądożerna. Moduł interfejsu UART-Ethernet musi mieć w sobie duży procesor po to, by te wszystkie protokoły obsługiwać. Żeby je uruchomić musisz zrobić kilka rzeczy. Wszystko jest opisane w podręcznikach użytkownika, np tutaj:

http://www.saelig.com/supplier/wiznet/WIZ107SR_User_Manual_EN_V1.2.pdf

Czytałeś? To jakie masz problemy? Podłącz się do terminala w PC i popróbuj kilku komend, ale byłoby dobrze gdybyś wiedział co robisz, więc nie ominie Cię czytanie o PPPoE, DHCP, DNS, TCP/IP, UDP itd...

5. Jeśli masz jakąś książkę o tym module, wykorzystaj ją zamiast zadawać dziwne pytania.

Link do komentarza
Share on other sites

1. Miedzy takim modułem a procesorem musi stanąć specjalny scalak do konwersji napięć i odwracania polaryzacji. Wersja -TTL jest OK.

2. Twój stabilizator ma napędzać procesor i moduł. Oba razem mogą ciągnąć dobrze ponad 200mA. Przy zasilaniu z 12V mamy moc (12-3.3)*0.2=1.7W. Obudowa TO93 wytrzymuje ok. 1W a wtedy naprawdę parzy i gotuje na sobie wodę. Naiwnością jest sądzić, że ten układ będzie pracował po uaktywnieniu nadajnika sieci LAN.

3. Dlaczego wybrałeś taki interfejs? Przecież do podłączenia do PC wystarczy zero-kosztujący UART lub USB przez prostą przejściówkę za 20zł. Chyba, że chodzi o coś więcej, ale jeśli zawsze w pobliżu będzie jakiś PC, taniej było to zrobić inaczej.

4. To nie jest moduł przez który możesz sobie przesłać jeden znak z PC i zobaczyć go po drugiej stronie. Sieć Ethernet jest bardzo rozbudowana, ma wiele warstw a protokoły na nich obowiązujące są dość skomplikowane. Jest też prądożerna. Moduł interfejsu UART-Ethernet musi mieć w sobie duży procesor po to, by te wszystkie protokoły obsługiwać. Żeby je uruchomić musisz zrobić kilka rzeczy. Wszystko jest opisane w podręcznikach użytkownika, np tutaj:

http://www.saelig.com/supplier/wiznet/WIZ107SR_User_Manual_EN_V1.2.pdf

Czytałeś? To jakie masz problemy? Podłącz się do terminala w PC i popróbuj kilku komend, ale byłoby dobrze gdybyś wiedział co robisz, więc nie ominie Cię czytanie o PPPoE, DHCP, DNS, TCP/IP, UDP itd...

5. Jeśli masz jakąś książkę o tym module, wykorzystaj ją zamiast zadawać dziwne pytania.

1. Cholera, mam WIZ107SR. Jaki scalak moglibyście mi polecić? Nic się na ten temat nie znam. Myślałem, że wszystko jest ok podłączone. Tym bardziej, że w necie jak patrzę po tym jak łączą uC do komunikacji RS232 to potrafią nie dawać żadnych scalaków pomiędzy.

2. Ze stabilizatorem wiem, że lipa dlatego dołączę radiator. Jakoś można uwzględnić radiator na schemacie?

3. Projekt mam taki do zrobienia. Mam z poziomu PC przez interfejs UDP sprawdzać i ustawiać wejścia i wyjścia na mikrokontrolerze.

4. -

5. Nie mam żadnej książki dlatego postanowiłem tutaj spróbować. Moje doświadczenie z elektroniki programowalnej jest bardzo ubogie. Dopiero od października się tym zajmuję na uczelni.

Link do komentarza
Share on other sites

1. Konwerterów RS232/UART jest mnóstwo. Musisz tylko zwrócić uwagę, żeby strona UART pracowała przy 3V. Ze standardów możesz kupić ADM3202, ST3232, MAX3232 itp. Procesory nie mogą być podłączane wprost do linii RS232 bo tam panują inne napięcia i trzeba odwrócić fazę sygnału. Stan wysoki na UART ma być przeniesiony jako -12V na RS232, a stan niski jako +12V. Napięcia nie muszą być aż tak duże, wystarczy ±6V, ale i tak tego nie da się zrobić na opornikach.

2. Moim zdaniem nadmiar mocy może być tak duży, że radiator nie wystarczy. Ta obudowa po prostu jest za mała i nie wypuści z siebie tyle ciepła. Zmniejsz napięcie wejściowe, zmień obudowę stabilizatora i/lub zmień jego typ. Przy 12V możesz spokojnie użyć najtańszego LM317 w TO220 za 2zł. Dobierz dwa oporniki tak by dawał 3.3V i po kłopocie. Tam możesz dawać dowolnie duży radiator. Możesz też kupić gotową przetwornicę DCDC w formie małej płyteczki. Kosztuje trochę więcej niż prosty stabilizator liniowy, ale praktycznie nie grzeje się w ogóle.

3. No jeśli w założeniach jest UDP, to to jest dużo ważniejsze niż pisanie o PC. Protokół sieciowy wymaga sieci 🙂 więc jeśli nie chciałeś budować wszystkiego od zera, użycie modułu Ethernetowego jest jak najbardziej uzasadnione.

4. Od strony UARTa ten moduł pracuje w dwóch trybach: komend - i wtedy masz kontakt z jego wewnętrznym procesorem, możesz wysyłać proste komendy sterujące (opis w dokumentacji - przejrzyj, spróbuj zrozumieć i jakby co, pytaj o szczegóły) oraz w trybie danych. Do niego moduł przechodzi gdy wydasz komendę kończącą tryb komend. Wtedy - jeżeli ustawiłeś protokół TCP nawiązywane jest połączenie lub moduł oczekuje na takie połączenie od klienta w zależności od tego czy ma być serwerem czy klientem własnie. Jeśli masz pracować po UDP, jest to tryb bezpołączeniowy.Po prostu otwiera się "rura" łącząca UART z wirtualnym socketem w komputerze. Tam musi pracować program, który potrafi coś wysłać (np. datagram UDP) lub zrobi użytek z przychodzących danych. Generalnie nie robi się tego nigdy w tak banalny spsób, a do komunikacji wykorzystuje się całą masę gotowego oprogramowania realizującego jakiś protokół sieciowy na wyższej warstwie. Np. mając zestawione połączenie TCP możesz na nim odpalić teminal TELNETowy, FTP lub choćby protokół HTTP. Na UDP najbardziej znanym i wygodnym jest chyba SNMP, ale akurat tego ten moduł nie obsługuje - tu byłoby jak znalazł. Na pewno będziesz musiał w swoim procesorku zrobić przynajmniej szczątkową obsługę komend tego modułu (wysyłanie kilku niezbędnych poleceń oraz zrozumienie odpowiedzi) a potem napisać kawałek kodu - być może z wykorzystaniem jakiejś gotowej biblioteki - realizujący jakiś bezpołączeniowy protokół pracujący na datagramach UDP. najlepiej pogadaj z jakimś programistą Linuxowym w jaki sposób "dobiera się" do plików będących wirtualną reprezentacją urządzeń połączonych przez sieć. To da Ci jakieś pojęcie o tym co i jak masz zrobić po jednej i po drugiej stronie. Staraj się wymyślić coś prostego, bo ATmega ze swoimi 8K pamięci programu i 1K RAMu nie daje pola do jakichś szaleństw. Oczywiście niezależnie możesz sobie pisać kod na obsługę tego co masz robić naprawdę. Przecież w końcu Twoje protokoły sieciowe przepchną komendę z PC do Twojego procesorka i będziesz musiał ją zdekodować i pomachać pinami, włączyć LED czy co tam masz zrobić.

5. O książce sam wspomniałeś - myślałem, ze coś masz.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

To może inaczej: WIZ107SR-TTL jest w drodze i jutro go podłączę. Unikam zabaw z hardware-em.

Książkę mam, Programowanie układów AVR dla praktyków - Elliot Williams.

W tej książce gościu zaprogramował uC tak samo jak ja na listingu i skomunikował z kompem przez adapter USB - łącze szeregowe (tj. chyba to samo co RS232, nie?). Do uC podpiął krzyżowo TXD, RXD i połączył masy. Później przez Bray's Terminal jakimś cudem wysyłał pojedyncze znaki tak, że na ośmiu podłączonych do uC diodach wyświetlany był binarnie kod znaku. Taki konwerter znaków na kod ASCII.

Zmierzam do tego, że skoro mam już napisany taki program to czy jest możliwe nawiązanie komunikacji między ATmegą a komputerem przez moduł ethernet po UDP tak, żeby móc odpalić jakiś terminal (jaki? Hercules chyba styknie, bo jakiś gościu testował WIZ107SR na youtube i tak komunikował się) i uzyskać podobny efekt? Myślę, że jeśli uda mi się takie zadanie to później już z górki będzie napisać aplikację na PC do portu I/O cyfrowych.

Co Wy na to? Czytam odpowiedzi Marek1707 i niewiele z nich rozumiem. Wnioskuję, że do komunikacji muszę wysyłać polecenia na WIZ107SR-TTL, które znalazłem w dokumentacji modułu przesłanym przez Marek1707 w punkcie trzecim. Teraz pytanie jak po ATmedze skomunikować się z WIZ107SR-TTL?

Na jednym z blogów traktujących o mikrokontrolerach wyczytałem, że gościu w celu komunikacji UDP najpierw zainicjował adres IP i MAC, potem napisał program, w którym ustawił nasłuchiwanie na porcie, następnie napisał funkcje do odbierania pakietów i sprawdzaniu ich treści. W razie poprawnie odczytanego polecenia wykonywane było odpowiednie zadanie i wysyłana odpowiedź.

Problem w tym, że korzystał z kontrolera W5100 umożliwiającego korzystanie z bibliotek Arduino.

Bez sensu. Nawet nie wiem co, jak i na czym zaprogramować. ;/

Link do komentarza
Share on other sites

Nie, RS232 nie jest synonimem każdego łącza szeregowego. RS232 to pewien zestaw reguł opisujących sposób realizacji pewnego konkretnego, dziś już rzadko stosowanego w nowych projektach interfejsu. Jeżeli widziałeś w książce przejściówkę USB podłączaną wprost do UARTa procesora, to nie było tam RS232. Było łącze asynchroniczne pracujące z poziomami napięć odpowiadającymi zasilaniu procesora.

Przykro mi, że nie rozumiesz co piszę. Widzę, że nie ogarniasz tematu, że nie wiesz nic o tym co masz zrobić i że jesteś kompletnie zagubiony. Próbujesz oglądać filmiki w sieci, pobieżnie przeglądać książki bez zrozumienia i zbierać strzępki informacji z przypadkowych źródeł. Dlaczego? Co Cię zmusza do rzucania się na takie problemy? Czy to zadanie z uczelni? Czy tak nisko już szkoły upadły, że zlecają przypadkowe zadania przypadkowym osobom? Przecież jeśli nic nie robiłeś w sprzęcie, to powinieneś zacząć od zupełnych podstaw. Czy chodzi tu o naukę metodą wrzucania dziecka do basenu? Rzućmy gościa na projekt, będzie się męczył aż się zahartuje albo polegnie? Przecież to absurd. Nie masz kogo zapytać na uczelni? Od czego jest tam cała ta kadra? Nie chce mi się pisać, przepraszam... Przecież widzisz, że Twojej niewiedzy nie zasypią dwa ani nawet sto postów na Forum. Wymieniłem Ci kilka tematów, które powinieneś ogarnąć po to, byś ten projekt umiał zrobić z głową, bez bezmyślnego kopiowania czyichś rozwiązań - bo chyba taki jest cel tej pracy? To są grube książki lub dziesiątki stron internetowych - tej wiedzy nie zdobywa się w tydzień.

Tutaj promujemy myślenie i naukę. Pokaż, że zamiast tracić czas na YT, wyciągnąłeś wnioski z przeczytanego materiału i umiesz zaplanować swój rozwój. Przeczytałeś podręcznik użytkownika tego modułu? Nic nie zaświtało? Nie zadawaj pytań typu "jak to zrobić" tylko wniknij w szczegóły. Może tak, po kolei, po nitce do kłębka, do czegoś dojdziesz. Alternatywą jest łut szczęścia i znalezienie filmiku na którym ktoś "magicznie" rozwiązał dokładnie taki sam problem jak Twój (chyba na tym ostatnio to w większości polega) - inaczej leżysz.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.