Witam.
Mam w urządzeniu cztery Xmegi128A1U. Wybrałem takie z powodu dużej ilości dostępnych timerów. Moduł z xmegami stanowi generator "instrumentu" midi. Zadanie do wykonania jest bardzo proste: odebrać dane z midi i wrzucić odpowiednią wartość (odczytaną z tabeli) do odpowiedniego timera. Wszystko w sumie bardzo dobrze działa do puki układy pracują na wewnętrznym zegarze. Problem zaczyna się gdy chcę przełączyć na kwarc który wydaje mi się że powinien być mimo wszystko dokładniejszy od wewnętrznego - dokładność generowanej częstotliwości wyraźnie się poprawiła. W praktyce i tak muszę ograniczyć taktowanie xmeg do 16MHz gdyż zakres częstotliwości które chcę generować daje się przy takim taktowaniu i prescale dla timerów równym 8 uzyskać z bardzo małym błędem czego nie mogę zrobić przy zegarze 32MHz i w sumie niema potrzeby podnosić taktowania. Podobne urządzenie z powodzeniem działa od kilku lat na zwykłych megach8- skusiłem się na xmegi jak już pisałem ze względu na ilość timerów co umożliwia generowanie większej liczby "głosów" bez konieczności wkładania większej ilości uC. W czym problem? Jedna z xmeg nie zawsze chce ruszyć na kwarcu. W chwili obecnej do wszystkich czterech uc jest wgrany dokładnie ten sam hex z programem testowym. Efekt jest taki że jeden uC co któreś włączenie zasilania nie startuje ale wystarczy zbliżyć palec lub sondę oscyloskopu aby zaczął działać - co swoją drogą skutecznie uniemożliwia jakąkolwiek diagnostykę przyczyny. Wszystkie wyprowadzenia VCC i GND są poprawnie podłączone na pewno dolutowane i posiadają w niewielkiej odległości kondensator ceramiczny 100n - sprawdziłem to już 5 może więcej razy. Kwarc posiada kondensatory 18pF do masy - próbowałem je także zamienić na 22pF i usunąć całkowicie - bez zmian co jest dla mnie dość dziwne. Generator startuje(lub nie) bez kondensatorów tak samo jak z. W dodatku layout pcb wokół wszystkich czterech uc jest w zasadzie identyczny tak pod względem ilości zastosowanych elementów jak pod względem geometrycznym - zaprojektowany dla jednego uC i skopiowany dla pozostałych 3 wiec nie upatrywałbym tu problemu. Ostatecznością jest wymiana uC na inny egzemplarz ale wolałbym tego uniknąć ze względu na ryzyko uszkodzenia PCB - oprócz xmeg jest jeszcze układ cpld Xilinx XC95144XL, wszystko w obudowach TQFP100 a PCB dwustronne. Czy ktoś miał podobny przypadek z tą xmegą i ma pomysł co jeszcze można sprawdzić? Dołączam kod z moja konfiguracją zegara:
Mam w urządzeniu cztery Xmegi128A1U. Wybrałem takie z powodu dużej ilości dostępnych timerów. Moduł z xmegami stanowi generator "instrumentu" midi. Zadanie do wykonania jest bardzo proste: odebrać dane z midi i wrzucić odpowiednią wartość (odczytaną z tabeli) do odpowiedniego timera. Wszystko w sumie bardzo dobrze działa do puki układy pracują na wewnętrznym zegarze. Problem zaczyna się gdy chcę przełączyć na kwarc który wydaje mi się że powinien być mimo wszystko dokładniejszy od wewnętrznego - dokładność generowanej częstotliwości wyraźnie się poprawiła. W praktyce i tak muszę ograniczyć taktowanie xmeg do 16MHz gdyż zakres częstotliwości które chcę generować daje się przy takim taktowaniu i prescale dla timerów równym 8 uzyskać z bardzo małym błędem czego nie mogę zrobić przy zegarze 32MHz i w sumie niema potrzeby podnosić taktowania. Podobne urządzenie z powodzeniem działa od kilku lat na zwykłych megach8- skusiłem się na xmegi jak już pisałem ze względu na ilość timerów co umożliwia generowanie większej liczby "głosów" bez konieczności wkładania większej ilości uC. W czym problem? Jedna z xmeg nie zawsze chce ruszyć na kwarcu. W chwili obecnej do wszystkich czterech uc jest wgrany dokładnie ten sam hex z programem testowym. Efekt jest taki że jeden uC co któreś włączenie zasilania nie startuje ale wystarczy zbliżyć palec lub sondę oscyloskopu aby zaczął działać - co swoją drogą skutecznie uniemożliwia jakąkolwiek diagnostykę przyczyny. Wszystkie wyprowadzenia VCC i GND są poprawnie podłączone na pewno dolutowane i posiadają w niewielkiej odległości kondensator ceramiczny 100n - sprawdziłem to już 5 może więcej razy. Kwarc posiada kondensatory 18pF do masy - próbowałem je także zamienić na 22pF i usunąć całkowicie - bez zmian co jest dla mnie dość dziwne. Generator startuje(lub nie) bez kondensatorów tak samo jak z. W dodatku layout pcb wokół wszystkich czterech uc jest w zasadzie identyczny tak pod względem ilości zastosowanych elementów jak pod względem geometrycznym - zaprojektowany dla jednego uC i skopiowany dla pozostałych 3 wiec nie upatrywałbym tu problemu. Ostatecznością jest wymiana uC na inny egzemplarz ale wolałbym tego uniknąć ze względu na ryzyko uszkodzenia PCB - oprócz xmeg jest jeszcze układ cpld Xilinx XC95144XL, wszystko w obudowach TQFP100 a PCB dwustronne. Czy ktoś miał podobny przypadek z tą xmegą i ma pomysł co jeszcze można sprawdzić? Dołączam kod z moja konfiguracją zegara:
Kod: VB.net
