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

MMC, AVR-DOS i BASCOM. Układ nie reaguje na odczyt/zapis karty MMC.

elektro255 17 Mar 2005 17:35 4004 1
REKLAMA
  • #1 1323202
    elektro255
    Poziom 15  
    Posty: 178
    Pomógł: 4
    Ocena: 1
    Witam, mam procesor ATMEGA128 16AI zasilany z 5V i podłaczony do niego LCD i MMC zasilane 3.3V. Magistarla SPI została do nich podpięta przez rezystory poza klinią DO (data out karty MMC). Po włczeniu układ nie reaguje na odczyt zapis do karty MMC, może 3,3V z DO mmc nie jest rozróżniany przez AVRa jako stan wysoki? Wyświetlacz LCD działą dobrze i ma odzielne rezystory do SPI. Do sterowania kartą MMC użyłem biblioteki MMC.LIB z AVR-DOS.

    Jeśli ktoś prubował użyć AVR-DOSA lub innych bibliotekl wstawek ASM w BAscomie to proszę o jakieś wskazówki bo mędzie sie z tą MMC drugi dzień.

    Kod programu do testowania karty który nie działa:

    
    Mmccs Alias Portb.6
    Mmccs_pin Alias Pinb.6
    Lcdres Alias Portb.5
    Lcdcs Alias Portb.4
    Mosix Alias Portb.2
    Misox Alias Portb.3
    Sckx Alias Portb.1
    
    $regfile "m128def.dat"                                      'ATMEGA128 16AI
    $lib "MMC.LIB"                                              'biblioteka AVR-DOS
    $crystal = 16000000                                         'kwarc 16MHz
    Config Porte = Input : Config Portb = Output : Config Portb.3 = Input       'ustaw ddr
    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
    Spsr = 1                                                    'double speed
    Spiinit                                                     'SPCR=92
    Waitms 1
    
    
    Config Mmccs_pin = Output                                   'konfiguracja potrzebna dla MMC.LIB
    Cs Alias Portb.6
    _mmcp_cs Alias Portb
    _mmc_cs Alias 0
    Set Mmccs
    Set Lcdcs
    
    Dim Gbdriveerror As Byte
    Dim Gbdriveerrorreg As Byte
    Dim Gbdrivestatusreg As Byte
    
    Dim Berror As Byte
    Dim Abuffer(512) As Byte
    Dim Wsrampointer As Word
    Dim Lsectornumber As Long
    
    Lcdres = 0                                                  'reset LCD
    Waitms 5
    Lcdres = 1
    Lcdcs = 1                                                   'wyłącz sterownik LCD
    
    
    Berror = Drivereset()                                       'inicjalizacja MMC
    Berror = Driveinit()
    
    Waitms 100
    
    
    For Lsectornumber = 0 To 512                                'zapisz przypadkowe dane do buforu
    Abuffer(lsectornumber) = Rnd(255)
    Next Lsectornumber
    
    Wsrampointer = Varptr(abuffer(1))
    
    Lsectornumber = 3
    
    Berror = Drivewritesector(wsrampointer , Lsectornumber)     'zapis na karte
    
    For Lsectornumber = 0 To 512                                'wyczyść bufor
    Abuffer(lsectornumber) = 0
    Next Lsectornumber
    
    Lsectornumber = 3
    Berror = Drivereadsector(wsrampointer , Lsectornumber)      'odczyt danych z karty
    
    
    
    DALSZA CZĘŚĆ PROGRAMU KTÓRA WYŚWIETLA ZCZY^TANY BLOK NA WYŚWIETLACZU LCD
    
  • REKLAMA
  • #2 2936659
    satanistik
    Poziom 27  
    Posty: 1933
    Pomógł: 61
    Ocena: 761
    Ja dałem między kartą a prockiem konwerter poziomów napięć (opis był przy okazji sterowania wyświetlacza lcd z noki w ep i jest na elektrodzie).
REKLAMA