logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega(32 / 644p) ,enc28j60 ,karta sd - serwer HTTP

scsi 11 Mar 2010 12:14 12005 16
  • #1 7813761
    scsi
    Poziom 11  
    Witam!

    Poszukuję jakiegoś schematu + kodu do zrobienia prostego serwera WWW na atmedze(32 lub 644p z enc28j60) ale musi on czytać strony www z karty sd / mmc.
    Na sieci znalazłem wiele schematów na atmegę ale bez obsługi kart sd / mmc, a strony www są zapisane w pamięci mikrokontrolera.

    Z góry dziękuję za pomoc.
  • #4 7814061
    scsi
    Poziom 11  
    Co do schematu to fakt znalazłem aż 3 i wszystkie są bardzo podobne :-)
    Kodu szukam i szukam i znaleźć nie mogę.

    Posiadam w domu płytkę testową z atmega 664p i kit avt1528(enc28j60). Zmontowałem ze strony ulrichradig.de serwer www i działa ale czyta strony z procka. :(

    dir3ctor: na tej stronie nie ma kodu albo ja znaleźć nie mogę :-(
  • #5 7814097
    manekinen
    Poziom 29  
    scsi - jak byś czytał w myślach bo dokładnie na takich elementach (m644, sd, enc28j60) zrobiłem sobie już całą płytkę, jestem w trakcie pisania kodu - masakra :) Obawiam się że nie znajdziesz nigdzie takiego projektu, na pewno nie z kodami źródłowymi :( Rozumiem że interesuje Cię tylko C? Bo ja skrobie w "B" (bascom).
  • #6 7815298
    zbv
    Poziom 20  
    Tak naprawdę to jak potrafisz wygenerować stronę zapisaną w pamięci programu, to z karty sd też nie powinno być większego problemu. By zrobić to w sposób taki aby wcześniej można było zapisać taką stronę na kartę za pomocą czytnika trzeba wprowadzić obsługę fata na atmega i to może na początku sprawić trochę kłopotu, ale są gotowe opracowania więc nie trzeba zaczynać od zera. Jak masz FAT to reszta sprowadza się tylko do odczytu plików ze stronami HTML z karty.
  • #8 8196374
    11111olo
    Poziom 42  
    SCSI uruchomiłeś ten serwer?
  • #9 8198833
    damiano713
    Poziom 15  
    Witam

    Mam zrobiony taki serwer. Zrobiony na ATmega32, karta SD, zewnętrzny bufor SRAM 32kB.
    Nie mam zrobionego schematu ani płytki drukowanej (zmontowane było toto na płytce testowej AndTech EvB 4.3). Mogę jedynie zrobić jakiś schemat blokowy.
    Wszystko jest konfigurowalne w kodzie źródłowym.

    Serwer odczytuje strony z katalogu "WWW" na karcie SD. W głównym katalogu jest plik binarny z ustawieniami (jeżeli nie ma to zostanie stworzony automatycznie).

    Dodam jeszcze, że kod kompilowany jest w Eclipse z pluginem AVR. Aby włączyć DEBUG trzeba wstawić '#define DEBUG' w pliku który ma zostać zdebugwany.
    Na porcie COM powinny się pojawić ładnie opisane komunikaty.
    Załączniki:
  • #10 8255465
    guuciek
    Poziom 14  
    Witam . Czy któryś z WW serwerów może pracować jako dysk sieciowy .
    Chodzi mi o takie coś żeby był do niego dostęp z Mojego miejsca sieciowego w Windowsie , albo przez mapowanie dysku sieciowego , czyli żeby można było do niego odnosić się jak do folderu i zapisywać oraz odczytywać pliki .
  • #11 8255575
    11111olo
    Poziom 42  
    Nawet jak to by działało to będzie straszliwie wolne.
  • #12 8256611
    guuciek
    Poziom 14  
    Chodzi mi o coś takiego co bym mógł podpiąć pod ruter jako dysk sieciowy (pojemność powiedzmy 512 mb karta sd ) co by mogło chodzić bez przerwy abym zawsze miał dostep do niego w sieci lokalnej . Posiadam komputer stacjonarny i laptopa . Na kompie zapisuję wszystkie moje projekty elektroniczne , ale gdy chce się przesiąść na laptopa albo muszę całość przekopiować na niego ( bo co chwile coś się zmienia w tym folderze , albo zostawić włączonego kompa ) . A tak to miał bym to zapisane na karcie która cały czas chodzi , i tylko co jakiś czas odczytywał bym plik , potem działał na kompie , a na koniec zapisywał z powrotem do karty .
  • #13 8257270
    11111olo
    Poziom 42  
    Pomyśl o routerze z funkcją NAS np. Fritz box czy inne. Pchanie się w Atmegi jest skazane na ślimaczą prędkość, a co za tym idzie podwójnie wyrzucone pieniądze bo i tak kupisz router.
  • #14 8267788
    sebart
    Poziom 12  
    11111olo napisał:
    Pomyśl o routerze z funkcją NAS np. Fritz box czy inne. Pchanie się w Atmegi jest skazane na ślimaczą prędkość, a co za tym idzie podwójnie wyrzucone pieniądze bo i tak kupisz router.


    Wystarczy dowolny router ze złączem USB 100-200 zł np Edimax
    pendrive USB to tez niewielki wydatek. Chyba że chodzi o połączenie
    funkcji serwera www i serwera plików. to łatwiej będzie chyba zaimplementować
    jakiś najprostszy TFTP serwer tak jak opisywane tu:

    https://www.elektroda.pl/rtvforum/topic1566737.html
  • #15 8625540
    scsi
    Poziom 11  
    To co tu wrzuciłem można użyć jako dysk sieciowy. Zbudowałem to urządzenie i działa :-) z kartami na fat16 i fat32. Jeśli ktoś by chciał to mogę odsprzedać bo w sumie mam 2 takie urządzenia. Obydwa działają OK. Transfer na WWW - do 12KB co do transferu plików po FTP od 5kb minimum - 12 - 16KB przeważnie - maks 30KB. Nic lepszego już z atmegi nie wyciągniemy. Próbowałem przerabiać kod zajęło mi to ponad 3 miesiące i efekty mizerne.
  • #16 8625924
    damiano713
    Poziom 15  
    scsi:

    Ogólnie ATmega jako serwer sieciowy plików to zły pomysł.

    Moje urządzenie loguje dane do pliku na karcie SD. Transfer po HTTP jest na poziomie maksymalnie 200kB/s. Dane buforowane są w pamięci SRAM 32kB.
    Oczywiście transfery równoległe są już znacznie wolniejsze. Dwa równoległe to około 50kB/s na każdy slot.
    Bawiłem się również w komunikację 4 modułów, które wymieniają się informacjami. Każdy z każdym.
    Dane na poziomie do 20kB. Działało dobrze nawet gdy do jednego modułu podłączały się 3 pozostałe w tym samym czasie.

    Zegar Atmegi32 ustawiony na 25MHz.

    Pozdrawiam serdecznie
  • #17 12024901
    jajen
    Poziom 17  
    Podbijam stary temat bo widzę, że często zabierano głos w sprawie webserwerka z http://www.ulrichradig.de a mój problem może przyczynić się do rozwiązania innych problemów z tym projektem.

    Zrobiłem ten w wersji Atmega128 plus RTL8019AS (Single Side Webservers 26.10.04) , no i mam problem bo nie mogę go odpalić. Połączenia sprawdziłem chyba z 10 razy. Dziwne jest to, że po skompilowaniu kodu ze strony autora i załadowaniu do atmegi , serwer nie daje w ogóle znaku życia. Świeci ciągle tylko jedna dioda na RTL8019AS , podłączenie ethernetu nie daje żadnej reakcji. Co więcej nie ma komunikacji przez RS232 (nawet śmieci terminal nie wysypuje)

    Moje pytanie do osób mających doświadczenie:

    1. czy powodem tego może być brak eepromu 24AA256 (wydaje mi się , że bez eepromu powinno wstać)? Nie mam go i dlatego próbuje odpalić bez niego,

    2. Co do komunikacji po rs to czy prawidłowo zastąpiłem układ MAX202 układem MAX232 zmieniając jednocześnie kondensatory z 0,1uf na 2,2uf? (wydaje mi się , że tak można)

    3. Czy fusbity w atmedze128 powinny być ustawione: lfuse:w:0xff:m -U hfuse:w:0xcf:m czy jakoś inaczej?

    4. czy kwarc przy RTL ma być 20MHz (w projekcie nie ma tej informacji, ale z noty aplikacyjnej wychodzi mi, że tak.

    5. jakieś inne sugestie jak ustalić co stanowi problem?

    Przepraszam za może oczywiste dla niektórych pytania, ale nie mam za bardzo doświadczenia w uruchamianiu tego typu układów i brak mi pomysłu, gdzie szukać przyczyny. Dodam tylko, że projekt z tej samej strony na atmeg644 plus ENC28j60 ruszył mi od kopa.


    Jest pewien postęp. Jestem niemal pewien, że to kwestia fusebitów. Znalazłem wskazówkę na forum autora projektu. Zgodnie z nią wyłączyłem zgodność z atmega 103, zmieniłem wpis w clock.c z TIMSK1 na TIMSK i terminal ruszył. Wysypuje komunikat:

    --=== AVR-Server V1.40 ===---
    MMC : not included
    .........
    ERR: Init RTL8019: (255) ERROR !!! --

    Niestety nie bardzo rozumiem dalszą treść postu , więc może przetłumaczy mi ktoś co powinienem zaznaczyć w konfiguracji bitów (w burn-o-mat) i ewentualnie kodzie.

    Podaje treść oryginalnej wiadomości:

    1) Im Makefile die cpu auf atmega128 stellen
    2) Nun compilierts nicht mehr 2 Register sind da "falsch" benannt, einmal in UART und nochmal in clock

    Code:
    #if defined (__AVR_ATmega128__)
    # define USR UCSR0A
    # define UCR UCSR0B
    # define UDR UDR0
    # define UBRR UBRR0L
    # define EICR EICRB
    # define UCSRB UCSR0B (*)
    #endif

    (*) Die letzte Zeile noch einfügen (uart.h)

    In Clock.c kann das TIMSK1 in TIMSK umbenannt werden..

    Nun sollte alles übersetzten und kann programmiert werden... Die Bits für das ext. Quartz richtig setzen und den M103 Modus deaktivieren, sonst läuft die ser. Schnittstelle 0 nicht...
REKLAMA