Ik heb hier op een bordje een pic24 waarvan ik de pwm naar buiten zou willen krijgen,
nu krijg ik deze niet werkende, ik denk dat het probleem zit bij de remappable pins
Ik werk met MikroC van MikroE aangezien ik mplab niet geinstaleerd krijg.
heb al veel geprobeer en ben nu reeds paar weken bezig met het zoeken naar de oplossing, en vind het probleem maar niet.
hier mijn code:
c code:
#define led1 RD1_bit
#define led2 RD2_bit
#define led3 RD3_bit
#define led4 RD4_bit
#define led5 RD5_bit
#define start RE5_bit
//variabelen
int timerteller = 0;
const int flash = 90;
//Timer1
//Prescaler 1:256; PR1 Preload = 62500; Actual Interrupt Time = 1s
void InitTimer1(){
//T1CON = 0x8030; //starten van timer
T1CON = 0x0000;
T1IE_bit = 1;
T1IF_bit = 0;
IPC0 = IPC0 | 0x1000;
PR1 = 62500;
}
//iets dat uitgevoert word na de laatste interupt van de timer
// initialisaties
void init(){
TRISD = 0;
TRISE5_bit = 1;
PORTD = 0;
ADPCFG = 0xFFFF; // Configure AN pins as digital I/O
TRISB = 0x0000; // configureall ports as Output
TRISF = 0x0000;
TRISG = 0x0000;
Unlock_IOLOCK();
PPS_Mapping(0, _OUTPUT, _OC1); // Sets pin 5 to be Output
Lock_IOLOCK();
}
#define OC1_OUT 18
int current_duty = 0 ;
int chanel = 1;
int maxi = 0;
int freq = 1000;
void pwm(){
current_duty = 5000; //16 bit pwm
chanel = 1;
PWM_Init(100,chanel,0,0);
PWM_Start(chanel); //Start pwm1
maxi = 65536;
PWM_Set_Duty(current_duty, chanel); // Set current duty for PWM1
while(1){
while(current_duty < maxi){
PWM_Set_Duty(current_duty,chanel);
current_duty++;
delay_ms(100);
}
current_duty = 0;
}
}
void main(){
TRISD = 0x0000;
PORTD = 0x0000;
pwm();
while(1){
led5 = 1;
delay_ms(500);
led5 = 0;
delay_ms(500);
}
}