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

ATMEGA32 - Niedziałające linie 3, 4, 5 w portach A, C, D - co sprawdzić?

Chester/Uczeń 26 Mar 2014 00:48 1593 8
  • #1 13444116
    Chester/Uczeń
    Poziom 10  
    Witam.

    Mam problem z moja Atmega32. W portach A, C, D (B nie sprawdzałem bo mam tam podpięty programator) nie działają mi linie 3,4,5 . Uprzedzam pytania typu (Jak sprawdzałeś ? ), sprawdzałem prostym programem który zaświeca wszystkie diody w porcie.

    Co do tej pory zrobiłem aby temu zaradzić:
    - sprawdziłem dokładnie połączenia na płytce
    -wyłączyłem fusebit JTAG (nie było poprawy w porcie C )
  • #3 13444592
    dondu
    Moderator na urlopie...
    Witam.

    Chester/Uczeń napisał:
    Uprzedzam pytania typu (Jak sprawdzałeś ? ), sprawdzałem prostym programem który zaświeca wszystkie diody w porcie.

    Mój komputer nie działa. Uprzedzam pytania typu (Jak sprawdzałeś ? ), sprawdzałem standardowo włączając przycisk.

    Co do tej pory zrobiłem aby temu zaradzić:
    - sprawdziłem dokładnie połączenia,
    - wyłączyłem w Bios zamykanie komputera po wciśnięciu przycisku Shut Down.

    Chester/Uczeń napisał:
    Mam problem z moja Atmega32. W portach A, C, D (B nie sprawdzałem bo mam tam podpięty programator) nie działają mi linie 3,4,5 .

    Objaw, który opisujesz nie ma prawa zaistnieć, ponieważ porty nie są wzajemnie od siebie zależna w taki sposób by akurat te konkretne piny nie działały w tych portach, a inne działały prawidłowo.

    ... i tu wracamy do wróżenia, o którym napisał Dejmos, a które rozwiązuje się w taki sposób: http://mikrokontrolery.blogspot.com/2011/04/fora-dyskusyjne-sa-bardzo-pomocne.html

    Innymi słowy - jesteś tutaj nowy (zaledwie 3 posty), nie znamy Twoich umiejętności, zadajesz pytania na poziomie całkowicie początkującego, to też musimy sprawdzać każdy element Twojego projektu.
  • #4 13444927
    Chester/Uczeń
    Poziom 10  
    Przepraszam nie postarałem się z opisem problemu.


    Mój kod do sprawdzenia portu D :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Załączam zdjecie z fusebitami i samym schematem połaczęń( na schemacie mam podłączone diody do portu D ale jak sprawdzałem np.port c to podłączałem je tak samo).
    Wynik mojego doświadczenia: świecą diody z lini 0,1,2,6,7.

    Jeśli ma to jakieś znaczenie to Atmegę programuję przez port LPT ( zero problemów z przesłaniem programu do uprocka) . ATMEGA32 - Niedziałające linie 3, 4, 5 w portach A, C, D - co sprawdzić? ATMEGA32 - Niedziałające linie 3, 4, 5 w portach A, C, D - co sprawdzić?
  • #5 13444995
    Konto nie istnieje
    Poziom 1  
  • #6 13445041
    BlueDraco
    Specjalista - Mikrokontrolery
    Ponadto obawiamy się, iż kod, który pokazałeś powyżej, może mieć pewne problemy z modyfikacją wartości portu D.

    A poza tym - dobrze jest czytać ostrzeżenia kompilatora i czyścić kod tak, żeby ich nie było, co wymaga uprzedniego zrozumienia każdego komunikatu. Gdybyś to robił - nie miałbyś problemu, który opisujesz.
  • #7 13445214
    dondu
    Moderator na urlopie...
    Chester/Uczeń napisał:
    DDRA = 11111111;

    Liczba ta to 11.111.111 (jedenaście milionów sto jedenaście tysięcy, sto jedenaście).

    Zobaczmy jaka jest jej reprezentacja w kodzie binarnym: 101010011000101011000111

    Ponieważ DDRD jest rejestrem 8 bitowym kompilator wykorzysta więc tylko najmłodszych 8 bitów, czyli te wytłuszczone.

    No to ustalmy ich numery:
    76543210
    11000111

    i zauważamy, że piny te ustawiasz jako wejścia, a nie jak chciałeś by były wyjściami, stąd taki efekt:

    Chester/Uczeń napisał:
    ... nie działają mi linie 3,4,5 .


    Ale przecież twierdziłeś:

    Chester/Uczeń napisał:
    Uprzedzam pytania typu (Jak sprawdzałeś ? ), sprawdzałem prostym programem który zaświeca wszystkie diody w porcie.


    Teraz już wiesz, że nie na darmo zadajemy pytania i prosimy o materiały.

    Rozwiązaniem jest więc wskazanie kompilatorowi, że liczbę zapisałeś jako binarną:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    To samo dotyczy oczywiście:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    choć tutaj z powodu samych zer Ci się upiekło :)


    Kurs C z kompilatorem online CManiak: http://mikrokontrolery.blogspot.com/2011/02/kurs-jezyka-c-spis-tresci.html

    EDIT:
    No i warningi, o których pisał BlueDraco, to także podstawa początkującego i nie tylko, by 10-tego stopnia Piekła Początkujących nie zaliczać: http://mikrokontrolery.blogspot.com/2011/04/pieklo-poczatkujacych.html
  • #8 13445881
    Chester/Uczeń
    Poziom 10  
    Dziękuje za rozwiązanie mojego problemu.
REKLAMA