Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Atmega128[Bascom] - Plik zewnętrzny "Config_MMC.bas"

werewolf15 22 Apr 2013 00:42 2724 7
  • #1
    werewolf15
    Level 14  
    Do odtwarzania plików .wav na atmedze 32 używałem takich ustawień w pliku zewnętrznym "Config_MMC.bas":
    Code: vbnet
    Log in, to see the code

    Chciałbym się przenieść z programem na atmege 128 i zmieniłem powyższy kod:
    Code: vbnet
    Log in, to see the code

    Niestety procek nie widzi karty.
    Według mnie trochę nie pasuje powtarzający się w programie "alias 1" bo chyba nie może się powtarzać?
    Proszę o pomoc w znalezieniu i poprawy błędu.
  • #2
    FastProject
    Level 28  
    To ci się w ogóle kompiluje. Dziwne te aliasy "Bmmc_miso Alias 1" "Bmmc_sck Alias 1"

    Co czego one sie odwołują, co to jest ta "1"?

    Ni i na pewno nie powinno być takich samych przypisań.
  • #3
    werewolf15
    Level 14  
    Przepraszam że nie potrafię tego wyjaśnić ale to nie ja pisałem ten program.
    Mam taki kod:
    Code: vbnet
    Log in, to see the code

    Do tego pliki zewnętrzne:
    1."Card_init_v2.bas"
    Code: vbnet
    Log in, to see the code

    2."Config_MMC.bas"
    Code: vbnet
    Log in, to see the code

    3."CONFIG_AVR-DOS.bas"
    Code: vbnet
    Log in, to see the code

    To wszystko działa na atmedze32.
    Chciałem aby program działał na at128 i myślałem że wystarczy zmienić ustawienia w pliku zewnętrznym "Config_MMC.bas".
    Oto schemat w jaki próbuję podłączyć at128
    Atmega128[Bascom] - Plik zewnętrzny "Config_MMC.bas"
  • #4
    ZbeeGin
    Level 39  
    FastProject wrote:
    To ci się w ogóle kompiluje. Dziwne te aliasy "Bmmc_miso Alias 1" "Bmmc_sck Alias 1"

    ALIAS jest podobna do #define w języku C. Po prostu nazwie przed słowem kluczowym "przypisujesz" inną wartość - za słowem kluczowym, właśnie po to by nie przerabiać całego programu na nowo tylko same "przypisania". To, że najczęściej programy wykorzystują konstrukcje: Dioda1 ALIAS PortB.2 (bo np. Piotr Górecki tak pisał w swojej książce :D ) o niczym nie świadczy. Kompilator napotykając "Bmmc_miso" w tekscie programu zamieni to na "1", zgodnie z instrukcją ALIAS.

    FastProject wrote:
    Co czego one sie odwołują, co to jest ta "1"?

    Jedynka oznacza tu numer bitu w porcie. Zresztą. Spójrz na komentarze pod instrukcjami. One wszystko wyjaśniają.

    Dodano po 21 [minuty]:

    FastProject wrote:
    Ni i na pewno nie powinno być takich samych przypisań.

    Mogą być. Zauważ, że wszystkie linie są częściowo na jednym porcie a częściowo na drugim. Decydującą rolę mają też ALIAS-y linijkę wyżej, które określają port. Raz jest to PORTB raz PORTE.


    Zastanawiam, się czy korzystanie dla potrzeb wewnętrznego programowego układu SPI - przez który komunikuje się procesor z kartą - "egzotycznego" portu PORTE nie jest problemem dla tego "emulatora" SPI. Spróbuj przenieść MISO i MOSI na PORTB albo PORTA odpowiednio modyfikując połączenia oraz treść config_mmc.bas
    Ale wcześniej sprawdź czy odpowiednio ustawiłeś bit fuse M103C. Bascom powinien wskazywać "128 compatible" (o ile pamiętam).
  • #5
    werewolf15
    Level 14  
    Proszę, napisz mi co to jest ten "bit fuse M103C" i jak go sprawdzić.

    Dodano po 1 [godziny] 6 [minuty]:

    Zrobiłem tak:
    Code: vbnet
    Log in, to see the code

    i tak połączyłem:
    Atmega128[Bascom] - Plik zewnętrzny "Config_MMC.bas"
    I dalej nie czyta karty.
    Proszę o pomoc.
  • #6
    ZbeeGin
    Level 39  
    Wejdź do programowania, wybierz zakładkę Lock and Fuse Bits, tam sprawdź pozycję zaznaczoną na żółto.

    Atmega128[Bascom] - Plik zewnętrzny "Config_MMC.bas"

    Poza tym, nie podobają mi się te dzielniki na portach. Nie lepiej zastosować bufory z serii LVC?
  • #7
    werewolf15
    Level 14  
    Fuse bity mam ustawione identycznie jak na twoim obrazku.Te dzielniki napięcia działały na at32 więc myślałem że tu też będą pasować.
    Może jeszcze jakieś propozycje jak przerobić mój kod na atmege128?
  • #8
    werewolf15
    Level 14  
    Z założenia mój układ miał być "mówiącym" sterownikiem domowym.Chciałem żeby za wszystko odpowiedzialna była atmega128 ale może łatwiej będzie użyć dodatkowego procka właśnie at32. Będzie ona spełniać rolę "procesora muzycznego" a at128 będzie wszystkim sterować w połączeniu UART.
    I co o tym myślicie?