Je développe un firmware pour contrôler un brochage PIC18F45k80 sur une carte personnalisée. Avant de charger et de programmer cette image avec la version finale, je testais mon environnement de programme/débogage (MPLABX IDE + Pickit3) avec le code utilisateur le plus simple: basculer certaines sorties portD avec une période de 50 ms.Comment configurer correctement un port PIC18 D pour le sens de sortie?
3 broches de ceux-ci fonctionnent propperly (RD6, RD5, RD4) mais ce n'est pas le cas de RD3 et R2. Ils n'ont aucun signal, ils ne s'allument jamais. La broche reste avec 0 tout le temps d'exécution. Toutes les broches sont configurés et activés avec la même manière en même temps, comme vous pouvez le voir dans le code suivant:
fichier 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);
}
}
Que peut-on se passe? Y at-il un problème avec les définitions, la configuration du port, etc.?
Nous avons un site d'échange séparé pour les microcontrôleurs et l'électronique: http://electronics.stackexchange.com/ – arminb
que voulez-vous dire? J'ai suivi les instructions, je configure toujours les entrées et les sorties de la même manière, mais je n'ai jamais eu qu'une seule partie du port fonctionnant et ne fonctionnant pas le reste, même en configurant le port entier exactement de la même manière. Quel type d'information une fiche technique peut-elle me donner à propos de ce comportement? –
Qu'en est-il de ces broches, HW parlant? Tous les circuits sont-ils identiques? Peut-être que vous devez activer les pull-ups avec le registre 'PADCFG1'. – LPs