Hallo zusammen,
ich habe schon wieder mal n problemchen...
Ich habe eine kleine Testplatine gebaut um einen motor Per PWM anzusteuern. Kleines Testprogramm geschrieben - läuft nicht. Kann mir jemand sagen woran es liegen könnte? Die Tasten "anaus" für start&stopp und "schnell" für das drehzahlsignal(1 linkslauf,0 rechtslauf) reagieren einfach nicht...
Danke schonmal für hilfe und ideenCode:/* * File: main.c * Author: Ben * * Created on 9. April 2014, 20:55 */ #include <stdio.h> #include <stdlib.h> #include <htc.h> #define _XTAL_FREQ 20000000 #define PWM PORTBbits.RB3 //PWM out #define LR PORTBbits.RB7 //Signal für richtung #define CHA PORTBbits.RB1 //Lichtschranke teilA #define CHB PORTBbits.RB2 //Lichtschranke TeilB #define REF PORTBbits.RB4 //Fork 1 - REF #define LMI PORTBbits.RB5 //Fork 2 - LMI #define END PORTBbits.RB6 //Fork 3 - END #define ANAUS PORTBbits.RB0 //Start/Stopp #define schnell PORTAbits.RA1 //Schneller #define langsam PORTAbits.RA2 //Signal links/rechtslauf char istaus; /* * */ __CONFIG(FOSC_HS & WDTE_OFF & MCLRE_OFF & LVP_OFF & CP_OFF & BOREN_OFF); void pwm_an(void); void pwm_aus(void); //void interrupt start_int (void){ //} void init(void); void main(void){ init(); while(1){ if ((ANAUS == 1) && (istaus == 1)){ pwm_an(); __delay_ms(30); } if ((ANAUS == 1) && (istaus == 0)){ pwm_aus(); __delay_ms(30); } if (schnell == 1){ LR = !LR; __delay_ms(30); } } } void pwm_an(void){ CCP1CON = 0b1100; istaus = 0; } void pwm_aus(void){ CCP1CON = 0x00; istaus = 1; } void init(void){ TRISA = 0b000110; //Ein-Ausgänge einstellen TRISB = 0b01110111; //Ein-Ausgänge einstellen CCP1CON = 0x00; //PWM aus INTE = 1; //Int an GIE = 1; //Int an PEIE = 1; //Int an RBIE = 1; //Int an bei RB 4..7 PORTA = 0x00; //Ausgänge 0setzen PORTB = 0x00; //Ausgänge 0setzen T2CKPS0 = 1; //Vorteiler 4:1 T2CKPS1 = 0; //Vorteiler 4:1 TMR2ON = 1; //Timer2 an (fuer pwm) PR2 = 0x7C; //Tacktung CCPR1L = 0x3E; //Tastverhältnis CMCON = 0x07; //Comparator aus istaus = 1; di(); //alle interrupts deaktivieren LR = 1; }
Gruß
Frodo







Zitieren

Lesezeichen