Vad är det som skapar en "död punkt" i denna loop?
Postat: 21 november 2014, 13:59:29
Nu handlar detta om att programmera en µC men valde att göra tråden i denna kategori då det nog är mer programmeringsrelaterat.
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.
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);
}
}
}