Zdravím,
mám problém, dělám RGB svítítko a používám k tomu 16f690 a TMR0 přerušení. Problém je v tom, že to všechno běhá strááááášně pomalu (LEDka bliká cca v 12Hz na plny svit).
Jede to na vnitrnim OSC.
Compiler pouzivam od mikroElektroniky MikroC.
Zdroják:
[code]int PWM1 = 768;
int PWM2 = 768;
int PWM3 = 768;
int CLC = 0;
sbit Red at RB4_bit;
sbit Green at RB5_bit;
sbit Blue at RB6_bit;
void main() {
adcon0 = 0b00000001;
ansel = 0b00000111;
anselh = 0;
trisa = 0b000111;
trisb = 0;
trisc = 0;
porta = 0;
portb = 0;
portc = 0;
OSCCON=0b01110111;
// intcon = 0b11100000;
/OPTION_REG.B5 = 0;
OPTION_REG.B4 = 0;
OPTION_REG.B3 = 0;
OPTION_REG.B2 = 1;
OPTION_REG.B1 = 1;
OPTION_REG.B0 = 1;/
PORTB=0xFF;
Delay_ms(300);
PORTB=0x0;
INTCON=0;
INTEDG_bit=1;
T0CS_bit=0;
T0SE_bit=0;
PSA_bit=0;
PS0_bit=0;
PS1_bit=0;
PS2_bit=0;
GIE_bit=1;
T0IE_bit=1;
TMR0=0xf0;
Red = 1;
Green = 1;
Blue = 1;
while(1){
RB7_bit=1;
PWM1 = ADC_Read(0);
PWM2 = ADC_Read(1);
PWM3 = ADC_Read(2);
RB7_bit=0;
if(CLC < 2) {
Red = 1;
Green = 1;
Blue = 1;
}
if(CLC == PWM1) {
Red = 0;
}
if(CLC == PWM2) {
Green = 0;
}
if(CLC == PWM3) {
Blue = 0;
}
if(CLC == 1023) {
CLC = 0;
}
}
}
void interrupt() {
RB7_bit=0;
if(INTCON.T0IF) {
CLC++;
// TMR0=0xf0;
INTCON.T0IF = 0;
}
}[/code]
Díky za pomoc.
administrator: přejmenováno z "PIC 16f690, RGB, TMR0 - problém"