När jag kör den här koden (klippt bort configen med mera som jag tror är onödigt) så skapas en "glitch". Målet är att PWM1_Set_Duty ska gå fram och tillbaka med värde "value" men när värdet når 100 tycks något hända innan eller precis när value ska räknas ner igen.
Ser någon vad som kan skapa detta? Det är precis som att den hoppar ur loopen och sen återvänder...
Om det är nödvändigt så ska jag givetvis posta hela koden och förklara mer ingående vad som händer.
Kod: Markera allt
unsigned char step;
unsigned char value;
const unsigned char constants[100] = {1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,
11,12,12,13,13,14,14,14,15,15,16,16,17,17,18,
18,19,19,20,20,21,21,22,23,23,24,25,25,26,27,
27,28,28,30,31,32,33,34,36,37,39,41,42,44,45,
47,49,52,55,57,60,62,65,68,71,75,79,83,87,91,
95,99,103,107,111,115,119,123,127,131,134,138,
142,146,150,154,158,162,166};
void main() {
PWM1_Set_Duty(1);
Delay_mS(5);
step = 0;
while(1)
{
for(step = 0; step < 100; step++)
{
PWM1_Set_Duty(value);
value = constants[step];
Delay_ms(30);
}
for(step = 100; step > 0; step--)
{
PWM1_Set_Duty(value);
value = constants[step];
Delay_ms(30);
}
}
}