Używam PIC18F4680 i mam problemy z uruchomieniem go z zewnętrznego źródła zegara 40 MHz lub kryształu 10 MHz w trybie HSPLL. Używanie kryształu 10 MHz w trybie HS wydaje się być w porządku, a kryształ 5 MHz w trybie HSPLL również działa dobrze.
Dzieje się tak, że PIC uruchamia się, działa przez kilka sekund, a następnie wyłącza się na chwilę i zaczyna od nowa. Całkowity okres cyklu wynosi około 5 sekund, z których PIC przestaje działać na początku drugiej sekundy.
Zauważyłem również, że czasami, gdy dodam wystarczająco duży rozładowany kondensator do szyny zasilania płyty chlebowej, PIC będzie działał dobrze. Ciekawe jest to, że dzieje się tak tylko wtedy, gdy dodam kondensator, gdy PIC już działa. Jeśli zasilę płytę za pomocą kondensatora lub umieszczę kondensator, który nie został całkowicie rozładowany, problem pozostaje.
Czytałem na niektórych stronach, że problemy podobne do moich mogą się zdarzyć z powodu zwiększonego zużycia energii przez PIC przy wyższej częstotliwości i wyższym najniższym napięciu roboczym. W takich przypadkach, jeśli występują pewne krótkie spadki napięcia na zasilaczu, istnieje większe prawdopodobieństwo, że osiągną najniższe napięcie robocze PIC na tej częstotliwości, dlatego dobrym pomysłem jest posiadanie dodatkowych kondensatorów na płycie głównej, aby rozwiązać ten problem. Ponieważ pod pełnym obciążeniem przy 40 MHz, cały obwód wokół zastosowania 64 mA, moja pierwsza myśl była umieścić jakiś kondensatory tantalowe nadzieję, że oni być wystarczająco duże i mają dość niski ESR, aby rozwiązać ten problem. Jeden nie pomógł, a drugi też nie pomógł. Więc dodałem 100 μ Faluminiowy kondensator i to też nie pomogło. Potem dodano aluminiowy kondensator bez skutku. Na koniec dodałem aluminiowy kondensator elektrolityczny 1 mF, a następnie po raz pierwszy obwód działał dobrze, dopóki nie został wyłączony i włączony. Powinienem również zauważyć, że do celów testowych używam Vcc 5,5 V, co jest najwyższym napięciem znamionowym dla tego mikrokontrolera. To powinno dać mi trochę miejsca do 4,2 V, czyli najniższego napięcia roboczego przy 40 MHz
Następnie, czytałem, że czasami wyjść pływających może powodować pewne problemy, więc kładę jakieś rezystory rozwijanym na wszystkich nieużywanych pinów i to nie pomogło. Potem przeczytałem, że czasami mogą występować problemy, jeśli wejścia oscylatora są pływające, więc próbowałem podłączyć je do GND za pomocą rezystorów 10 M Ω i to nie pomogło.
Z powodu długości drutu przechodzącego od wyjścia oscylatora do wejścia oscylatora na PIC, spodziewałem się problemów z nim, ale nie spodziewałem się problemów z kryształem 10 MHz, który jest bardzo blisko styków oscylatora na PIC. Także w przypadku kryształu spodziewałbym się problemów w trybie HS, jeśli problem stanowiłby zniekształcenie sygnału oscylatora z powodu płyty chlebowej, ale w trybie HS PIC działa dobrze.
Zwykle używam kondensatorów 33 pF do kryształów, ale próbowałem też z 15 pF i nie mogłem wykryć żadnej zmiany.
Powinienem również zauważyć, że ten PIC ma bezpieczny monitor zegara i przełączanie oscylatora wewnętrznego / zewnętrznego. Próbowałem włączyć oba z nich, mając nadzieję, że przynajmniej potwierdzą, że problem dotyczy oscylatora, ale nie pomagają w rozwiązaniu problemu. Nie ma różnicy, że są włączone lub wyłączone.
Wyłączyłem również dla celów testowych licznik czasu watchdoga, resetowanie wyszarzenia i resetowanie nadmiernego / niepełnego stosu. Myślę, że wyłączyłem wszystkie źródła resetu dla tego układu. Również program jest w nieskończonej pętli, więc to się nie kończy.
PCF8583 nie ma żadnych problemów i nadal działa poprawnie nawet po zresetowaniu PIC, ale z drugiej strony ma znacznie niższe napięcie minimalne.
Niestety nie mam oscyloskopu, ale przeszedłem testy z kartą dźwiękową (częstotliwość próbkowania 96 kHz) i zauważyłem, że gdy RTC jest włączony, na linii zasilania jest szum 25 Hz. Program, którego używam, zgłasza około 300 mV między szczytami, ale nie wiem, jak bardzo mu zaufać, i nie wiem, czy to wystarczy, aby spowodować jakiekolwiek problemy w PIC. Gdy wszystko jest wyłączone, hałas wynosi od 100 mV od szczytu do szczytu, więc powinno być dobrze.
Jeśli to pomaga, oto zdjęcie samej płyty: (kliknij prawym przyciskiem myszy-> wyświetl obraz, aby uzyskać pełny rozmiar)
Czy ktoś ma pojęcie, co się tutaj dzieje?
Na koniec mogłem po prostu uruchomić PIC przy 20 MHz, ale jeśli potrzebuję więcej mocy obliczeniowej, chciałbym móc go uruchomić przy 40 MHz.
AKTUALIZACJA
Umieściłem kolejny regulator na samej płycie chlebowej, a hałas wychwytywany przez kartę dźwiękową jest teraz znacznie niższy (około 50 mV między szczytami), ale nie wpłynęło to na główny problem.
źródło
Odpowiedzi:
To trochę stara rada i nie wiem, czy będzie ona odpowiednia dla twojej mikro, ale około 4 lat temu zrobiłem projekt z PIC18F, który napotkał dziwne fałszywe resetowania. Po przeczytaniu raportu i ponownym uruchomieniu mojej pamięci tutaj wydaje się, że to rozwiązało:
Czy masz
Low Voltage Programming Enable
włączony bit konfiguracji? Czy twójPGM
PIN jest włączonyPORTB
? Jeśli tak, możesz rozważyć wyłączenie zarówno wejścia cyfrowego, jakLow Voltage Programming Enable
iPort B A/D Enable
resetu. Według mojego starego raportu to, co się działo, pozostawiliśmy w staniePORTB
swobodnym, gdy były wejściami analogowymi i uruchomiłyPGM
pin. Patrząc wstecz, nie wiem, czy ta diagnoza była prawidłowa, ale zakończyliśmy ten projekt pomyślnie, więc warto spróbować.źródło
Przy takiej konfiguracji prawie niemożliwe będzie dokładne powiedzenie, co się dzieje. Możemy jednak powiedzieć, co jest nie tak. Wiele rzeczy jest nie tak, a przynajmniej nie tak dobrze, jak zimno. Każda z tych rzeczy może być prawdziwym źródłem problemu, ale może również wymagać kombinacji problemów, które po zsumowaniu są równe problemowi, który widzisz.
Jedynym prawdziwym sposobem na debugowanie jest naprawienie wszystkiego, co wiesz, że jest złe, niezależnie od tego, czy jest to pistolet do palenia, czy nie. W końcu problem zostanie rozwiązany w taki czy inny sposób.
Gdy MCU tego typu nie działa poprawnie, prawie zawsze musisz skupić się na podstawach: Zasilanie, Zegar i Reset. Wszystkie trzy są podejrzane, jeśli chodzi o deskę do krojenia!
Podejrzanym nr 1 dla mnie jest zegar 40 MHz. 40 MHz jest dość szybkie, aby biegać po drucie pływającym w powietrzu. Szybko jest też wsadzać go do płyty pilśniowej, gdzie „system dystrybucji sygnału” nie jest tak naprawdę zaprojektowany do dużych prędkości. Gdyby to była płytka drukowana, powiedziałbym ci, abyś upewnił się, że twoja impedancja śladowa jest spójna i aby prawidłowo zakończył sygnały. Niestety tak naprawdę nie można tego zrobić na desce. Najlepszą rzeczą, jaką mogę ci powiedzieć, jest to, aby przewody były jak najkrótsze, a następnie jeszcze krótsze! Użyj o-zasięgu na sygnale zegara, sondowanego bezpośrednio na pinie PIC, z przewodem GND sondy również bezpośrednio na najbliższym pinie GND na PIC. To dużo powie o twoim zegarze.
(Jeśli to możliwe, spróbuj pożyczyć zakres. Trudno będzie bez niego debugować.)
Podejrzany nr 2 to moc. Moc jest również ogromnym problemem w płytkach chlebowych, ponieważ indukcyjność i rezystancja drutu jest stosunkowo wysoka. Tutaj znowu trzymaj przewody krótkie. Zauważam również, że nie ma żadnych pułapów odsprzęgających na oscylatorze 40 MHz. W przypadku OSC wybrałbym równolegle 0,1 uF i coś większego (od 4,7 uF do 100 uF). Twój PIC może również używać czegoś większego równolegle z pułapami 0,1 uF. Zwykle większe czapki nie byłyby wymagane, ale nic nie jest normalne w przypadku płyty pilśniowej.
Podejrzany nr 3 został zresetowany. Nie podałeś nam żadnych informacji na temat sygnału resetowania i powiedziałbym, że jest to najniższy z tego, co podejrzewam, ale i tak powinieneś to sprawdzić. Umieść na nim lunetę i zobacz, co się dzieje. Możesz po prostu użyć woltomierza. Jeśli napięcie na szpilce resetującej jest zbliżone do poziomu progowego, musisz to naprawić.
A teraz przejdźmy do rzeczy, które próbowałeś:
Przeprowadziłeś wiele eksperymentów z nakładaniem czapek na linie energetyczne, z niewielkimi lub mylącymi wynikami. Jest to jeden z tych momentów, w których musisz po prostu wprowadzić tam jakieś ograniczenia i nie martw się, czy robią coś pozytywnego, czy nie. Być może twoja moc jest głośna, ale jest to tylko jedna z kilku przyczyn problemu. Dodaj większe pułapki równolegle do 0,1 uF na PIC. Dodaj ograniczenia do oscylatora 40 MHz. Upewnij się, że przewody są tak krótkie, jak to możliwe. Następnie przejdź do następnej rzeczy.
Dodatkowe ograniczenia mocy to jedna z tych rzeczy, które raczej nie powodują problemów. Dlatego możesz je po prostu założyć i nie przejmować się nimi zbytnio. Zwłaszcza z czapkami 10-100 uF.
Później, gdy wszystko będzie działać, możesz usunąć te nakrętki pojedynczo i sprawdzić, czy problem powróci. Jeśli nie zwróci, to nie były problemem. Ale na razie musisz usunąć to jako potencjalny problem, ale dodając ograniczenia.
Chociaż pływające piny mogą stanowić problem, rzadko stanowią wystarczająco duży problem, aby spowodować awarię MCU. Warto to naprawić, ponieważ powoduje to inne problemy, ale jest bardzo mało prawdopodobne, aby stanowiło to problem. Uwaga: prostym sposobem na powstrzymanie nieużywanego pinu od unoszenia się jest ustawienie go jako wyjścia! Wysoka lub niska, nie ma znaczenia. Ale jeśli PIC napędza te piny, nie mogą się unosić.
źródło
Nie wspomniałeś o pinie PGM (czasami nazywanym LVP). Musi to być związane z niskim poziomem lub wyłączone LVP w bajtach conifig.
Czy na pewno ten PIC może pobierać 40 MHz bezpośrednio? Niektóre mogą osiągnąć jedynie 40 MHz poprzez wewnętrzny PLL. Nie sprawdziłem arkusza danych, ale powinieneś. Nawet jeśli tak, nie spodziewałbym się, że 40 MHz na płycie powielającej zachowuje się dobrze. Myślę, że powinieneś być w stanie uruchomić PIC z kryształem 10 MHz i wewnętrznym 4x PLL, chociaż jeśli jesteś ostrożny z płytką ścienną i umieścisz obejścia we właściwych miejscach.
Tego rodzaju pytania pojawiają się regularnie. Zamiast powtarzać wszystkie typowe problemy, patrz /electronics//a/29620/4512 .
źródło
Muszę się zgodzić z Davidem. Jest tak wiele długich drutów, a 40MHz na płycie chlebowej jest dość optymistyczne. Nie mogę uwierzyć, że twój czas jest tak niewiele wart, że nie możesz sobie pozwolić na zrobienie małego prototypowego PCB . Te rzeczy kosztują tylko około 30 £ od PCB Train . Jestem pewien, że w pobliżu będzie ktoś, kto może dostarczyć podobne produkty.
Dlaczego tego nie zrobisz? Zaprojektuj płytkę drukowaną, która ma PIC, oscylator i regulator jako komponenty SMD, a następnie cały ładunek pasków płyty perf. W ten sposób możesz nadal wykonywać prototypy, ale upewnij się, że PIC jest szczęśliwy.
źródło
jeśli masz zewnętrzny generator zmiennej F, rozważ użycie go do przetestowania układu / układu pod kątem problemów. i znajdź zewnętrzny F, który powoduje awarię. i pamiętaj, że przedłużone kable uziemiające działają jak antena do przenikania zakłóceń.
źródło
sonda wygląda na to, że potrzebujesz sondy logicznej, dvm lub zakresu ... http://search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492
Umieść czapkę na chipie zegara V + / gnd i rozważ skrętkę dla 40 MHz, jeśli jest daleko. Pic xtal ma wejście i wyjście .. sprawdzić odwrócone wyjście Poziom DC = v / 2? .. czy Pic się nagrzewa? ha ..
Sugeruję tryb Xtal PLL 10 MHz @ 40 MHz, aby uniknąć problemów z układem.
„Tryb HSPLL wykorzystuje oscylator w trybie HS dla częstotliwości do 10 MHz. PLL następnie zwielokrotnia częstotliwość wyjściową oscylatora przez 4, tworząc wewnętrzną częstotliwość taktowania do 40 MHz. PLL jest dostępny tylko dla oscylatora kryształowego, gdy FOSC3: Bity konfiguracji FOSC0 są programowane dla trybu HSPLL (= 0110). ”
źródło