Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Atmega1284/ Bascom - Karta SD i pin sterujacy CS

maximus22_kr 01 Jan 2014 03:49 2544 8
IGE-XAO
  • #1
    maximus22_kr
    Level 18  
    Witam w Nowym Roku

    Chciałem zapytać, czy ma znaczenie, do którego pinu kontrolera jest podpięte wejście sterujące wyborem karty SD ?

    Korzystam z kodu podanego w helpie - zamieniłem tylko PortB.4 na PortD.6 i cały czas mam aktywną kartę SD, co oczywiście skutkuje zablokowanie kontrolera.

    Jako, że nie działa mi to razem z innymi funkcjami, więc próbuję zainicjować samą kartę.

    Code: basic4gl
    Log in, to see the code


    Plik Karta_MMCSD_HC.bas zawiera

    Code: basic4gl
    Log in, to see the code


    cały czas świeci się LED podpięty do linii CS karty SD
  • IGE-XAO
  • #2
    Mundi1970
    Level 24  
    Pin PD.6 lub inny może być zdefiniowany jako /CS karty SD, ale przed konfiguracją SPI pin PB.4 (/SS) musi być skonfigurowany jako wyście. Jeżeli w trybie SPI MASTER pin /SS będzie zdefiniowany jako wejście, i jego stan zmieni się na 0 to mikrokontroler przełączy się w tryb podrzędny (SLAVE).
    Ten kawałek nie może być w komentarzach:

    Code: basic4gl
    Log in, to see the code
  • #3
    maximus22_kr
    Level 18  
    Witam

    U mnie "odkomentowanie" tych trzech linii powoduje tylko to, że dioda SD-active miga cyklicznie co 1 sekundę - tzn przerywa świecenie co 1 sekundę, więc właściwie cały czas jest aktywna. Natomiast włożenie karty SD powoduje, że SD-active miga bardzo szybko.

    dołączam schemat
    Atmega1284/ Bascom - Karta SD i pin sterujacy CS

    natomiast to:
    Code: basic4gl
    Log in, to see the code


    nie robi żadnej różnicy, mimo, iż tutaj na forum ktoś pisał, że powinna być ta druga konfiguracja.

    Najgorsze jest to, że w niedziele wieczorem całość działała przez parę minut, więc postanowiłem dołożyć detekcje karty SD oraz odczyt karty SD zaraz przy pierwszym uruchomieniu. Niestety coś się popierniczyło i zaczynam od początku

    Fusebity mam
    Low: 0xFF
    High: 0xD1
    Extended: 0xFF
  • IGE-XAO
  • #4
    maximus22_kr
    Level 18  
    A czy schemat według Kolegi jest poprawny ?

    Podejrzewam jeszcze Fusebity, bo tam robiłem zmiany, chodziło o nie kasowanie EEPROM Atmegi przy programowaniu.

    Mam dwie takie same płytki, na obydwu dzieje się tak samo, więc wykluczam błąd przy montażu.
  • #5
    Mundi1970
    Level 24  
    A próbowałeś na urządzeniu uruchomić tylko sam AVR-DOS , bez reszty programu? Sprawdziłbyś czy karta i system plików jest poprawnie inicjalizowany. Przykładowy program, w archiwum są dodatkowe pliki z konfiguracją karty i avr-dosa. /CS karty jako PD.6, SPI na początku jest skonfigurowane z preskalerem 64. Jeżeli masz jakiś konwerter np. USB - UART (RS232) to podłącz do RXD0 i TXD0, wynik wyświetlisz w terminalu. Schemat podłączenia karty SD wydaje się być poprawny.

    Code: basic4gl
    Log in, to see the code
  • #6
    maximus22_kr
    Level 18  
    dziękuje za odpowiedź.

    wgrałem ten program do Atmega1284P i jest tak, że uruchamiając przy wyjętej karcie:
    [00]Początek programu...
    Brak karty SD.
    Koniec
    Początek programu...

    Po włożeniu karty - Sandisk 2 Gb
    Typ karty: SDSC Spec. 2.0 or later
    Udana inicjalizacja karty SD.
    Filesystem: 6
    FAT Start Sector: 143
    Root Start Sector: 615
    Data First Sector: 647
    Max. Cluster Nummber: 60273
    Sectors per Cluster: 64
    Root Entries: 512
    Sectors per FAT: 236
    Number of FATs: 2
    Koniec

    Jeśli chodzi o podłączenie to rozumiem, że we wszystkich projektach wykorzystujących kartę SD ( właściwie SPI sprzętowe ) portb.4 ( SS ) musi pozostać nieużywany ?
  • Helpful post
    #7
    Mundi1970
    Level 24  
    Czyli karta inicjalizuje się poprawnie. PB.4 możesz wykorzystać jako wyjście, np. /CS innego urządzenia SPI. Niemożna tego pinu skonfigurować jako wejście (dotyczy trybu SPI master).
  • #8
    maximus22_kr
    Level 18  
    A można przez portb.4 wysyłać sygnał SCK do RFM12 ? Pewnie można bo SCK to sygnał wyjściowy.
    Oczywiście nie jednocześnie z zapisem na SD - jeśli chodzi o prowadzenie ścieżek, to łatwiej i optycznie.

    W całym projekcie wywołuje po kolei czujniki, wysyłam przez rfm12 u na końcu zapisuję na SD ( tzn. jeszcze nie zapisuję :-) ). Całość jest na zasadzie listy z zmienną wybór, która się zwiększa i uruchamia po kolei wszystkie elementy, po osiągnięciu wartości 18 jest wpisywana wartość 1 i tak w kółko.

    To chyba nawet nie była kwestia szybkości SPI, bo jak podpiąłem te dwa pliki Kolegi do mojego, praktycznie "gołego" Test.bas to również jest OK, tzn. karta nie jest cały czas aktywna
  • #9
    Mundi1970
    Level 24  
    Myślę że spokojnie można wykorzystać PB.4 jako SCK dla softwarowego SPI.