c - How to configure correctly a PIC18 port D for output direction? -
i'm developing firmware control pic18f45k80 pinout on customized board. before loading , programming pic final version testing program/debug environment (mplabx ide + pickit3) simplest user code: toggle portd outputs 50 ms period.
3 pins of them works propperly (rd6, rd5, rd4) it's not case of rd3 , r2. have no signal, never turn on. pin stills 0 execution time. pins configured , activated same way @ same time, can see in next code:
main.c file:
//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 bit #define capw portdbits.rd3 //problem 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 trisdbits.trisd3=0;//output capw //problem 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 --> stills 0 cadenza=1;//this assignment has no effect--> stills 0 freqfissa=1; __delay_ms(50); } } what can happening? there wrong defines, port configuration, etc?
you should check datasheet
your mcu has a/d port and, unfortunately you, default uses rd2 , rd3.
you can see @ page 364, adcon1 reg enables pins analog.
at page 92 can see configuration @ adcon1 register @ startup: -111 1111
this means @ powerup/browout/wdt/reste... rd2 , rd3 set analog inputs.
you must disable pins a/d converter use pins i/o.
i don't have microchip sdk must
adcon1 &= 0x9f; to set bit 6 , bit 5 0 , enable rd2 , rd3 i/o


Comments
Post a Comment