Moin,
danke für die Idee mit
Profiprog schrieb:
> APFCON0 = 0b00001000;
das hat mich leider nicht weiter gebracht, hab den Teil in dem Setup
auch hinter die I/O-Port Initialisierung gesetzt, der Erfolg blieb
allerdings aus.
Man darf sich nicht selbst trauen und
BeastyK schrieb:
> //----- CCP2 Control
> Register----------------------------------------------
> CCP2CON = 0b11001100;
macht mir keine Half-Bridge, wie ich wollte, sondern ne Full Bridge,
also schnell korrigieren:
1 | //----- CCP2 Control Register ----------------------------------------------
|
2 | CCP2CON = 0b10001101; // 10 = Half-Bridge output, XX - DCxB????,
|
3 | //1101 = PWM mode: PxA, PxC active-high; PxB, PxD active-low
|
Mit DCxB was die beiden letzten Bits des 10bit PWM Signals sein soll
konnte ich nicht wirklich etwas anfangen und hab beide auf 0 gesetzt.
Also: RA7 (P2A) blinkt nun freudig vor sich hin, was darauf schließen
läßt das das Mapping von RB6 auf RA7 funktioniert hat und die
Half-Bridge auch eine solche ist.
RA6 (P2B) tut es aber nicht und RB7 blinkt obwohl es nicht mehr sollte.
Ich hab auch festgestellt das RB3 an geht und ich ihn extra mit
TRISBbits.TRISB3 = 1 wieder ruhigstellen muß.
Ich schick nochmal den setup Teil rüber:
1 | void setup(void){
|
2 |
|
3 | // WDTCONbits.WDTPS = 0b10000;
|
4 | //----- I/O Port -----------------------------------------------------------
|
5 | ANSELA = 0b00000000;//All Digital I/O without RA0 and RA1
|
6 | ANSELB = 0b00000000;//All Digital I/O
|
7 | TRISA = 0b00100011;//All Output without RA0 and RA1 (RA5 is Input Only)
|
8 | TRISB = 0b00000110;//All Output without RB1 and RB2
|
9 | PORTA = 0b00000000;
|
10 | PORTB = 0b00000000;
|
11 | //----- Oscillator Control Register ----------------------------------------
|
12 | TRISBbits.TRISB6 = 1;
|
13 | TRISAbits.TRISA6 = 1;
|
14 | TRISAbits.TRISA7 = 1;
|
15 | //----- Alternate Pin Function Control Register: CCP2/P2A & P1C from RB6 -> RA7 --
|
16 | APFCON0 = 0b00001010;
|
17 | //-------------------------------------------------------------------------------
|
18 | OSCCON = 0b01110000; // 4xPLL in config, 1110=8 MHz mit PLL -> 32MHz
|
19 | // The SCS bits must be set to ‘00’ to use the 4xPLL
|
20 | // with the internal oscillator.
|
21 | //----- CCP2 Control Register ----------------------------------------------
|
22 | CCP2CON = 0b10001101; // 10 = Half-Bridge output, XX - DCxB????,
|
23 | //1101 = PWM mode: PxA, PxC active-high; PxB, PxD active-low
|
24 | //----- CCPTMRS: PWM TIMER SELECTION CONTROL REGISTER ----------------------
|
25 | CCPTMRSbits.C2TSEL = 0b00; // 00 = CCP2 is based off Timer 2 in PWM Mode
|
26 | TRISBbits.TRISB6 = 0;
|
27 | TRISAbits.TRISA6 = 0;
|
28 | TRISAbits.TRISA7 = 0;
|
29 | TRISBbits.TRISB3 = 1;
|
30 | //----- Timer2 Timer Control Register --------------------------------------
|
31 | T2CON = 0b00000010; // 0000 = 1:1 Postscaler, TImerOn = 0, 10 = Prescaler is 16
|
32 | //----- Interrupt Control Register -----------------------------------------
|
33 | PIE1bits.TMR2IE = 1;
|
34 | INTCONbits.PEIE = 1;
|
35 | INTCONbits.GIE = 1;
|
36 | TMR2 = 0;
|
37 | PR2 = 255;
|
38 | }
|
Für mich steht noch die Frage warum RB7 (P2B) als PWM noch läuft und
wieso RB3 einfach an ist, hat doch kein LAT von mir bekommen?
MfG
BeastyK