커스터마이징 된 보드의 PIC18F45k80 핀 출력을 제어하는 펌웨어를 개발 중입니다. 최종 버전으로이 그림을로드하고 프로그래밍하기 전에 가장 간단한 사용자 코드로 내 프로그램/디버그 환경 (MPLABX IDE + Pickit3)을 테스트했습니다. 50ms주기의 일부 portD 출력을 토글합니다.출력 방향에 맞게 PIC18 포트 D를 올바르게 구성하는 방법은 무엇입니까?
3 핀이 제대로 작동하지만 (RD6, RD5, RD4) RD3 및 R2의 경우는 아닙니다. 그들은 신호가 없으며 결코 켜지지 않습니다. 핀은 실행 시간을 모두 0으로 유지합니다.
을 main.c 파일 : : 무슨 일 할 수
//C libraries
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <pic18f45k80.h>
#include "18f45k80_mainconfig.h"
#include <xc.h>
//Application dependent libraries
#include "gold_whyl_task.h"
/*outputs defines*/
#define CADENZA PORTDbits.RD2 //problem with this bit
#define CAPW PORTDbits.RD3 //problem with this bit
#define FREQFISSA PORTDbits.RD4
#define FISSAWAIL PORTDbits.RD5
#define COMCICLOSIR PORTDbits.RD6
/*inputs - debug*/
#define PGC PORTBbits.RB6
#define PGD PORTBbits.RB7
int main()
{
TRISDbits.TRISD0=1;//input ACTIVACIOn
TRISDbits.TRISD1=1;//input CLACSON
TRISBbits.TRISB6=1;//pdg
TRISBbits.TRISB7=1;//pdc
/*outputs*/
TRISDbits.TRISD2=0;//output CADENZA //problem with this
TRISDbits.TRISD3=0;//output CAPW //problem with this
TRISDbits.TRISD4=0;//output FREQFIJA
TRISDbits.TRISD5=0;//output FIJAWAIL
TRISDbits.TRISD6=0;//output COMCICLOSIR
while(1)
{
COMCICLOSIR=0;
FISSAWAIL=0;
CAPW=0;
CADENZA=0;
FREQFISSA=0;
__delay_ms(50);
COMCICLOSIR=1;
FISSAWAIL=1;
CAPW=1; //this assignment has no effect --> it stills 0
CADENZA=1;//this assignment has no effect--> it stills 0
FREQFISSA=1;
__delay_ms(50);
}
}
을 당신이 다음 코드에서 볼 수 있듯이 모든 핀은, 구성 같은 시간에 같은 방법으로 활성화? 정의, 포트 구성 등에 문제가 있습니까?
마이크로 컨트롤러 및 전자 제품에 대한 별도의 교환 사이트가 있습니다. http://electronics.stackexchange.com/ – arminb
무엇을 의미합니까? 나는 지침을 따랐고, 항상 같은 방식으로 입력과 출력을 구성하지만, 전체 포트를 정확히 같은 방식으로 구성 할 때 포트의 일부만 작동하고 나머지는 작동시키지 않았습니다. 데이터 시트가이 문제에 관해 어떤 정보를 제공합니까? –
그 핀은 어떨까요? 모든 회로가 동일합니까? 아마도 'PADCFG1' 레지스터로 풀업을 활성화해야합니다. – LPs