Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

aplikacja obslugująca lpt i karte sd

15 Mar 2009 20:30 2000 18
  • Poziom 9  
    Witam.Interesuje mnie taka aplikacja, za pomoca ktorej bede mogl obsluzyc zapis i odczyt odpowiednich sektorow z karty sd za pomoca portu lpt...Czy moze ktos juz kiedys taki cos robil albo ma jakies czesci programu ktore moglyby mi pomoc? Czekam na odpowiedz
  • Poziom 17  
    ale czemu akurat lpt?? nie prosciej kupic jakis czytnik na usb??
    sd to przez spi ze swiatem sie komunikuje... lub... mam wrazenie, ze jakis dedykowany protokol tez ma..., wiec od tego raczej bys musial zaczac...
  • Poziom 9  
    To nie chodzi o to zeby bylo prosciej;) Hmm.... ale jaki protokol?...
  • Poziom 17  
    ale tak jak proponujsz to mam wrazenie, ze bedzie co najmniej niepraktycznie ;)... no chyba, ze to ma miec walory czysto edukacyjne :)...

    poszukaj na elektrodzie nawet... wpisz sd, czy mmc i cos bedzie... ja wpisalem w google: "obsluga kart sd" i tez cos znalazlem :)...
  • Poziom 9  
    A orientujesz sie czy musi byc do tego jakis procesor uzyty? Czy w schemacie wystarczy zasilanie rezystory no i wejscie? Mozna karte obsluzyc bez tego? Wystarczy gotowa aplikacja pod wina?
  • Poziom 17  
    o nie, nie orientuje... ale mysle, ze (jesli to dal auto-edukacji :)) to warto powalczyc... nie wiem jaka predkosc mozna rozwinac na lpt oraz czy sd wymaga jakiejs minimalnej... nie wiem tez na ile wykonalnym zadaniem jest implementacja np SPI na porcie lpt... zasilac to mozesz pewnie i z game-portu lub usb :D... jesli sd chodzi na 5V... gotowego programu to raczej nie uswiadczysz... no w ogole to jak juz pisalem, to jest dla mnie zupelnie nietrafiony pomysl...
  • Poziom 9  
    ogolnie schemat takiego czegos mam:D no i niby tam spi do komunikacji jest najlepszym rozwiazaniem:D tylko pytanie jak?:D jak to SPI dziala i w jaki sposob sygnal raz jest wysylany na karte a raz odbierany z karty?? jak wyglada czesc programu zwiazana z tym SPI do zapisu i odczytu?
  • Poziom 17  
    http://lmgtfy.com/?q=Serial+Peripheral+Interface ;) ;)...

    polecaj SPI pewnie dlatego, ze wiekszosc mikrokontrolerow ma sprzetowy sterownik... Ty musisz caly protokol komunikacyjny zaimplementowac programowo... i nie wiem co sie okaze latwiejsze: czy spi, czy ten protokol "natywny" (jesli rzeczywiscie takowy istnieje ;))... no ogolnie roboty czeka CIe duzo... i kombinowania raczej tez...
  • Poziom 9  
    no wlasnei... SPI ma byc programowne... a daloby rade przerobic program z atmegi na rs na taki do LPT?
  • Poziom 17  
    znaczy, ze co?? ze sd podlaczone do atmegi (do sprzetowego spi), a atmega do kompa przez lpt (zamiast rs)??
  • Poziom 9  
    Znaczy sie ze mam program na atmege i rs.. a potrzebuje na lpt bez zadnego procka.. chodzi tylko o jakis kawalek programu ktory bedzie obslugiwal Wysylanie i odbieranie z sd i port lpt
  • VIP Zasłużony dla elektroda
    I w czym masz problem? O przykłady programowania lepiej nie pytaj, bo wszystko już zostało napisane na ten temat.

    Piszesz funkcje obsługi SPI przez LPT (wysyłanie/odebranie bajtu) - reszta kodu się nie zmienia. Podłączasz CLK, MOSI i CS pod piny wyjściowe LPT, pin MISO pod pin wejściowy i już. Na przykład:
    Code:
    uint8_t spi_transfer(uint8_t to_send) {
    
        uint8_t result = 0;
        unsigned i;
        for (i = 0; i < 8; ++i) {
             lpt_set_sck(0);
             lpt_set_mosi(to_send & 0x80);
             to_send <<= 1;
             lpt_set_sck(1);
             /* tutaj jakis delay */
             result <<= 1;
             if (lpt_get_miso())
                 result |= 0x01;
        }
        return result;
    }

    Edit: Zobacz np tutaj: http://www.mcu.fluxfocus.com/documents/SDSPI/sdspi.htm

    Edit 2: poprawka kolejności przesunięć logicznych.

    Pozdrawiam,
    Dr.Vee
  • Poziom 9  
    A gdzie w tym kodzie obsluga cs?

    Moze pytanie banalne, ale nie dla osoby zaczynajacej taka zabawe:/
  • Poziom 37  
    Jeszcze jeden pin portu LPT wykorzystujesz jako załączenie karty. Jeszcze prostrze niż obsługa SPI - 0' włączasz kartę, '1' wyłączasz.
  • Poziom 9  
    No to ja wiem ze tak ma byc;) Ale jak to sie ma to krogramu? Ca tam trzeba dopisac? I jak bedzie wygladac to SPI?

    Code:
    unsigned char spi(unsigned char dat)
    
    {  unsigned char i,dana=0;
        for (i=0;i<8;i++){
          if(dat&0x80){PORTC|=MOSI;}
                else {PORTC&=~MOSI;}
                dat<<=1;
          PORTC|=SCK;
          if(PINC&MISO){dana++;}
                if(i<7){dana<<=1;}
          PORTC&=~SCK;
          }
         return dana;
    }


    Taki kod moze byc do tego? A moze ktos mi wyjasnic tak lopatologicznie linijka po linijce co bedzie sie dzialo ?:)

    Proszę używać znaczników [code] - dodałem.
    [Dr.Vee]
  • Poziom 37  
    Ten kod to pod kontroler (AVR?)? Bo tak wygląda.
    Przed każdą komunikacją (np. uruchomienie programu) załączasz kartę. Przy zamykaniu programu lub po skończeniu transferu wyłączasz kartę.
    /CS chip select - służy do aktywacji karty, sama nazwa jednoznacznie wskazuje co trzeba zrobić. Dzieki temu wejściu możesz używać wielu kart na jednej magistrali, wystarczy deaktywować reszte a włączyć tylko jedną.
  • Poziom 9  
    Znalazlem na forum takie cos.. To jest pod AVR wlasnie... Nie mam pojecia jak to bedzie wygladac pod LPT taki kod... Da sie w ogole ten przerobic i polaczyc jakos z tym wyzej?

    ========

    no i jeszcze jedno pytanie mam... odnosnie LPT.. jak bedzie wygladala funkcja wpisujaca slowo na port? to bedzie jakis for? i co krok po kroku bedzie ona robic?

    Proszę nie pisać postu pod postem tylko używać przycisku ZMIEŃ - posty scaliłem.
    [Dr.Vee]
  • VIP Zasłużony dla elektroda
    Ten kod na AVR to (prawie) dokładnie to samo, co Ci napisałem wcześniej. Nie dodałem do niego obsługi pinu CS, bo np. w trakcie inicjalizacji karty musisz wysyłać dane bez aktywowania CS żeby przejść w tryb SPI.

    Zdecyduj się jaki język programowania i poszukaj odpowiedzi na pytanie o port LPT w tematach przyklejonych/wyszukiwarce.

    Pozdrawiam,
    Dr.Vee
  • Poziom 9  
    Szukam caly czas ale na nic konkretnego nie moge trafic... Co do jezyka to najlepszym (choc i tak ciezkim) bylby C++... A co do tego lpt to ja juz mniej wiecej sie orientuje jak to dziala co to robi i jak wysyla... Chodzi tylko o jakas petle ktora np wpisze na port wartosc 05h. A moze wystarczy wrzucic kawalek assemblera po jakiejs komendzie? Jakies 3 linijki z mov i bedzie dzialac?