PIC24 Input Capture

Gast #2774331
Lesenswert?

Hi,
Ich benutze die RD9 von PIC24F128GA010 als meine Input Capture 2. Ich 
habe die configuriert wie auf daten blatt steht..

static inline void CONFIG_RD9_AS_DIG_INPUT() {
  _TRISD9 = 1;
  // Enable pull up
  // delay to settle

}


#define CONFIG_RINGI()  CONFIG_RD9_AS_DIG_INPUT()
#define RINGI  _LATD9    //_LATD9 is port register for RD9

typedef enum  {
  STATE_WAIT_FOR_FALL_EDGE = 0,
  STATE_WAIT_FOR_RISE_EDGE,
} ICSTATE;

ICSTATE e_isrICState = STATE_WAIT_FOR_FALL_EDGE;

volatile uint16_t u16_oflowCount = 0;
volatile uint8_t u8_captureFlag = 0;
volatile uint16_t u16_lastCapture;
volatile uint16_t u16_thisCapture;
volatile uint32_t u32_pulseWidth;


void configInputCapture2(void)
{
  CONFIG_RINGI();
  IC2CON = IC_TIMER3_SRC |   //Timer 3 source
           IC_INT_1CAPTURE |   //Interrupt every capture
           IC_IDLE_CON     |   // IC operate in sleep mode
           IC_EVERY_EDGE;      //Capture every edge

  _IC2IF = 0;
  _IC2IP = 2;   //higher than Timer3 so that Timer3 does not interrupt 
IC2
  _IC2IE = 1;   //enable
}


//void _ISRFAST _IC2Interrupt()
void __attribute__((_interrupt_, auto_psv)) _IC2Interrupt(void)
{

  _IC2IF = 0;
  u16_thisCapture = IC2BUF;  //always read the buffer to prevent 
overflow
  clrLCD();
  putstringLCD("SMS RXed");
  main_mode = MODE_SMS;
}

Trözdem ländet er nicht wenn ich die pin nider ist. Kann jemand etwas 
merken bei diese konfiguration vielleicht ?

VG
Savio
Gast #2774551
Lesenswert?

Kommt denn der Interrupt überhaupt mal?

Ich denke, Deine InterruptServiceRoutine (ISR) benötigt vielzuviel 
Laufzeit. Daher können weitere Ereignisse verloren gehen.

Savio schrieb:
1
void __attribute__((_interrupt_, auto_psv)) _IC2Interrupt(void)
2
{
3
  _IC2IF = 0;
4
  u16_thisCapture = IC2BUF;  //always read the buffer to prevent 
5
  clrLCD();
6
  putstringLCD("SMS RXed");
7
  main_mode = MODE_SMS;
8
}

Die Aufrufe
1
  clrLCD();
2
  putstringLCD("SMS RXed");
sollten nicht direkt aus der ISR erfolgen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren