Hallo zusammen,
ich möchte einen kleinen Roboter mit 2 Motoren mit einem PIC18F2550 zu steuern.
Um die Geschwindigkeit der Räder zu ändern verwende ich 2 PWM Signale CCP1 und CCP2.
Die PWM kann ich mit dem Oszi messen, jedoch hat die PWM2 nur einen Pegel von 1V und PWM1 wie erwartet 5V.Code:// 20 MHz Takt /** Configuration ********************************************************/ #pragma config PLLDIV = 2, CPUDIV = OSC1_PLL2, USBDIV = 2, FOSC = HSPLL_HS #pragma config PWRT = ON #pragma config BOR = OFF #pragma config VREGEN = ON //USB Voltage Regulator Enable: #pragma config WDT = OFF //Watchdog Timer: #pragma config MCLRE = ON //MCLR Enable: #pragma config PBADEN = OFF //PORTB<4:0> pins are configured as digital I/O on Reset #pragma config LVP = OFF //Low Voltage ICSP: #pragma config CCP2MX = ON /** V E C T O R R E M A P P I N G *******************************************/ // Für den Bootlodader extern void _startup (void); // See c018i.c in your C18 compiler dir #pragma code _RESET_INTERRUPT_VECTOR = 0x000800 void _reset (void) { _asm goto _startup _endasm } #pragma code #pragma code _HIGH_INTERRUPT_VECTOR = 0x000808 void _high_ISR (void) { ; } #pragma code _LOW_INTERRUPT_VECTOR = 0x000818 void _low_ISR (void) { ; } #pragma code void Port_Init(void) { TRISA = 0x00; //PORTA als Ausgang TRISB = 0x00; //PORTB als Ausgang TRISC = 0x00; //PORTC als Ausgang // Interrupt konfiguration RCONbits.IPEN = 0; INTCON = 0xC8; // Enable all Interrupts T1CON = 0b00101011; // PIE1bits.TMR1IE = 1; // Enable Timer1 Interrupt // IPR1bits.TMR1IP = 1; // // PIR1bits.TMR1IF = 0; // Timer1 Interruptflag löschen // PWM konfiguration PR2=0x80; //1.:Register PR2 Wert zuweisen CCPR1L=0x80; //2.: CCPR2L=0x80; CCP2CONbits.DC2B0=0; CCP2CONbits.DC2B1=0; CCP1CONbits.DC1B0=0; CCP1CONbits.DC1B1=0; TRISCbits.TRISC2=0; //3.: CCP1 als Ausgang TRISCbits.TRISC1=0; // CCP2 als Ausgang T2CONbits.T2CKPS1=0; //4.: TMR2 Prescale setzen (1:2) T2CONbits.T2CKPS0=0; // Wert egal T2CONbits.TMR2ON=1; //Timer2 ON CCP1CONbits.CCP1M2=1; //5.: CCP1 für PWM konfiguriert CCP1CONbits.CCP1M3=1; CCP2CONbits.CCP2M2=1; // CCP2 für PWM konfiguriert CCP2CONbits.CCP2M3=1; PORTAbits.RA2 = 1; //power LED einschalten }
Was muss ich machen, damit PWM2 auch 5V hat. (Beide Pins sind unbelastet und nur mit dem Oszi verbunden)
Danke für eure Antworten.







Zitieren


Lesezeichen