Ich möchte ein Softstart für einen Motor programmieren. Das klappt mit
PWM auch ganz gut, aber nun möchte ich, dass solange die Pegeldauer
erhöht wird, eine LED blinkt.
Anfangs dachte ich, ich mache es einfach mit delay, aber dadurch wird
die ganze schleife verzögert.
1 | PORTC |= (1 << PC5);
|
2 | _delay_ms(250);
|
3 | PORTC &= ~(1 << PC5);
|
4 | _delay_ms(100);
|
also dachte ich mir, ich mache es so, dass bei jedem 25ten Element die
LED angeht und nach 50 Elementen ausgeht. Aber ich weiss leider nicht,
wie ich das realisieren kann.
Bisher geht sie nach dem 25ten Element an, aber bleibt danach an.
1 | ICR1 = 0x4E20; // Periodendauer
|
2 | OCR1A = 100; // High-Pegel dauer
|
3 | PORTC |= (1 << PC5); // LED AUS
|
4 | for (i = 0; i < 1400; i++)
|
5 | {
|
6 | OCR1A = OCR1A+1;
|
7 | _delay_ms(10);
|
8 | if (i==25)
|
9 | PORTC &= ~(1 << PC5); // LED AN
|
10 | }
|
11 | while( 1 )
|
12 | ;
|
13 | }
|