-
-
Das klingt gut... es sind tatsächlich Warteschleifen drin...
Aber wie soll ich sie entfernen.
Mein Programm nutzt alle Timer um mehrere LEDs anzusteuern.
Hier der code (oder ein Teil daraus):
DDRB = (1<< DDB4) | (1<< DDB5) | (1<< DDB7) | (1<< DDB6);
PORTB = (1<< PB4) | (1<< PB5) | (1<< PB7) | (1<< PB6);
OCR0,OCR2,OCR1A,OCR1B = 0x00;
TCCR0 = (1 << WGM00) | (1<< COM01) | (1<< CS00);
TCCR2 = (1 << WGM20) | (1<< COM21) | (1<< CS20);
TCCR1A = (1 << WGM10) | (1 << WGM11) | (1<< COM1A1) | (1<< COM1B1);
TCCR1B = (1<< CS10);
while(x==2)
{
while(OCR0 <= 0x60) {for (i=0;i<300;i++) asm volatile("NOP"); OCR0 = OCR0 + 1;}
while(OCR2 <= 0x40) {for (i=0;i<300;i++) asm volatile("NOP"); OCR2 = OCR2 + 1;}
while(OCR1A <= 0xA0) {for (i=0;i<100;i++) asm volatile("NOP"); OCR1A = OCR1A + 1;}
while(OCR0 >= 0x40) {for (i=0;i<100;i++) asm volatile("NOP"); OCR0 = OCR0 - 1;}
while(OCR2 >= 0x10) {for (i=0;i<100;i++) asm volatile("NOP"); OCR2 = OCR2 - 1;}
while(OCR1A >= 0x10) {for (i=0;i<100;i++) asm volatile("NOP"); OCR1A = OCR1A - 1;}
while(OCR0 <= 0xCF) {for (i=0;i<200;i++) asm volatile("NOP"); OCR0 = OCR0 + 1;}
while(OCR1B <= 0xA0) {for (i=0;i<100;i++) asm volatile("NOP"); OCR1B = OCR1B + 1;}
while(OCR1A <= 0xA0) {for (i=0;i<100;i++) asm volatile("NOP"); OCR1A = OCR1A + 1;}
while(OCR0 >= 0x10) {for (i=0;i<100;i++) asm volatile("NOP"); OCR0 = OCR0 - 1;}
while(OCR1B <= 0x05) {for (i=0;i<100;i++) asm volatile("NOP"); OCR1B = OCR1B - 1;}
while(OCR1A >= 0x10) {for (i=0;i<100;i++) asm volatile("NOP"); OCR1A = OCR1A - 1;}
Danke und Grüße
popi
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen