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

[Atmega8][avr-gcc] - Zegar na Timer2 - problem z uruchomieniem.

pooson 22 Wrz 2014 23:00 1668 8
  • #1 13982858
    pooson
    Poziom 10  
    Witam serdecznie.

    Zazwyczaj większość problemów udaje mi się rozwiązać bez pisania na forum, jednak ten doprowadza mnie już do szewskiej pasji.
    Chcę zrobić zegarek na Atmega8A taktowanym wewnętrznym oscylatorem, z podłączonym kwarcem zegarkowym do wejść TOSC1/TOSC2 -bez powodzenia.
    Zawsze program staje na pętli
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Dotknięcie nóżki kwarcu powoduje wyjście z pętli, jednak timer dalej nie działa.
    Aktualny kod testowy:

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

    Fusy:
    Low: 0xE4
    High: 0xD9

    Dioda na PB4 świeci się ciągle, upewniałem się na wiele sposobów, że program nie wychodzi z pętli w RTCInit();

    Trzy razy zmieniałem układy (raz nawet na Atmegę88p, oczywiście dostosowując kod), testowałem na 5 kwarcach w dwóch rodzajach (jedne zwyczajne 3x8mm, drugie mniejsze) od dwóch różnych dostawców - zawsze w tym samym miejscu program się zatrzymuje.

    Schemat płytki oraz jej layout:
    [Atmega8][avr-gcc] - Zegar na Timer2 - problem z uruchomieniem.

    [Atmega8][avr-gcc] - Zegar na Timer2 - problem z uruchomieniem.
    Na layoucie jest oznaczona niepołączona masa, jednak w zmontowanej płytce masa jest połączona obudową portu microusb.

    Testowa płytka obejmuje przylutowane przewody do pinów ISP kontrolera, wlutowane kondensatory filtrujące oraz kondensatory przy kwarcu 33pF (próbowałem bez kondensatorów i z kondensatorami od 18pF do 100pF).
    Przylutowanie kwarcu bezpośrednio do pinów mikrokontrolera niczego nie zmienia.

    Program pisany w Eclipse pod Windows 7, kompilowany za pomocą WinAVR-20100110, inne programy działają, tylko ten sprawia problemu.

    Nie wiem gdzie mogłem popełnić błąd i czego mam się chwycić... Może czas się wybrać do egzorcysty? ;)

    Nie mam niestety dostępu do oscyloskopu.

    Bardzo proszę o pomoc w rozwiązaniu tej zagadki.
  • #2 13983010
    Dople
    Poziom 19  
    U mnie ten kod działa (na atmega8a PDIP, bez kondensatorów przy kwarcu).

    Próbowałeś sprawdzić jak się zachowuje układ, np. na płytce stykowej? Podłączałeś obudowę kwarcu do masy?
    Sprawdzałeś z domyślnym ustawieniem fusebitów?

    Reset wisi w powietrzu - rezystor by... nie zaszkodził. :)
  • #3 13985383
    pooson
    Poziom 10  
    Sprawdziłem na domyślnych fusach - nic.
    Podłączyłem rezystory 4.7 i 8.2kOhm - nic.
    Na płytce stykowej nie mam jak sprawdzić - mam tylko atmegi w TQFP.
    Przyłożenie na stałe obudowy kwarcu do masy - nic.
    Wylutowałem układ MAX 1555 - nic
    Próbowałem użyć środowiska Arduino i biblioteki swRTC - też nic.

    Więc zostają chyba 3 opcje:
    - błędny layout płytki
    - źle skompilowany program
    - problem z programatorem (USBasp)

    @Dople - czy mógłbyś wysłać hexa na atmegę który u Ciebie działał?

    W spoilerze kod asm wygenerowany przez avrdude:
    Spoiler:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #5 13985524
    pooson
    Poziom 10  
    Akurat takie rezystory miałem i według http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html powinny być ok.

    Za hexa dzięki, niestety po wgraniu nic się nie dzieje. Chyba wrócę do modeliny i plakatówek...

    Co ciekawe reszta uC wydaje się działać - póki nie miałem kwarcu napisałem obsługę wyświetlacza 7 segmentowego i działało.

    Dołączyłem schemat w Eagle, jeżeli ktoś byłby tak miły i zerknął, czy nie mam tam jakiegoś babola powodującego takie zachowanie.
  • #7 13990632
    pooson
    Poziom 10  
    Kondensatory też w różnych konfiguracjach próbowałem....
    Nikt nie ma pomysłu co może być nie tak?
  • #8 13990821
    excray
    Poziom 41  
    Może spróbuj w takim układzie:
    [Atmega8][avr-gcc] - Zegar na Timer2 - problem z uruchomieniem.
  • #9 13991125
    pooson
    Poziom 10  
    Nie miałem pod ręką 8.2M, sprawdziłem na 4.7M. Również fiasko.
REKLAMA