Forum: Mikrocontroller und Digitale Elektronik PIC24 Input Capture


von Savio (Gast)


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

von Bronco (Gast)


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.

von Savio (Gast)


Lesenswert?

danke für deine tipp.. ich probiere es nochmal ohne die LCD anzeige im 
ISR.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.