Forum: Mikrocontroller und Digitale Elektronik PIC16F684 Comparator in CCS C


von Juergen K. (juergen_k)


Lesenswert?

Hallo,

ich möchte einen Comparator vom PIC16F684 nutzen. Beim überschreiten 
einer bestimmten Spannung soll ein Interrupt ausgelößt werden, aber es 
tut sich nichts.

Habe an C2-/RC1 (PIN9) einen Spannungsteiler und an C2+/RC0 (PIN10) die 
zu überwachende Spannung (im Moment auch Spannungsteiler).

Hier mein Code:
1
#include <16F684.h>
2
#pragma ID CHECKSUM        // Checksumme als ID
3
#pragma device adc=16
4
#pragma FUSES NOWDT             //No Watch Dog Timer
5
#pragma FUSES INTRC_IO          //Internal RC Osc, no CLKOUT
6
#pragma FUSES PUT               //Power Up Timer
7
#pragma FUSES NOMCLR            //Master Clear pin used for I/O
8
#pragma FUSES NOIESO            //Internal External Switch Over mode disabled
9
#pragma FUSES NOFCMEN           //Fail-safe clock monitor disabled
10
#pragma use delay(int=8000000)
11
#pragma ZERO_RAM
12
13
#pragma use FIXED_IO( A_outputs=PIN_A5,PIN_A2,PIN_A1,PIN_A0 )
14
#pragma use FIXED_IO( C_outputs=PIN_C5,PIN_C4,PIN_C3,PIN_C2 )
15
16
#define led1 PIN_A0
17
#define led2 PIN_A1
18
#define led3 PIN_A2
19
#define led4 PIN_C2
20
#define led5 PIN_C3
21
#define led6 PIN_C4
22
#define led7 PIN_C5
23
#define led8 PIN_A5
24
25
// Interrupt_SR #############################################
26
#int_COMP
27
void  COMP_isr(void) 
28
{
29
  output_high(led8);
30
  delay_ms(500);
31
  output_low(led8);
32
  delay_ms(500);
33
  output_high(led8);
34
  delay_ms(500);
35
  output_low(led8);
36
}
37
38
39
// Hauptprogramm ############################################
40
void main()
41
{
42
  setup_oscillator(OSC_8MHZ);
43
  setup_adc(ADC_OFF);
44
  setup_adc_ports(NO_ANALOGS);
45
  setup_ccp1(CCP_COMPARE_INT);
46
  setup_comparator(NC_NC_C1_C0); 
47
  enable_interrupts(INT_COMP);
48
  enable_interrupts(GLOBAL);
49
  
50
  output_high(led8);
51
  delay_ms(300);
52
  output_low(led8);
53
  delay_ms(300);
54
  output_high(led8);
55
  delay_ms(300);
56
  output_low(led8);
57
    
58
  while(TRUE)
59
  {
60
      delay_cycles(10);
61
  }
62
}

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.