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

Jak skonfigurować Atmega8 z zewnętrznym generatorem 1-20 Hz?

sanwa 02 Feb 2008 22:10 2103 15
ADVERTISEMENT
  • #1 4763863
    sanwa
    Level 14  
    Posts: 170
    Help: 7
    Rate: 10
    Witam

    Żeby coś sprawdzić potrzebuję baaaaardzo spokojny procesor Atmega8. Zamierzam zastosować zewnętrzny generator (na 555, masa wspólna z uC) o częstotliwościach rzędu 1Hz do 20 Hz.
    Z dokumentacji wydaje mi się, że :
    potrzebuję zaprogramować wszystkie cztery bity CKSEL (str.26, tabela 2),
    pin XTAL2 zostawić "w powietrzu" (str.32, rys13),
    pin XTAL1 podłączyć do źródła sygnału taktującego (str.32, rys13),
    bit CKOPT ustawić dowolnie.
    Teraz pytania :).
    Czy to powyżej jest prawdą?
    Z dokumentacji wynika, że "watchdog" ma swój wewnętrzny oscylator, o częstotliwości zależnej od napięcia zasilania, po "Resecie" na podstawie tego oscylatora jest odmierzany czas "oczekiwania na ustalenie się zasilania" (str.26,tab.3). Czy przy wyborze zewnętrznego zegara (1Hz) i SUT 10 (niezaprogramowany zaprogramowany) procesor zacznie wykonywać program po czasie 6*1s+49ms (str.32, tab.12)?
    Czy ktoś używał tak wolno taktowanej "Atmegi8" i ma jakieś doświadczenia, o których chciałby opowiedzieć?
    Z góry dzięki za przeczytanie długiego postu :) i oczywiście za odpowiedzi.

    Pozdrawiam
    Sanwa
  • ADVERTISEMENT
  • #2 4764281
    slawko_k
    Level 35  
    Posts: 2916
    Help: 253
    Rate: 233
    nie prościej dać zwykły szybszy kwarc wygenerować przerwanie co 50ms - 1s.
  • ADVERTISEMENT
  • #3 4764406
    kamyczek
    Level 38  
    Posts: 3994
    Help: 394
    Rate: 570
    Do czego zmierzasz robisz zegar do szachów ;)
    sprecyzuj do czego ci potrzeby taki wolny sygnał zegarowy ????
  • #4 4769783
    sanwa
    Level 14  
    Posts: 170
    Help: 7
    Rate: 10
    Witam

    Opcja z kwarcem nie wchodzi w grę. Pomysł z zegarem do szachów jest niezły, ale nie do końca to jest cel :). Chodzi o przetestowanie czegoś najpierw bardzo wolno, a potem użycie kwarcu.

    Ponawiam więc pytania z pierwszego "post'a" i z góry dziękuję za odpowiedzi :) .

    Pozdrawiam
    Sanwa
  • #5 4769803
    kamyczek
    Level 38  
    Posts: 3994
    Help: 394
    Rate: 570
    A wie kolega do czego służy jtag i debug wire tam są opcje pracy krokowej lub z pułapkami . Własnie tak można sobie to sprawdzić ;)
  • #6 4769880
    sanwa
    Level 14  
    Posts: 170
    Help: 7
    Rate: 10
    Witam
    Dzięki za błyskawiczną odpowiedź; nie na moje pytanie, ale doceniam chęć pomocy :). Szczerze mówiąc, to coś tam o nich słyszałem, ale nigdy ich nie używałem, ani nie zgłębiałem tematu.
    A tak na poważnie, to teraz dość mi się spieszy, i dlatego chciałem zastosować taką "łopatologię".
    No, ale jak już mi się tak publicznie wytyka tego JTAG'a, to może rzeczywiście czas bliżej zainteresować się tematem.
    To teraz dwa pytania.
    1. Ponawiam to z pierwszego postu.
    2. Teraz personalnie do kol. Kamyczka :). Mógłbyś polecić zestaw (sprzęt i programowanie "do JTAG i Debug Wire")? Taki przetestowany i działający (tylko nazwy; dalej sam poszukam). Oczywiście odpowiedzi od wszystkich innych forumowiczów będą mile widziane.

    Pozdrawiam
    Sanwa
  • ADVERTISEMENT
  • Helpful post
    #7 4769906
    kamyczek
    Level 38  
    Posts: 3994
    Help: 394
    Rate: 570
    Osobiście używam jtag ice MK2 to oryginalne narzędzie atmela dostępne np w seguro. Zalety 100% zgodności z AVR studio. Oraz znacznie tańsze narzędzie też o sporych możliwościach AVR DRAGON również oryginalne narzędzie atmela z niewielkimi ograniczeniami dostępne również w seguro ... Co do innych nie zabieram głosu ... Jedyna co musisz zmienić to ATmegę na 88 ...
  • #8 4769923
    sanwa
    Level 14  
    Posts: 170
    Help: 7
    Rate: 10
    Konkretna, szybka odpowiedź :).

    Dzięki i zapraszam pozostałych forumowiczów do pójścia za przykładem przedmówcy i uczestnictwa w dyskusji (pytanie z pierwszego postu nadal pozostaje bez odpowiedzi :) ).

    Pozdrawiam
    Sanwa
  • ADVERTISEMENT
  • Helpful post
    #9 4770543
    PiotrPitucha
    Level 34  
    Posts: 2658
    Help: 201
    Rate: 423
    Cześć
    Według moich wiadomości dobrze rozumujesz, oczywiście bity ustawione na 0 aby nie było że zaprogramowane to 1 :)
    co do generatora to powinno biegać, ale na jednej z zagranicznych stron widziałem generatorek do ożywiania AVRów z przestawionym fusami i tam był generator w którym na XTAL1 i XTAL2 podawano zegar w przeciwfazie.
    Piotr

    Ps. a ja mam rosyjski kwarc 4kHz, obudowa ze szkła i widać jak drga :)
    coprawda trudno się wzbudza ale jak się uderzy palcem w obudowę to zaczyna oscylować , muszę przebadać czy Atmega go zaakceptuje.
  • #10 4770891
    kamyczek
    Level 38  
    Posts: 3994
    Help: 394
    Rate: 570
    W notach katalogowych atmela jest napisane że zewnętrzny sygnał zegarowy doprowadza sie do wyprowadzenia oznaczonego jako XTAL 1 jednocześnie wyprowadzenie xtal 2 pozostawia sie wolne ...
  • Helpful post
    #11 4771835
    asembler
    Level 32  
    Posts: 2099
    Help: 123
    Rate: 11
    Nie ma w Atmedze8 JTAG więc nie ma co proponować.
    Jedyne co musisz zrobicstosując taką małą częstotliwość to dobrze ustawić FUSY iraczej wyłączyc watchdog`a.
    Wiem o co koledze biega z tym wonym zegarem, sam tak kiedys byłem zmuszony zrobić podczas testowania programu
    Inną drogą do osiągnięcia podobnego celu jest zajęcie procesora jakims długim przerwaniem wtedy czas na wykonanie programu głównego da podobne efekty jak przy wolnym kwarcu
  • Helpful post
    #12 4771940
    Dr_DEAD
    Level 28  
    Posts: 829
    Help: 126
    Rate: 3
    sanwa wrote:

    Z dokumentacji wydaje mi się, że :
    potrzebuję zaprogramować wszystkie cztery bity CKSEL (str.26, tabela 2),
    pin XTAL2 zostawić "w powietrzu" (str.32, rys13),
    pin XTAL1 podłączyć do źródła sygnału taktującego (str.32, rys13),
    bit CKOPT ustawić dowolnie.
    Teraz pytania :).
    Czy to powyżej jest prawdą?
    Z dokumentacji wynika, że "watchdog" ma swój wewnętrzny oscylator, o częstotliwości zależnej od napięcia zasilania, po "Resecie" na podstawie tego oscylatora jest odmierzany czas "oczekiwania na ustalenie się zasilania" (str.26,tab.3). Czy przy wyborze zewnętrznego zegara (1Hz) i SUT 10 (niezaprogramowany zaprogramowany) procesor zacznie wykonywać program po czasie 6*1s+49ms (str.32, tab.12)?

    Jeżeli poprawi Ci to humor i doda pewności siebie to powiem Ci ,że twój tok rozumowania jest poprawny i w pełni sie z nim zgadzam. Nie wiem tylko po co Ci te dodatkowe 49ms ja bym tam wolał BOD'a włączyć.

    Co się tyczy JTAG'a to ja sobie kupiłem JTAG TWICE. Jego połowa czyli jtag działa poprawnie, a trybu ISP jeszcze nie testowałem. Kupiłem sobie zestaw do samodzielnego montażu żeby było taniej :-).
  • #13 4775375
    sanwa
    Level 14  
    Posts: 170
    Help: 7
    Rate: 10
    Witam

    Wielkie dzięki. Jak zadziała, to się pochwalę :).

    Pozdrawiam
    Sanwa
  • #14 4775515
    Dr_DEAD
    Level 28  
    Posts: 829
    Help: 126
    Rate: 3
    Alternatywą jest pomysł asemblera czyli przerwania.
    Można by wykorzystać tak zwane "software'owe przerwania". Czyli wybierasz sobie dowolne nieużywane przerwanie, w jego obsłudze umeszczasz pętle opuźniąjącą powiedzmy na 1s i przed RETI ustawiasz flagę przerwania (tego samego w którego obsłudze jesteś). Procek wyjdzie z przerwania i zobaczy że znowu jest flaga ustawiona, więc wykona jedną instrukcje i wejdzie zpowrotem w przerwanie i tak w kółko. Program będzie sie wykonywał po jednej instrukcji a nie po jednym cyklu zegarowym tak jest jedynie różnica.
  • #15 4775652
    asembler
    Level 32  
    Posts: 2099
    Help: 123
    Rate: 11
    Nie musisz ustawiac flagi jezeli przerwanie bedzie trwało dłuzej niż sygnały zgłaszające. Czyli jezeli ustawisz licznik zeby zgłaszał przerwanie 100 razy na sek a petla opóźniająca bedzie trwała 1 sek.
    Ja mam dodatowo w przerwaniu obsługę dodatkowego wysiwetlacza LCD (1-wire) na którym wyświetlam wartości rejestrów i wybranego obszaru pamieci SREG i coś tam jeszcze dawno z tego nie korzystałem. ale chyba wróce do tego zmieniajac wyświetlacz 4x20 - na którym mało informacji można było zawrzec - na wyswietlacz graficzny no tutaj to juz wszystko się zmiesci łączni z listingiem program :-)
  • #16 4778928
    sanwa
    Level 14  
    Posts: 170
    Help: 7
    Rate: 10
    Witam

    Ta opcja z "ciągłym przerwaniem" :) rzeczywiście bardzo ciekawa.

    Jeszcze raz dziękuję za wszystkie podpowiedzi i odpowiedzi :) .

    Pozdrawiam
    Sanwa

Topic summary

✨ Dyskusja dotyczy konfiguracji mikrokontrolera Atmega8 z zewnętrznym generatorem sygnału zegarowego o bardzo niskiej częstotliwości (1-20 Hz) z wykorzystaniem układu 555. Potwierdzono, że sygnał zegarowy należy podać na pin XTAL1, a XTAL2 pozostawić niepodłączony, zgodnie z dokumentacją Atmegi8. Konieczne jest odpowiednie ustawienie bitów CKSEL w fusebitach, przy czym CKOPT można ustawić dowolnie. Poruszono kwestię działania watchdog i czasu startu procesora przy tak niskiej częstotliwości, wskazując na możliwe opóźnienie startu rzędu kilku sekund zgodnie z tabelami w dokumentacji. Zasugerowano alternatywne metody testowania wolnego działania procesora, takie jak użycie przerwań i opóźnień programowych zamiast fizycznego wolnego zegara. Wskazano również na możliwość wykorzystania debuggera sprzętowego (JTAG, Debug Wire) do pracy krokowej, choć Atmega8 nie posiada JTAG, co ogranicza tę opcję. Polecono narzędzia Atmel JTAG ICE MK2, AVR Dragon oraz JTAG TWICE do debugowania innych modeli AVR. Podkreślono konieczność wyłączenia watchdog i odpowiedniego ustawienia fusebitów przy niskiej częstotliwości zegara. Wspomniano o eksperymentach z bardzo niskimi częstotliwościami i alternatywnych metodach symulacji wolnego taktowania procesora.
Generated by the language model.
ADVERTISEMENT