PIC가 계속 재설정합니다. 브레드 보드 사용으로 인한 부작용이 있습니까?


11

PIC18F4680을 사용하고 있으며 HSPLL 모드에서 40MHz 외부 클록 소스 또는 10MHz 크리스털로 실행하는 데 문제가 있습니다. HS 모드에서 10 MHz 크리스털을 사용하는 것은 괜찮은 것으로 보이고 HSPLL 모드에서 5 MHz 크리스털도 잘 작동합니다.

PIC가 시작되고 몇 초 동안 작동 한 다음 잠시 동안 종료되었다가 다시 시작됩니다. 사이클의 총 기간은 약 5 초이며, 그 중 PIC 작동은 2 초 안에 작동을 멈 춥니 다.

또한 때때로 브레드 보드의 전원 버스에 충분히 큰 방전 커패시터를 추가하면 PIC가 제대로 작동한다는 것을 알았습니다. 흥미로운 점은 PIC가 이미 실행 중일 때 커패시터를 추가하는 경우에만 발생한다는 것입니다. 커패시터로 브레드 보드에 전원을 공급하거나 완전히 방전되지 않은 커패시터를 배치하면 문제가 남아 있습니다.

나는 일부 사이트에서 더 높은 주파수와 더 낮은 작동 전압에서 PIC의 전력 소비 증가로 인해 광산과 유사한 문제가 발생할 수 있다고 읽었습니다. 이러한 경우 전원 공급 장치에 짧은 전압 강하가있는 경우 해당 주파수에서 PIC의 최저 작동 전압에 도달 할 가능성이 높기 때문에 브레드 보드에 추가 커패시터를 설치하여 해당 문제를 해결하는 것이 좋습니다. 40 MHz에서 전체 부하 때문에, 64mA 주위 전체 회로의 사용은, 내 첫 번째 생각은 약간 넣어했다 가 큰 충분하고 문제를 해결하기 위해 충분히 낮은 ESR을 줄 것으로 기대 탄탈 콘덴서. 하나는 도움이되지 않았고 두 번째도 도움이되지 않았습니다. 그래서 나는 추가 100 μ F10 μ에프100 μ에프알루미늄 커패시터도 도움이되지 않았습니다. 그런 다음 I는 추가 아무런 영향을 알루미늄 커패시터. 결국 1mF 알루미늄 전해 커패시터를 추가 한 후 처음으로 전원을 껐다가 켤 때까지 회로가 제대로 작동했습니다. 또한 테스트 목적으로이 마이크로 컨트롤러의 최고 정격 전압 인 VCC 5.5V를 사용하고 있습니다. 이것은 40MHz에서 가장 낮은 작동 전압 인 4.2V가 될 때까지 어느 정도 공간을 남겨 두어야합니다.470 μ에프

나는 약간 넣어 있도록 다음, 나는 가끔 부동 출력 고장을 일으킬 수 있습니다 읽었습니다 사용하지 않는 모든 핀에서 풀다운 저항을하고 도움을하거나 그렇지 않은. 내가 오실레이터 입력이 떠있는 경우 좀 사용하여 GND에 연결 시도 그래서 가끔 문제가있을 수 있음을 읽은 그 후 10 M Ω의 저항을하고는 도움이되지 않았다.10 케이Ω10 미디엄Ω

PIC에서 발진기 출력에서 ​​발진기 입력으로가는 와이어 길이로 인해 문제가 예상되었지만 PIC의 발진기 핀에 매우 가까운 10MHz 크리스털에는 문제가 없었습니다. 또한 크리스탈을 사용하면 브레드 보드로 인한 발진기 신호 왜곡이 문제인 경우 HS 모드에서도 문제가 발생하지만 HS 모드에서는 PIC가 올바르게 작동합니다.

나는 보통 크리스탈에 33pF 커패시터를 사용하지만 15pF로 시도했지만 변화를 감지하지 못했습니다.

또한이 PIC에는 페일 세이프 클록 모니터와 내부 / 외부 발진기 전환이 있습니다. 적어도 문제가 오실레이터에 있음을 확인하기를 희망하면서 두 가지를 모두 사용하려고 시도했지만 문제를 해결하지는 못했습니다. 그들이 온 또는 오프 차이가 없습니다.

또한 테스트 목적으로 감시 타이머, 브라운 아웃 재설정 및 스택 오버 / 언더 플로 재설정을 비활성화했습니다. 이 칩의 모든 리셋 소스를 끈 것으로 생각합니다. 또한 프로그램은 무한 루프 상태이므로 종료되지 않습니다.

PCF8583은 아무런 문제가 없으며 PIC가 자체적으로 재설정 되더라도 계속 올바르게 작동하지만 반면에 최소 전압은 훨씬 낮습니다.

불행히도 오실로스코프가 없지만 사운드 (96 kHz 샘플 레이트) 카드로 테스트를했는데 RTC가 켜져있을 때 전원 라인에 25Hz의 노이즈가 있음을 알았습니다. 내가 사용하고있는 프로그램은 약 300mV의 피크 대 피크를보고하지만, 그것을 얼마나 신뢰 해야하는지 모르겠으며 그것이 PIC에 문제를 일으킬만큼 충분한 지 모르겠습니다. 모든 것이 꺼지면 노이즈는 피크에서 피크까지 약 100mV이므로 괜찮습니다.

도움이되는 경우, 브레드 보드 자체의 그림입니다 : (오른쪽 클릭-> 전체 크기로 이미지보기) 여기에 이미지 설명을 입력하십시오

그래서 여기서 무슨 일이 일어나고 있는지 아는 사람이 있습니까?

결국 PIC를 20MHz로 실행할 수는 있지만 더 많은 처리 성능이 필요한 경우 40MHz로 실행할 수 있기를 원합니다.

최신 정보

브레드 보드 자체에 다른 레귤레이터를 배치했으며 사운드 카드에서 포착 된 노이즈가 훨씬 낮아졌지만 (약 50mV 피크-피크) 주요 문제에는 영향을 미치지 않았습니다.


1
흠, 나는 WDT와 브라운 아웃을 제안하려고했지만 당신은 그것들을 비활성화했습니다. 그 PIC에 대한 브라운 아웃에 정오표가 있다는 것을 알고 있습니까? 나는 브레드 보드에서 빨리 PIC를 실행하려고 시도하지 않았습니다. 우리는 10MHz 오실레이터와 HSPLL과 함께 18F4580을 항상 사용합니다. 그들은 잘 작동합니다.
Rocketmagnet

2
브레드 보드를 잊어 버리고 (나는 결코 사용하지 않음) 적절한 PCB를 사용하면 많은 시간을 절약 할 수 있습니다.
레온 헬러

3
@Leon Heller 많은 시간을 절약 할 수 있지만, 현재 사용하고있는 모든 주요 구성 요소 목록이 없기 때문에 PCB가 시간보다 더 비쌉니다.
AndrejaKo

1
@AndrejKo 이것은 공에 컬하고 울고 싶어하는 문제 중 하나처럼 들립니다. 당신은 당신의 시간이 그렇게 적은 가치가 있는지 확신합니까? 나는 단지 PCB를 만들 것입니다-그것은 보통 너무 재미 있습니다!
AngryEE

1
@AndrejaKo : 일주일 정도 기다리지 않아도이 그룹 PCB 주문 ( dorkbotpdx.org/wiki/pcb_order)에서 큰 성공을 거두었 습니다 . 직접 만들고 싶지 않다면
Chris Laplante

답변:


12

이것은 꽤 오래된 조언이며, 마이크로와 관련이 있는지는 모르겠지만 약 4 년 전에 이상한 스퓨리어스 리셋이 발생한 PIC18F 프로젝트를 수행했습니다. 보고서를 읽고 내 기억을 재 조리 한 후 여기에서 해결 된 것 같습니다.

당신은 가지고 있습니까 Low Voltage Programming Enable구성 비트가 활성화? 귀하가 PGM핀에 PORTB? 그렇다면 재설정시 Low Voltage Programming EnablePort B A/D Enable디지털 입력을 모두 비활성화 하는 것이 좋습니다. 이전 보고서에 따르면, PORTB아날로그 입력 인 동안 플로팅 상태로두고 PGM핀을 트리거하는 것이 발생했습니다 . 되돌아 보면이 진단이 올바른지 모르겠지만, 우리는 그 프로젝트를 성공적으로 마쳤습니다.


흥미 롭습니다! 몇 분 전에 프로그래머를 연결하면 문제에 영향을 미쳤으며 이제는이 답변에 영향을 미쳤습니다. 포트 BA / D 및 LVP를 비활성화했으며 지금까지 제대로 작동합니다. PGM 핀에서 이상한 상호 작용이 될 수 있습니다.
AndrejaKo

@AndrejaKo, 그것은 내가 경험했던 것과 매우 친숙하게 들립니다. 나는 그것이 안정적으로 유지되기를 바랍니다 ... 무언가를하려고 할 때 까다로운 하드웨어가 매우 실망 스러울 수 있습니다 : S
Jon L

1
음, 21 분 30 초 동안 제대로 작동했습니다. 나는 그것이 그렇게 유지되기를 바랍니다. 밤새도록두고 다시 설정하는지 확인하겠습니다.
AndrejaKo

큰! 문제가 해결되어 다행입니다.
abdullah kahraman

1
하루 종일 하루를 보내면서, 하루 종일 PIC 16F887이 몇 msec마다 리셋되는 이유를 알아 내기 위해 하루를 보냈습니다. 회로 프로그의 저전압이 설정되었고 플로팅 PGM 핀이 리셋을 트리거하는 노이즈를 피킹했습니다. +1 rep
Gianluca Ghettini

7

이와 같은 설정을 사용하면 무엇이 잘못되었는지 정확하게 말하기가 거의 불가능합니다. 그러나 우리가 말할 수있는 것은 잘못된 것입니다. 많은 문제가 있거나 적어도 춥지 않은 것은 아닙니다. 이러한 것들 중 하나가 문제의 실제 원인 일 수 있지만, 합쳐질 때보고있는 문제와 같은 문제의 조합이 필요할 수도 있습니다.

이것을 디버깅하는 유일한 방법은 흡연 총인지 아닌지에 관계없이 잘못된 것을 수정하는 것입니다. 결국 문제는 어떤 방식 으로든 해결 될 것입니다.

이와 같은 MCU가 올바르게 실행되지 않으면 거의 항상 기본 사항 인 전원, 클록 및 재설정에 중점을 두어야합니다. 브레드 보드를 사용하면 세 가지 모두 의심됩니다!

저에게있어 1 번 용의자는 40MHz 클럭입니다. 40MHz는 공중에 떠 다니는 전선을 통과하는 데 매우 빠릅니다. "신호 분배 시스템"이 실제로 고속 용으로 설계되지 않은 브레드 보드에 채워 넣는 것도 빠릅니다. 이것이 PCB 인 경우 트레이스 임피던스가 일정하고 신호를 올바르게 종료하도록 지시합니다. 불행히도 브레드 보드에서는 그렇게 할 수 없습니다. 내가 말할 수있는 가장 좋은 방법은 전선을 최대한 짧게 유지 한 다음 더 짧게 만드는 것입니다! PIC 핀에서 직접 프로브되는 클록 신호에 O- 스코프를 사용하고 프로브의 GND 리드는 PIC에서 가장 가까운 GND 핀에서도 직접 사용하십시오. 시계에 대해 많은 것을 알려줄 것입니다.

(가능한 경우 o-scope를 빌려보십시오. 하나 없이는 디버깅하기가 어렵습니다.)

# 2 용의자는 권력입니다. 와이어의 인덕턴스와 저항이 상대적으로 높기 때문에 브레드 보드의 경우 전력도 큰 문제입니다. 여기서 다시 전선을 짧게 유지하십시오. 또한 40MHz 오실레이터에는 디커플링 캡이 없습니다. OSC의 경우 0.1 uF와 더 큰 (4.7 uF ~ 100 uF)를 병렬로 사용합니다. PIC는 0.1 uF 캡과 함께 더 큰 것을 사용할 수도 있습니다. 일반적으로 더 큰 캡은 필요하지 않지만 브레드 보드에는 정상적인 것이 없습니다.

용의자 # 3이 재설정됩니다. 리셋 신호에 대한 정보를 제공하지 않았으며, 이것이 내가 의심하는 것 중 가장 낮다고 말하고 싶지만 어쨌든 확인해야합니다. O- 스코프를 착용하고 무슨 일이 일어나고 있는지 확인하십시오. 전압계를 간단히 사용할 수 있습니다. 리셋 핀의 전압이 임계 값 레벨에 근접한 경우이를 수정해야합니다.

이제 시도한 사항을 살펴 보겠습니다.

전력선에 캡을 씌우면 서 많은 실험을 해보았지만 혼란 스럽거나 혼란스러운 결과는 거의 없었습니다. 이것은 당신이 거기에 약간의 모자를 넣어야하고 그들이 긍정적 인 일을하고 있는지 아닌지 걱정하지 않을 때 중 하나입니다. 당신의 힘은 시끄러울 수 있지만 문제를 일으키는 몇 가지 것 중 하나 일뿐입니다. PIC에서 0.1 uF 캡과 병렬로 더 큰 캡을 추가하십시오. 40MHz 오실레이터에 캡을 추가하십시오. 리드가 가능한 짧아야합니다. 다음으로 넘어가십시오.

여분의 전원 차단은 문제를 일으키지 않을 것 중 하나입니다. 그렇기 때문에 일부를 착용하고 너무 걱정하지 않아도됩니다. 특히 10-100 uF 캡을 사용합니다.

나중에 모든 것이 작동하면 이러한 캡을 한 번에 하나씩 제거하고 문제가 다시 발생하는지 확인할 수 있습니다. 그것이 반환되지 않으면 뚜껑이 문제가되지 않았습니다. 그러나 현재로서는 잠재적 인 문제로 이것을 제거하고 뚜껑을 추가해야합니다.

플로팅 핀은 문제가 될 수 있지만 MCU가 충돌 할 정도로 큰 문제는 아닙니다. 다른 문제가 발생하기 때문에 해결할 가치가 있지만 여기서는 문제가되지 않습니다. 참고 : 사용하지 않는 핀이 플로팅되는 것을 막는 간단한 방법은 출력으로 설정하는 것입니다! 높든 낮든 상관 없습니다. 그러나 PIC가 이러한 핀을 구동하는 경우 플로팅 할 수 없습니다.


2
좋은 대답입니다. 그 길고 어수선한 전선들만으로도 불쾌한 브레드 보드에서이 작업을하는 것은 시간과 불행의 가치가 없다고 생각하게 만들었습니다.
Rocketmagnet

좋은 목록! 결과를보고 할 것입니다.
AndrejaKo

4

PGM (때로는 LVP라고도 함) 핀에 대해서는 언급하지 않았습니다. conifig 바이트에서 낮게 묶거나 LVP를 비활성화해야합니다.

이 PIC가 40MHz를 직접 사용할 수 있습니까? 일부는 내부 PLL을 통해서만 40MHz에 도달 할 수 있습니다. 데이터 시트를 확인하지 않았지만 확인해야합니다. 그렇더라도 브레드 보드에서 40MHz가 제대로 작동하지 않을 것입니다. 브레드 보드에주의를 기울이고 올바른 위치에 우회 캡을 넣으면 10MHz 크리스탈과 내부 4x PLL로 PIC를 실행할 수 있다고 생각합니다.

이런 종류의 질문은 정기적으로 발생합니다. 모든 일반적인 문제를 반복하는 대신 /electronics//a/29620/4512를 참조 하십시오 .


우리는 여기에 두 개의 정답을 가지고있는 것처럼 :) 보인다
압둘라 kahraman에게

2

나는 David에게 동의해야합니다. 긴 전선이 너무 많으며 브레드 보드의 40MHz는 매우 낙관적입니다. 나는 당신의 시간이 너무 작아서 프로토 타입 PCB 를 만들 여유가 없다고 믿을 수 없다 . 이것들은 PCB Train 에서 약 30 파운드에 불과 합니다. 당신 근처에 비슷한 것을 공급할 수있는 누군가가있을 것입니다.

왜 이러지? PIC, 발진기 및 레귤레이터를 SMD 구성 요소로 사용하고 전체 부하 보드 스트립을 갖는 PCB를 설계하십시오. 이렇게하면 여전히 프로토 타입을 만들 수 있지만 PIC가 행복해야합니다.

PC 프로토 타입 성능 보드


2
아, 나는 Altium의 3D를 좋아한다! 그건 그렇고, 학생에게는 30 파운드가 높을 수 있습니다 :) 성능 보드 또는 집에서 만든 PCB를 사용하는 것이 좋습니다.
abdullah kahraman

1
집에서 만든 PCB를 만들려면 분명히이 아이디어로 시도 할 것입니다.
AndrejaKo

2
@AndrejaKo-멋지다. 그때 우리에게 틱을주십시오 :)-또는 심지어 두 줄의 핀 스트립을 넣으면 브레드 보드에 연결할 수 있습니다.
Rocketmagnet

1

외부 변수 F 생성기가있는 경우이를 사용하여 문제에 대한 레이아웃 / 칩을 테스트하십시오. 고장을 유발하는 외부 F를 찾고 연장 된 접지 케이블이 잡음 크로스 토크를위한 안테나 역할을합니다.


0

프로브 는 로직 프로브, dvm 또는 스코프가 필요합니다 ... http : //search.digikey.com/us/en/products/DP%2052/BKDP52-ND/227492

클럭 칩 V + / gnd에 캡을 놓고 멀리 떨어져 있으면 40MHZ의 꼬임 쌍을 고려하십시오. Pic xtal에 입력 및 출력이 있습니다. 반전 된 출력을 점검하십시오. DC 레벨 = v / 2? .. Pic이 따뜻해 지나요? 하아..

레이아웃 문제를 피하기 위해 40MHz에서 10MHz Xtal PLL 모드를 제안합니다.

"HSPLL 모드는 최대 10MHz의 주파수에 HS 모드 오실레이터를 사용합니다. 그런 다음 PLL은 오실레이터 출력 주파수에 4를 곱하여 최대 40MHz의 내부 클록 주파수를 생성합니다. PLL은 FOSC3 : FOSC0 구성 비트는 HSPLL 모드 (= 0110)로 프로그래밍되었습니다. "


실제로 HSPLL과 10MHz 크리스털을 사용해 보았지만 HSPLL 모드에서는 오실레이터와 동일한 결과를 보여줍니다. HS 모드에서는 제대로 작동합니다.
AndrejaKo

또한 내가 볼 수있는 한 PIC는 사용 중에 따뜻해지지 않습니다.
AndrejaKo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.