Hello,
J'ai un soucis, je suis pas à mon premier programme en C sur les PIC18F, j'ai fais quelques bricolages... mais là je sèche...
J'utilise le mode compare/capture pour mesurer le temps d'un signal d'un récepteur IR, là tout va bien
J'utilise aussi le timer0 pour faire une tempo de 1us pour la réutiliser après pour faire moi même un signal pour envoyer sur une led IR...
Le problème c'est que quand j'envoie le bit de start (9ms à 1, 4.5ms à 0) la sortie s'inverse dès le début des 9ms, puis tout le signal est intégralement inversé!
J'ai essayé de changer de sortir passé de RC4 à RA0 (avec config en digital et non analog pour les E/S) mais idem...
Je pense que cela vient d'une de mes initialisations ou je ne sais quoi?!
Voici les initialisations du code...
Code :
- TRISA = 0x00; // En Sortie
- TRISB = 0b00001111; // En sortie-entrée
- TRISC = 0; // En sortie
- ADCON1 = 0b00001111;
- // configure le TIMER0
- T0CONbits.TMR0ON = 0; // Timer 0 = off
- T0CONbits.T08BIT = 0; // Timer 8bits = 1, 16bits = 0
- T0CONbits.T0CS = 0; // 0 = clock interne, 1 = pin T0CKI
- T0CONbits.T0SE = 0; // Flance montant ou descendant pour la T0CKI
- T0CONbits.PSA = 0; // 0 = prescalaire, 1 = bypass
- T0CONbits.T0PS0 = 0; // Préscalaire, pas utilisé si 1 en dessus
- T0CONbits.T0PS1 = 0;
- T0CONbits.T0PS2 = 0;
- // configure PORTC CCP1
- DDRCbits.RC2=1; // RC2/CCP1 en entree
- // configure le TIMER1
- T1CONbits.RD16=0; // TMR1 mode simple (pas de RW)
- T1CONbits.TMR1CS=0; // compte les impulsions sur internal clock
- T1CONbits.T1CKPS1=0; // prédiviseur =1 periode sortie = 64uS
- T1CONbits.T1CKPS0=1;
- T1CONbits.T1SYNC=1; // pas de synchronisation sur sleep/Reset
- T1CONbits.TMR1ON=1; // TMR1 Activé+
- // configure le mode capture sur le TIMER1 avec IT sur CCP1
- T3CONbits.T3CCP2=0; // mode comparaison entre TMR1 et CCPR1
- CCP1CON=0x05; // 0x04 capture mode sur fronts descendant CCP1CON=0x05; // capture mode sur fronts montant
- PIE1bits.CCP1IE=1; // active IT sur mode capture/comparaison CCP1
- RCONbits.IPEN=1; // Interruption prioritaires activées
- INTCONbits.GIE=1; // Toutes les IT démasquées autorisées
- TMR1H=0;
- TMR1L=0;
- PORTAbits.RA0 = 0; // Init de la sortie
|
La config du Capture Compare mode, je me suis inspiré d'un bout de code du net...
Merci d'avance de votre aide
edit :
Voici le screenshot de l'oscillo avec signal 1 en haut : trame envoyée, signal 2 en bas, trame reçue par le pic
Message édité par swissforever le 10-11-2012 à 11:09:58
---------------
Swisscore