PIC ciągle się resetuje: Czy widzę skutki uboczne używania płyty pilśniowej?

11

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 μ F10 μF100 μ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 MHz470 μF

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.10 kΩ10 MΩ

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) wprowadź opis zdjęcia tutaj

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.

AndrejaKo
źródło
1
Hmm, zamierzałem zasugerować WDT i wygasić, ale wy je wyłączyłeś. Czy wiesz, że istnieje pewna errata z brakiem zasilania dla tego PIC? Nigdy nie próbowałem uruchomić PIC tak szybko na desce chlebowej. Używamy 18F4580 przez cały czas z oscylatorem 10MHz i HSPLL. Działają dobrze.
Rocketmagnet
2
Zapomnij o desce do krojenia (nigdy ich nie używam) i użyj odpowiedniej płytki drukowanej, to zaoszczędzi dużo czasu.
Leon Heller
3
@Leon Heller Może to zaoszczędzić dużo czasu, ale w tej chwili płytka drukowana jest droższa niż mój czas, zwłaszcza, że ​​nie mam nawet listy wszystkich głównych komponentów, których będę używać.
AndrejaKo
1
@AndrejKo To brzmi jak jeden z tych problemów, który sprawia, że ​​chcę zwinąć się w kłębek i płakać. Jesteś pewien, że Twój czas jest tak mało wart? Zrobiłbym po prostu płytkę drukowaną - zwykle jest to również świetna zabawa!
AngryEE
1
@AndrejaKo: Jeśli nie masz nic przeciwko czekaniu około tygodnia, odniosłem wielki sukces z tym zamówieniem grupy PCB: dorkbotpdx.org/wiki/pcb_order . Jeśli nie chcesz tworzyć własnego, to znaczy
Chris Laplante

Odpowiedzi:

12

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 Enablewłączony bit konfiguracji? Czy twój PGMPIN jest włączony PORTB? Jeśli tak, możesz rozważyć wyłączenie zarówno wejścia cyfrowego, jak Low Voltage Programming Enablei Port B A/D Enableresetu. Według mojego starego raportu to, co się działo, pozostawiliśmy w stanie PORTBswobodnym, gdy były wejściami analogowymi i uruchomiły PGMpin. 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ć.

Jon L.
źródło
Ciekawy! Jeszcze kilka minut temu zauważyłem, że połączenie programisty wpłynęło na problem i teraz ta odpowiedź. Wyłączyłem port BA / D i LVP i do tej pory działa dobrze. Może to być jakaś dziwna interakcja na pinie PGM.
AndrejaKo
@AndrejaKo, to brzmi bardzo znajomo z tego, czego doświadczyłem. Mam nadzieję, że pozostanie stabilny ... wybredny sprzęt może być bardzo frustrujący, gdy próbujesz coś zrobić: S
Jon L
1
Cóż, działa dobrze przez 21 minut i 30 sekund. Mam nadzieję, że tak pozostanie. Zostawię to na noc i sprawdzę, czy zresetuje się.
AndrejaKo
Wspaniały! Cieszę się, że to rozwiązało problem.
abdullah kahraman
1
Zrobiłem dzień, stary, spędziłem cały dzień próbując dowiedzieć się, dlaczego na ziemi mój PIC 16F887 resetuje się co kilka ms. Niskie napięcie w obwodzie progowym zostało ustawione, a pływający pin PGM wyłapywał hałas, powodując reset. +1 rep dla Ciebie
Gianluca Ghettini
7

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
2
Dobra odpowiedź. Wszystkie te długie, nieporządne druty sprawiły, że pomyślałem, że próba zrobienia tego na paskudnej desce nie była warta czasu i nieszczęścia.
Rocketmagnet
Ładna lista! Po przejściu przedstawię wyniki.
AndrejaKo
4

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 .

Olin Lathrop
źródło
Wygląda na to, że mamy tutaj dwie poprawne odpowiedzi :)
abdullah kahraman
2

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.

Prototypowa płyta PC na komputer PC

Rocketmagnet
źródło
2
Ach, kocham 3D Altium! Nawiasem mówiąc, 30 funtów może być wysokie dla studenta :) Lepiej jest użyć doskonałej płyty lub lepiej domowej roboty PCB.
abdullah kahraman
1
Powinienem zrobić domową płytkę drukowaną, zdecydowanie spróbuję z tym pomysłem.
AndrejaKo
2
@AndrejaKo - Cool. Daj nam tik :) - Lub nawet po prostu umieść dwa rzędy listew przypiętych, abyś mógł podłączyć go do deski do krojenia.
Rocketmagnet
1

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ń.

Tony Stewart Sunnyskyguy EE75
źródło
0

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). ”

Tony Stewart Sunnyskyguy EE75
źródło
Właściwie próbowałem użyć HSPLL i kryształu 10 MHz, ale w trybie HSPLL pokazuje takie same wyniki jak oscylator. Działa dobrze w trybie HS.
AndrejaKo
Ponadto, o ile widzę, PIC nie nagrzewa się podczas użytkowania.
AndrejaKo