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 :
#include #include #include #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 @4MHzwhile(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 @4MHzwhile(cnt--){Delay10KTCYx(100);//1,000,000 cycles}}void main(void){TRISA = 0b11111111;//Initiallisation du TRISA comme etant que des sortiesPORTA = 0;//Initialisation de PORTA à 0;TRISB = 0b11000000;//Initiallisation du TRISA comme etant que des entrées avec RB6 et RB7 en entréesPORTB = 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.