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

DS1820 z ATmega8 - Brak układu na wyświetlaczu, jak rozwiązać?

1ceman 22 Mar 2006 22:36 1908 16
REKLAMA
  • #1 2446081
    1ceman
    Poziom 12  
    Posty: 104
    Pomógł: 1
    Witam
    Ostatnie dwie godziny spędziłem na przeglądaniu forum i szukaniu odpowiedzi na moje pytanie. Nie udało się wiec zostało mi prosić Was o pomoc.
    Chodzi o najpopularniejszy chyba czujnik na elektrodzie, czyli DS1820. Wykorzystałem ATmege8 z zewnetrznym oscylatorem i podłączyłem do niej czujnik. Do tej pory nigdy nie uzywałem zewnętrznego kwarcu i nie wiem czy jakoś trzeba to ustawić w opcjach czy wystarczy zapis w programie $crystal=8000000.
    Po włączeniu zasilania układu na wyświetlaczu zostaje przez ok. sekunde wyświetlony znaczek stopnia, po czym ukazuje się napis "Brak ukladu".
    Gdzie moze być błąd, jakie opcje ewentualnie zmienić?

    Dziękuje z góry za pomoc.
    Pozdrawiam!
  • REKLAMA
  • Pomocny post
    #2 2446105
    psooya
    Poziom 38  
    Posty: 5341
    Pomógł: 376
    Ocena: 573
    musisz ustawić FUSE bity na kwarc zewnętrzny domyślnie jest wewnętrzny RC o czestotliwości 4MHz. Jak masz STK 200/300 i dajesz programuj procesor to masz zakładke rom eeprom i fuse bity a tam znajdziesz które to sa bo niepamietam . Pozdrawiam
  • #3 2446109
    1ceman
    Poziom 12  
    Posty: 104
    Pomógł: 1
    Jeszcze jedno pytanie - jak można sprawdzić czy czujnik jest dobry? Może z nim coś jest nie tak.
  • Pomocny post
    #4 2446134
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Najprawdopodobniej AT MEGA 8 pracuje na generatorze wewnętrznym 1MHz pomimo, że ma podłączony kwarc 8MHz. Zmień w programie deklarację szybkości taktowania na 1000000 i zobacz czy zadziała. Jeżeli tak to trzeba zmienić "fusy" dotyczące taktowania na 1111 (obecnie powinny być ustawione na 0001 = 1MHz - jest to nastawa fabryczna) i dopiero później zadeklarować 8MHz. Mam nadzieję, że nie zapomniałeś o zewnętrznym rezystorze podciągającym.
  • #5 2448938
    1ceman
    Poziom 12  
    Posty: 104
    Pomógł: 1
    Rzeczywiście kontroler pracował na wewnętrznym oscylatorze. Zmieniłem wpis w programie na crystal=1000000 i teraz dziala ok.
    Mam w ukladzie dolaczony zewnetrzny oscylator 8MHz, ale pare postów niżej chłopak próbował zmienić właśnie to ustawienie i zablokował mikrokontroler. Teraz troszke sie boje tego robic :)

    Czy stosując się do TEGO na pewno nie zablokuje mojej atmegi?
  • REKLAMA
  • Pomocny post
    #6 2449390
    psooya
    Poziom 38  
    Posty: 5341
    Pomógł: 376
    Ocena: 573
    Zablokował ale łatwo to naprawić trzeba zrobić generator na tranzystorze z krawcem albo z jakimś obwodem RC i podać ne wejście Xtal ten sygnał i isp już dział Nie zablokujesz jeśli bedziesz czytał uwąznie co tam pisze.

    Dodano po 2 [minuty]:

    Nie zablokujesz bedzie dobrze
  • REKLAMA
  • Pomocny post
    #7 2449458
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Zmianę taktowania najlepiej zrobić w Bascomie zgodnie z przytoczonym tutorialem. Na rozwijalnej liście znajdziemy różne ustawienia.Trzeba wybrać 1111. Samo wybranie opcji nic nie zmieni. Nową nastawę wprowadza się przyciskiem obok o oznaczeniu zgodnym ze zmienianą sekcją. Nieprawidłowy wybór może skończyć się jedynie kombinacjami z podawaniem taktowania z zewnątrz.
    Programator Bascoma jest najbezpieczniejszy ze znanych mi do zabawy z "fusami" bo trudno o pomyłkę..
    Najważniejsze to nie ruszać SPIEN i nie przypisywać do końcówki resetu funkcji normalnego portu (dla ATMEGI 8 nie zaprogramować resetu jako PC6). Zmiany tych parametrów unieruchomią uC tak, że najczęściej najlepszym sposobem jego "odzyskania" jest kupno nowego.
    Teraz śmiało do dzieła!
    P.S. Nie zapomnij zadeklarować nowego taktowania w programie, bo znowu termometr nie będzie działał!
  • REKLAMA
  • #8 2450264
    1ceman
    Poziom 12  
    Posty: 104
    Pomógł: 1
    Zmienilem tak jak w tutorialu, ktory podalem i przestalo widziec procesor :/
    Czyli rozumiem ze po wszytkim?
    Co źle zrobilem? Zmienilem tylko jedna opcje, nic poza tym.
  • Pomocny post
    #9 2450600
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Jeżeli fusy przełączono na 1111 to trzeba sprawdzić sprawność i podłączenie kwarcu (i zbadać najlepiej oscyloskopem lub sondą w. cz. przebieg na XTAL2). Nie należy zapominać o kondensatorach przy kwarcu (ok. 33pF) zgodnie z notą katalogową. Jeżeli dalej będzie nie tak należy do XTAL1 podłączyć dowolny generator zewnętrzny o częstotliwości kilku MHz i poziomie napięć zgodnych z TTL i ponowić próbę dogadania się z uC. W razie uszkodzenia kwarcu można pracować na wewnętrznym generatorze 8MHz - fusy na 0100.
    Procesor nie powinien mieć zablokowanej możliwości programowania w układzie.
    Wielokrotnie zmieniałem fusy w ATMEGACH8 (Bascom 1.11.7.4) i ATTINY2313 (Bascom 11.1.8.1) bez jakichkolwiek problemów.
    Mam jeszcze pytanie co do wersji Bascoma i opisu przycisku, którym zatwierdzono zmianę.
  • #10 2451044
    1ceman
    Poziom 12  
    Posty: 104
    Pomógł: 1
    Mam wersję Bascoma 1.11.8.1. Zmianę Fusebitow zatwierdziłem przyciskiem Write FS.

    Przy kwarcu mam kondensatory po 27pF. Mam tylko pytanie czy ma znaczenie którą stroną podłącza się kwarc, czy to nieistotne?
  • Pomocny post
    #11 2451077
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Kwarc tak jak opornik jest kierunkowo obojętny.
  • Pomocny post
    #12 2451349
    psooya
    Poziom 38  
    Posty: 5341
    Pomógł: 376
    Ocena: 573
    Witam powinno działać ja zmienilem te fusy na ATmega 8 3 dni temu pierwszy raz i procek chodzim Sprawdź połaczenia czy aby napewno sa dobre

    Dodano po 10 [minuty]:

    sprawdź czy nózki procka stykaja w podstawce Ewentulanie podmień kwarc
  • Pomocny post
    #13 2451638
    _eM_
    Poziom 12  
    Posty: 66
    Pomógł: 5
    Nie wiem czy rozumiem o co w tym wszystkim chodzi.
    Piszecie, że ma sprawdzić połączenie kwarcu. Wynika z tego, że w czasie programowania kwarc musi być podłączony do mikrokontrolera, tak?
    W innym wypadku co ma wspólnego połączenie nóżek kwarcu, jeśli błąd pojawia się po zmianie opcji w bascomie?

    Dodano po 1 [minuty]:

    I druga sprawa - jak można sprawdzić częstotliwość kwarcu? Znalazłem ostatnio w domu kwarc, ale nie wiem jaką ma częstotliwość. Jest na nim napisany symbol D800A8I, czy na podstawie tego oznaczenia można wywnioskować jaka jest częstotliwość?
  • Pomocny post
    #14 2451688
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Podczas programowamia szeregowego uC musi być taktowany. Fabrycznie ATMEGI8 są taktowane wewnętrznym generatorem 1MHz - chodzą same. Aby zmienić źródło taktowania trzeba zmienić fusebity. Po przełączeniu na kwarc zewnętrzny, który nie jest podłączony, uszkodzony itp. procesor nie ma impulsów zegarowych i uC nie odpowiada programatorowi. Połączenie jest niemożliwe. W rachubę może jeszcze wchodzić uszkodzenie wewnętrznej części generatora kwarcowego lub jego końcówek. Uklad taki można jeszcze próbować ruszyć impulsami z generatora zewnętrznego.

    Co do sprawdzenia kwarcu to należy podłączyć go do generatora (np. na jednym tranzystorze, bądż 2 bramkach logicznych) i sprawdzić czy na wyjściu jest zmienny przebieg (oscyloskopem, sondą w. cz., miernikiem częstotliwości).
    Częstotliwość można określić w takim układzie jedynie miernikiem częstotliwości o odpowiednim zakresie pomiarowym.
  • Pomocny post
    #15 2451901
    _eM_
    Poziom 12  
    Posty: 66
    Pomógł: 5
    M. S. napisał:
    Podczas programowamia szeregowego uC musi być taktowany. Fabrycznie ATMEGI8 są taktowane wewnętrznym generatorem 1MHz - chodzą same. Aby zmienić źródło taktowania trzeba zmienić fusebity. Po przełączeniu na kwarc zewnętrzny, który nie jest podłączony, uszkodzony itp. procesor nie ma impulsów zegarowych i uC nie odpowiada programatorowi. Połączenie jest niemożliwe. W rachubę może jeszcze wchodzić uszkodzenie wewnętrznej części generatora kwarcowego lub jego końcówek. Uklad taki można jeszcze próbować ruszyć impulsami z generatora zewnętrznego.

    Czyli jednym słowem - kwarc podczas programowania musi być podłączony, tak?

    M. S. napisał:
    Co do sprawdzenia kwarcu to należy podłączyć go do generatora (np. na jednym tranzystorze, bądż 2 bramkach logicznych) i sprawdzić czy na wyjściu jest zmienny przebieg (oscyloskopem, sondą w. cz., miernikiem częstotliwości).
    Częstotliwość można określić w takim układzie jedynie miernikiem częstotliwości o odpowiednim zakresie pomiarowym.

    Symbol, który jest podany na kwarcu kompletnie nie ma nic wspólnego z jego częstotliwością?
  • Pomocny post
    #16 2452450
    M. S.
    Poziom 34  
    Posty: 2107
    Pomógł: 259
    Ocena: 680
    Kwarc podczas programowania nie musi być podłączony o ile uC korzysta z WEWNĘTRZNEGO generatora ("fusy"dla ATMEGA 8 i podobnych = 0001 lub 0010 lub 0011 lub 0100), Jeżeli przełączono "fusy" na generator ZEWNETRZNY czyli kwarc lub generator podający z zewnątrz gotowy sygnał taktujący to podczas programowania generator/kwarc musi być podłączony.

    Na kwarcu zwykle jest napisana częstotliwość jego pracy, niestety nie zawsze. Jeżeli nie zna się parametrów kwarcu to można go wykorzystać do uC w układach nie wymagających odliczania czasu lub nie wykorzystujących przesyłania danych w oparciu o zależności czasowe. W takim przypadku jednak łatwiej jest uruchomić wewnętrzny generator i nic nie podłączać do uC (oczywiście posiadającego taki generator - oszczędzamy 2 końcówki).
    Częstotliwość kwarcu można określić też podłączając go do uC z programem zliczającym sekundy i porównując z zegarkiem (w dłuższym przedziale czasu np. 1 dzień). Na podstawie różnicy można wyliczyć różnicę częstotliwości kwarcu podłączonego do założeń przyjętych w programie - w ten sposób kalibrowałem odmierzanie czasu w mierniku częstotliwości.

Podsumowanie tematu

✨ Problem dotyczy podłączenia czujnika DS1820 do mikrokontrolera ATmega8 z zewnętrznym kwarcem 8 MHz. Po włączeniu zasilania na wyświetlaczu pojawia się komunikat "Brak układu". Przyczyną jest domyślne ustawienie fuse bitów na wewnętrzny oscylator RC 1 MHz, co powoduje brak synchronizacji z zewnętrznym kwarcem. Konieczne jest poprawne ustawienie fuse bitów na zewnętrzny kwarc (np. wartość 1111) oraz deklaracja częstotliwości taktowania w programie (np. $crystal=8000000). Podczas programowania mikrokontrolera z ustawionym zewnętrznym kwarcem, kwarc musi być podłączony i poprawnie skonfigurowany wraz z kondensatorami (około 27-33 pF). Nieprawidłowe ustawienia fuse bitów mogą zablokować mikrokontroler, ale istnieją metody odzyskania, np. podanie sygnału zegarowego z zewnętrznego generatora. Kwarc jest elementem kierunkowo obojętnym. Sprawdzenie działania kwarcu wymaga oscyloskopu lub miernika częstotliwości. W przypadku problemów z kwarcem można tymczasowo użyć wewnętrznego generatora 8 MHz (fuse bity 0100). Programowanie fuse bitów najlepiej wykonywać za pomocą Bascoma, zwracając uwagę na niezmienianie funkcji pinu resetu (SPIEN). Podsumowując, poprawne ustawienie fuse bitów i podłączenie kwarcu jest kluczowe dla prawidłowego działania ATmega8 z DS1820.
Wygenerowane przez model językowy.
REKLAMA