Książki do AVR + pare dodatkowych

Nov 20, 2005 5 Replies

Witam szanownych grupowiczów W tym roku będę bronił pracy magisterskiej na kierunku Informatyka (PolSl), w związku z tym, mam pare pytań. Jeszcze nie jestem do końca zdecydowany co do tematu pracy magisterskiej, a czas niestety goni. Myśle nad zrobieniem testera sieci LAN na mikrokontrolerze AVR. Nie chodzi mi o 8 diod mrugających w przypadku przerwania linii w skrętce, ale o układzie sprawdzającym nieco dokładniej jakość połączenia. Chodzi mi o np. wysyłanie pakietów ping, które mogą się przydać w przypadku sprawdzania np. połączenia za radiem.



Zestaw pytań które mnie nurtują:



1 literatura - aktualnie znalazłem 3 ciekawe pozycje wydawnictwa BTC, które po przejrzeniu spisu treści (i przelotnie jednej z nich) nastawiają optymistycznie co do ich przydatności. Są to:


-Mikrokontrolery AVR ATmega w praktyce

formatting link
AVR w praktyce
formatting link
mikrokontrolerów AVR w języku BASCOM
formatting link
Która z tych pozycji jest "najlepsza" dla osoby, która planuje poznać AVRy i pisać oprogramowanie w C, lub BASCOMie? Skłaniam sie co do pierwszej pozycji. Aha, wiem że istnieją bogate źródła do każdego procka, ale wolałbym zacząć przygode z AVRami w języku ojczystym.


2 język programowania - Aktualnie doświadczenie mam w programowaniu (assembler) i architekturze procesorów rodziny 8051, ale dotarło do mnie, że napisanie rozbudowanego programu nawet dla tak "prostego" układu to zadanie strasznie czasochłonne. Dlatego w tej pracy chce wykorzystać język wyższego poziomu C lub BASCOM. Bardziej się skłaniam do C, gdyż jest dla mnie językiem wyjątkowo logicznym i przejrzystym (wiem, nie wielu tak myśli). Co do BASCOMA mam mieszane uczucia. Nie znam obu języków dla mikrokontrolerów,ale pare opini na googlach już przeczytałem. BASCOM ma pozytywną opinie (prosty, łatwy i przyjemny), ale czy jest równie funkcjonalny jak C? Przy okazji wydajny i szybki (wielkość kodu)? Co proponujecie dla osoby która dobrze zna C dla platformy PC i nie boi się tego języka jak niestety wielu programistów? Dla PC wybór jest prosty, tylko C w różnych wydaniach, ale mikrokontroler to nie PC i rządzi się własnymi prawami. Zakładam, że oba języki mają wstawki w ASSEMBLERZE,bo bez tego nie wyobrażam sobie programowania. Drugą rzeczą jest dostępność darmowego środowiska do programowania.


3 Ethernet - no właśnie jak to zrealizować tanio i dobrze? Zakładając, że chce uzyskać przepustowość 100mb/s, ale bez obróbki danych. Czyli po prostu sprawdzić jaka jest przepustowość łącza, np. po FTP. Licznik kolizji, uszkodzonych pakietów też się przyda. Czy taki procesor AVR poradzi sobie z tym? Do tego zapewne należy wykrzystać dodatkowy układ ze stosem TCP/IP itp. Mikrokontroler zwalniał by w miare możliwości buffor odbiorczy po odebraniu kolejnego pakietu danych. W tym temacie jestem niestety zupełnie zielony, ale zakładam, że sporą część pracy wykonuje dodatkowy układ np. RTL8139. Widze 3 rozwiązania tego zagadnienia:



- oprogramować karte sieciową z układem RTL8139 - plus to to, że taniej sie chyba nie da kupić takiego układu + dodatkowe elementy wymagane do jego poprawnego działania. Minus to nie wiem, czy da się taką karte sterować poprzez AVRa. Częstotliwość taktowania magistrali jest sporo wyższa od AVRa i nie wiem, czy karta będzie działała dla częstotliwości np. 20MHz AVRa. Jaki jest koszt samej kostki RTL8139 i gdzie jest dostępna? Pewnie kompletna karta jest tańsza od samego układu, znając życie :D



- inny dodatkowy układ,



- nowy mikrokontroler AT91RM9200-QI

formatting link
nim zawarty jest taki układ. Problem w tym, że jak się nie myle taktowany jest dość dużą prędkością, a z tym mogą być problemy. Niewiele osób zapewne ma doświadczenie z nim, więc w razie problemów może być nieciekawie. Zaletą tego jest to, że ma wszystko!


4 linki z przykładami podobnych urządzeń - czy ktos zna stronę ze zrealizowanymi takimi urządzeniami? Serwery WWW itp.


Troszkę się rozpisałem. Za wszelką pomoc, wskazówki i sugestie bardzo dziękuję.



Pozdrawiam


Ja na pracę magisterską z elektroniki zrobiłem telefon IP - może coś z idei tamtego rozwiązania Ci się przyda. Pełny tekst mojej pracy magisterskiej (opublikowany za zezwoleniem promotora) znajdziesz tutaj:

formatting link
formatting link
Jeżeli chcesz wykorzystać pełne możliwości FastEthernet'u to bez procesora minimum 100 MIPS'owego nawet nie zaczynaj. Dobry będzie wspomniany już tu ARM AT91RM9200.

<ciach>
  1. W życiu nie przeczytałem żadnej książki o AVR, imho strata czasu - to tylko o takie "dedykowane tłumaczenie" dokumentacji. Wyierz typ procesora i przeczytaj do niego manual.
  2. Obejrzyj sobie avr-gcc. I nie myśl o Bascomie (Artur, nie bij ;))
  3. formatting link

Pozdrawiam

Da się to zrobić na AVR chociaż na implementację stosu od zera trochę czasu trzeba poświęcić to jednak zapewniam cię że warto (TCP/IP w jednym paluszku nie będzie niczym niezwykłym).

Właśnie robię identyczne urządzenie i już kończę pisać stos. Do komunikacji z ethernetem wykorzystuję atmega32, oraz starą kartę isa na rtl1980as( ale są do kupienia stosunkowo drogie gotowe moduły z tym procesorem).

Sam stos tcp/ip (NIC, ETHERNET, ARP, IP, ICMP, TCP) po niedużym okrojeniu mieści się w atmega8515 (8kB), a po drastycznym okrojeniu pewnie zmieściłby się i w mniejszym kwestia wygody używania takiego stosu. Ja postawiłem jednak na wygodę, rozbudowałem stos (np:. tcp na wzróc gniazd windowsowych listen, accept, itp.) i dlatego wybrałem atmega32 pownieważ też przy atmega16 zabrakło mi pamięci na ciekawsze strony html.

W skrócie urządzenie odpytuje (wysyłą icmp_echo) zadane adresy i jak nie ma połączenia to restartuje przekaźnik.

Konfiguracja urządzenia przez stronkę www. Ustawiania podstawowych parametrów sieciowych adresu ip, maska, bramka, hasło dostępu po base64 no i oczywiście odpytywane adresy,parametry zapytań icmp.

Osobiście używam darmowego środowiska WinAVR i avr-gcc. Nie polecam assemblera bo to mija się z celem. BASCOMA nie używam, nigdy nie używałem i nie chcę go używać więc nic na jego temat nie powiem. Co do literatury to oczywiście i tak trzeba przeczytać pdfa danego procka, ale nie koniecznie wyszystko dlatego jak jesteś leniwy to kup sobie jakąś książkę np: "Mikrokontrolery AVR w praktyce" zapoznaj się z rdzeniem to zaoszczędzisz sporo czasu resztę doczytasz w pdfie. Jak znasz 8051 to zapoznanie się z AVR pójdzie jak po maśle.

Jak się zdecydujesz na samodzielną implementację stosu niekoniecznie w AVR, ale np. w 8051 to mogę co nieco podpowiedzieć.

Nie wiem jak to wygląda na ARM może ktoś inny się wypowie odnośnie ceny takiego cacka z interfejsem ethernetowym i dostępu oprogramowania stosu tcp/ip.

Pozdrawiam Paweł

Tutaj:

formatting link
płytkę a ARMem LPC2129 + kontroler ethernetowy CS8900. Do płytki dostępny jest darmowy stos TCP/IP (sportowany uIP) w linkach znajdziesz również Web server (w/w stos uruchomiony jako wątek w FreeRTOS).

Przeczytalem wszystkie trzy ksiazki,tez bym wybral tak jak Ty. Jest tam calkiem sympatyczny opis asemblera. Oczywiscie takze architektury mikrokontrolerow.

Wlasciwie sam sobie odpowiedziales: C. BASCOM daje mozliwosc latwego i szybkiego napisania programu, ale nie jest tak elastyczny i funkcjonalny jak C. Co do szybkosci kodu, zalezy to bardziej od algorytmu, niz uzytego kompilatora. Ale to wiesz. Po przeczytaniu ksiazki Baranowskiego dojdziesz do wniosku, ze pisanie w asemblerze wcale nie jest takie straszne.

AVR Studio + WIN AVR z AVR GCC. Bardzo sympatyczny zestaw, calkowicie darmowy.

Pozdrawiam, Pawel

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required