1 | //Interrupt-Einstellungen
|
2 | INTCON = 0b11100000; //TMR0-Interrupt eingeschalten
|
3 | INTCON2 = 0b10000100; //TMR0-Interrupt High priority
|
4 | INTCON3 = 0b00000000; //External Interrupts = 0 => unwichtig
|
5 | PIR1 = 0; //Flag bits = 0
|
6 | PIR2 = 0; //Flag bits = 0
|
7 | PIR3 = 0; //Flag bits = 0
|
8 | PIR4 = 0; //Flag bits = 0
|
9 | PIR5 = 0; //Flag bits = 0
|
10 | PIR6 = 0; //Flag bits = 0
|
11 | PIE1 = 0b01000000; //ADC-Interrupt
|
12 | PIE2 = 0b00000010; //TMR3-Interrupt eingeschalten
|
13 | PIE3 = 0b00000110; //Interrupt für ECCP1 und ECCP2 eingeschalten
|
14 | PIE4 = 0b00000001; //Interrupt Enable bits = 0
|
15 | PIE5 = 0b00000011; //TMR5- & TMR4-Interrupt eingeschalten
|
16 | PIE6 = 0; //Interrupt Enable bits = 0
|
17 | IPR1 = 0; //Alle diese Interrupts haben Low priority
|
18 | IPR2 = 0b00000010; //TMR3-Interrupt High priority
|
19 | IPR3 = 0; //Alle diese Interrupts (ECCP1 und ECCP2) haben Low priority
|
20 | IPR4 = 0; //Alle diese Interrupts haben Low priority
|
21 | IPR5 = 0b00000010; //TMR5-Interrupt High priority
|
22 | IPR6 = 0; //Alle diese Interrupts haben Low priority
|
23 | RCONbits.IPEN = 1; //Priority levels sind aktiviert
|
24 |
|
25 |
|
26 | //ADC
|
27 | ANCON1bits.ANSEL9 = 1; //RF4 als analoger Eingang
|
28 | ANCON2bits.ANSEL18 = 1; //RG2 als analoger Eingang (ISENSE3)
|
29 | ANCON2bits.ANSEL20 = 1; //RH3 als analoger Eingang (ISENSE2)
|
30 | ANCON2bits.ANSEL23 = 1; //RH0 als analoger Eingang (ISENSE1)
|
31 | ADCON1 = 0b01110000; //Special trigger: CTMU; VREF+: 4,096V; VREF-: Masse; Neg. Chanel: Masse;
|
32 | ADCON2 = 0b10001101; //Right; ACQU: 2xTAD; FOSC/16
|
33 |
|
34 |
|
35 | //Counter-Einstellungen
|
36 | T0CON = 0b00101000; //TMR0: Stop, 16-Bit, T0CKI, kein Prescaler
|
37 | T3GCON = 0b00000000; //TMR3: Gate-Funktionen ausgeschalten
|
38 | T3CON = 0b10000110; //TMR3: Stop, 16-Bit-Mode, nicht synchronisieren, T3CKl, Prescaler 1:1, Signale von T3CKl
|
39 | T5GCON = 0b00000000; //TMR5: Gate-Funktionen ausgeschalten
|
40 | T5CON = 0b10000110; //TMR5: Stop, 16-Bit-Mode, nicht synchronisieren, T5CKl, Prescaler 1:1, Signale von T5CKl
|
41 |
|
42 |
|
43 | //Timer-Einstellungen
|
44 | T1CON = 0b00000011; //TMR1: Instruction Clock, Prescaler 1:1, 16Bit-Mode
|
45 | T1GCON = 0; //Gate Control ausgeschalten
|
46 | T2CON = 0b00000100; //TMR2 eingeschalten, Prescaler 1:1
|
47 | PR2 = 199; //TMR2 auf 20kHz eingestellt
|
48 |
|
49 | T4CON = 0b01111111; //TMR4: Postscaler: 1:16; Prescaler: 1:16, TMR4: ON
|
50 | PR4 = 156; //=> 0,25ns*16*16*156=9984ns => ~10ms gibt es einen Interrupt
|
51 |
|
52 |
|
53 | //Capture-Einstellungen
|
54 | CCPTMRS0 = 0; //Alle ECCP Timer 1
|
55 | CCP1CON = 0b00000100; //Capture eingestellt, steigende Flanke
|
56 |
|
57 |
|
58 | //PWM-Einstellungen
|
59 | CCPTMRS1 = 0b00000000; //CCP4-7: TMR1/TMR2
|
60 | CCPTMRS2 = 0b00010000; //CCP8-9: TMR1/TMR2; CCP10: TMR7/TMR2
|