Bonjour tous le monde.
J'ai comme projet de faire une alarme de maison. pour cela j'utilise des capteurs un un pic 18f24k22.
Je suis entrain de faire des tests depuis 3 jours sur mon pic mais rien ne marche, hormis le reset ou l'alimentation.
Cependant j'essaye d'ordonner à une sortie du pic de faire un signal carré lorsqu'à une entrée nous lui envoyons 5V. Ceci à l'aide d'un boucle if.
Mais je n'y arrive pas. Je ne sais pas si l'erreur provient des initialisations, des déclarations des registres...
Voici mon début de code :
Code:#include <stdio.h> #include <stdlib.h> #include <p18F24k22.h> #include "delay.h" #include "delays.h" #define Capteur_Porte PORTAbits.RA5 //#pragma config = 0x #pragma config FOSC = XT // XT oscillator #pragma config PLLCFG = OFF // Oscillator used directly #pragma config FCMEN = OFF // Fail-Safe Clock Monitor disabled #pragma config IESO = OFF // Oscillator Switchover mode disabled #pragma config PWRTEN = ON // Power up timer disabled #pragma config BOREN = OFF // Brown-out reset disabled in hardware and software #pragma config WDTEN = OFF // Watch dog timer is sleep, otherwise enabled. SWDTEN has no effect #pragma config MCLRE = EXTMCLR // MCLR pin enabled, RE3 input pin disabled #pragma config STVREN = OFF // Stack full/underflow will not cause Reset #pragma config LVP = OFF // Single-Supply ICSP disabled #pragma config XINST = OFF // Instruction set extension and Indexed Addressing #pragma config DEBUG = ON // Enabled /****************************************************************************/ /* Wait for X Milliseconds */ /* Function : DelayMs */ /* Parameters */ /* Input : Delay in Ms between 0 and 65535 */ /* Output : Nothing */ /****************************************************************************/ void DelayMs(unsigned int cnt) { //1000 cycles for one millisecond @4MHz while(cnt--) { Delay1KTCYx(1); //1000 cycles } } /****************************************************************************/ /* Wait for X Seconds */ /* Function : DelayS */ /* Parameters */ /* Input : Delay in S between 0 and 255 */ /* Output : Nothing */ /****************************************************************************/ void DelayS(unsigned char cnt) { //1.000.000 cycles pour une seconde @4MHz while(cnt--) { Delay10KTCYx(100); //1,000,000 cycles } } void main(void) { TRISA = 0b11111111; //Initiallisation du TRISA comme etant que des sorties PORTA = 0; //Initialisation de PORTA à 0; TRISB = 0b11000000; //Initiallisation du TRISA comme etant que des entrées avec RB6 et RB7 en entrées PORTB = 0; //Initialisation de PORTA à 0; RCON = 0b11001111; T0CON = 0b11010000; // OSCCON = 0b01011111; ADCON1 = 0x0F; ANSELA = 0b00101111; ANSELB = 0b00111111; if(PORTAbits.RA5 == 1) { while(1) { PORTBbits.RB2 = 0; DelayS(1); PORTBbits.RB2 = 1; DelayS(1); } } }
sans la boucle if j'ai bien un signal carré a ma sortie RB2.
A mon entrée RA5 j'arrive à lui mettre soit 0V soit 5V.
Où est l'erreur?
Merci beaucoup d'avance à tous ceux qui prendront le temps de lire ce message.
-----