Kwarc 22.1184 i programator USBasp

Tutaj mozesz poruszać tematy ogólne powiązane z elektroniką, np. dyskusje na temat podzespołów, układów, zasad ich działania. Czyli można pisać o wszystkim czego nie da się przyporządkować do innych działów.
ODPOWIEDZ
Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

Kwarc 22.1184 i programator USBasp

Post autor: siekierzyński » 17 paź 2013, 19:05

Witam,

mam podłączony kwarc 22.1184MHz do AVR i moje pytanie, czy jeśli będę korzystał z tego zewnętrznego kwarcu, to programator będzie w stanie wykryć i zaprogramować ukontroler?

Pytam, bo miałem kiedyś sytuację, że miałem ten kwarc przy procku i programator nie wykrywał mi go. Tylko, że to było kupę lat temu i jeszcze nie miałem w tedy takiego doświadczenia. Może coś było podłączone dodatkowo do linii programujących i były zakłócenia.
Tak swoją drogą, dla pewności schemat wzbogacam o CD4053 (LINK), bo wykorzystuję wszystkie możliwe piny w procku.

Awatar użytkownika
joon
Użytkownik
Posty: 2076
Rejestracja: 30 cze 2007, 22:56
Lokalizacja: Kraków, Przemyśl, Warszawa
Kontakt:

Post autor: joon » 17 paź 2013, 19:12

A który to AVR może zgodnie z notą pracować z takim kwarcem?

Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

Post autor: siekierzyński » 17 paź 2013, 19:14

Teoretycznie żaden, praktycznie wiele ;-)

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 17 paź 2013, 20:29

Nie będzie problemu z programatorem. Od strony ISP jedyne ograniczenie to zegar uC musi być (o ile się nie mylę) 4x szybszy od zegara interfejsu programowania.

Większy problem możesz mieć z prockiem. Z tego co pamiętam, wbudowany oscylator RC taktuje pamięć EEPROM i dokumentacja nie zaleca podkręcać go, bo mogą być problemy z tą pamięcią.

Analogicznie FLASH masz taktowany z tego samego zegara co uC, więc możesz mieć problem z poprawnością programowania.

W praktyce nie miałem jeszcze sytuacji z takim przetaktowaniem uC, więc mogę tylko strzelać w ciemno, żebyś w razie problemów włączył fusami dzielnik zegara i po zaprogramowaniu wyłączył.

Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

Post autor: siekierzyński » 17 paź 2013, 20:34

A jak to jest z tym dzielnikiem przez 8 (atmega2560), czy jeśli go włącze w fusebitach a potem wyłączę pod czas startu programu, to czy po resecie procka wróci on do oryginalnego stanu? Coś mi się wydaje, że nie...
Ostatnio zmieniony 17 paź 2013, 21:51 przez siekierzyński, łącznie zmieniany 1 raz.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 17 paź 2013, 20:56

Dla M169 odpowiedni fus jest ładowany do rejestru dzielnika zegara po resecie i określa on czy uC ruszy z pełną mocą czy z dzielnikiem 1/8.
Gdy procesor już chodzi, to może dowolnie zmieniać swoją prędkość, ale reset przywraca domyślą prędkość.

Niestety automatyczne ustawienie prędkości odbywa się w momencie gdy reset się kończy i uC budzi się do życia.
Jeśli uC ustawi sobie inne taktowanie (u mnie trafiła się kombinacja kwarc 32k i dzielnik 128) to podczas resetu programator musi się dostosować do uC.

Jeśli programujesz pusty procesor (albo go wyczyścisz), nie musisz się przejmować tym jak to działa.

Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

Post autor: siekierzyński » 17 paź 2013, 21:08

Ertew, mógłbyś napisać swojego posta jeszcze raz, bo czytałem kilka razy i nic z tego nie rozumiem.

Co mi świta, ale nie wiem czy dobrze, że podczas resetu fusebit dzielnika przez 8 nie jest brany pod uwagę, czyli procek chodzi na pełny taktowaniu. Dopiero po zwolnieniu resetu i uruchomieniu programu bit dzielnika jest brany pod uwagę i może on być programowo zmieniany. Po resecie bit zielnika się resetuje.

Pisze łopatologicznie ;-)

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 17 paź 2013, 21:29

Przepraszam jeśli piszę nieczytelnie. Na śpiąco się źle myśli.


Jak wcześniej pisałeś M128 jest zgodny z M1281 ale M1280 ma piny interfejsu programowania umieszczone w innym miejscu, więc w AVRach nie ma jasnych reguł.
Sytuacja dotyczy procesora Mega169, dla Mega256 już może być inaczej. Swoją drogą, nie mogę wygoglować dokumentacji tego uC. Na pewno 256 a nie np. 2560?

Fusebit może być zmieniony tylko przez programator. uC sam go nie zmieni.

Po zwolnieniu resetu, dzielnik zegara (rejestr) jest ustawiany zgodnie z tym jak jest ustawiony fusebit. Po chwili startuje zegar i uC może wykonywać kod który zmieni wartość dzielnika.

W momencie aktywacji reset, wartość rejestru dzielnika nie jest zmieniana i w takich warunkach programator może zacząć komunikować się z uC.

Awatar użytkownika
siekierzyński
Użytkownik
Posty: 482
Rejestracja: 01 cze 2010, 23:12
Lokalizacja: Nareszcie Polska

Post autor: siekierzyński » 17 paź 2013, 21:51

Tu jest dokumentacja 2560 http://www.atmel.com/images/doc2549.pdf
Przepraszam za błąd w moim poście powinno być 2560 a nie 256 już poprawiam.

Czyli rozumiem, że dzielnik ze startem procka jest ustawiany, przepisywany z fusebitów, w trakcie programu dzielnik moge se dowolnie przestawiać, przy resecie nie jest zmieniany, dopiero po zwolnieniu resetu, program rusza od nowa i jest znowu przepisywany z fusebitów, a potem zależnie od programu.

EDIT:

jak ja mam ustawić te fusebity, na ten zewnętrzny kwarc? Tak jak w załączniku, czy może na same jedynki? [1111 11]?
Załączniki
fuse.png
fuse.png (6.6 KiB) Przejrzano 6141 razy

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 19 paź 2013, 15:23

Dokumentacja potwierdza, że same jedynki będą dobrym wyborem.

Jednakże doświadczenia z innymi procesorami podpowiadają mi, że lepiej nie ustawiać samych zer lub samych jedynek, bo zazwyczaj kończy się to blokadą procesora.

ODPOWIEDZ