[elektro] Válasz: PIC18F14K50 External INT0,INT1 szívás

Szucs 'Nemka' Laszlo nemka at nemka.hu
Sat Apr 20 17:53:10 CEST 2013


Töröld az érintett ANSEL biteket!

Nemka
(mobilról küldve)Pávai Péter <pavaipeter at gmail.com> ezt írta:Üdv Mindenkinek,

4 órája szívok egy tárgybeli PIC tök alap Interrupt engedélyezésével.
Valaki belefutott már?
Timer1 IT-je szépen beeseik ahogy kell neki.
A INT0 és INT1 az istenért sem akar menni. Én bénázok el valami?

forrás:
//Timer 1
//Timer1 Registers Prescaler= 8 - TMR1 Preset = 3110 - Freq = 20.02 Hz -
Period = 0.049941 seconds
T1CON.T1CKPS1 = 1;   // bits 5-4  Prescaler Rate Select bits
T1CON.T1CKPS0 = 0;   // bit 4
T1CON.T1OSCEN = 1;   // bit 3 Timer1 Oscillator Enable Control bit 1 = on
T1CON.T1SYNC = 1;    // bit 2 Timer1 External Clock Input Synchronization
Control bit...1 = Do not synchronize external clock input
T1CON.TMR1CS = 0;    // bit 1 Timer1 Clock Source Select bit...0 = Internal
clock (FOSC/4)
T1CON.TMR1ON = 1;    // bit 0 enables timer
TMR1H = 0;          // preset for timer1 MSB register
TMR1L = 1;          // preset for timer1 LSB register
// Interrupt Registers
  INTCON = 0;           // clear the interrpt control register
  INTCON.TMR0IE = 0;    // bit5 TMR0 Overflow Interrupt Enable bit...0 =
Disables the TMR0 interrupt
  PIR1.TMR1IF = 0;      // clear timer1 interupt flag TMR1IF
  PIE1.TMR1IE  =   1;   // enable Timer1 interrupts
  INTCON.TMR0IF = 0;    // bit2 clear timer 0 interrupt flag
  INTCON.INT0IE = 1;   // External INT0 enable
  INTCON3.INT1IE = 1;   // External INT1 enable
  INTCON2.INTEDG0 = 0;  // Él detektálás 1 felfutó él 0 lefutó él
  INTCON2.INTEDG1 = 0;  // Él detektálás 1 felfutó él 0 lefutó él
  INTCON3.INT1IF=0;     //IF bit clear
  INTCON.INT0IF=0;      //IF bit clear
  INTCON.GIE = 1;       // bit7 global interrupt enable
  INTCON.PEIE = 1;      // bit6 Peripheral Interrupt Enable bit...1 =
Enables


IT sevices
void interrupt(){
//Timer1 INT
if (PIR1.TMR1IF == 1) // timer 1 interrupt flag
  {
    // Timer1 Interrupt - Freq = 20.02 Hz - Period = 0.049941 seconds
    LED1= ~LED1;      // Toggle PORTB bit1 LED
    PIR1.TMR1IF = 0;           // interrupt must be cleared by software
    PIE1.TMR1IE  =   1;        // reenable the interrupt
    TMR1H = 0;             // preset for timer1 MSB register
    TMR1L = 1;             // preset for timer1 LSB register
  }
//INT1 INT
if (INTCON3.INT1IF == 1) // timer 1 interrupt flag
  {
   LED2= ~LED2;      // Toggle LED
   INTCON3.INT1IF=0;
   }

if (INTCON.INT0IF == 1) // timer 1 interrupt flag
  {
   LED3= ~LED3;      // Toggle LED
   INTCON.INT0IF=0;
   }

}

Port config:
   ADCON1=0x0f;
     TRISA=0b00000000;
     TRISB=0b11111111;
     TRISC=0b00000011;
     LATA=0;
     LATB=0;
     LATC=0;


Valaki lát benne hibát vagy tényleg ennyire béna vagyok?

Peppe

Köszi
-----------------------------------------
          elektro[-flame|-etc]


More information about the Elektro mailing list