Forum: Mikrocontroller und Digitale Elektronik Hilfe zu Flackerlicht


von Gryll C. (gryllcat)


Lesenswert?

Hallo liebes Forum,
bei dem folgenden Programm scheint die for-Schleife nicht richtig zu 
funktionieren. Sie wird zwar ausgeführt, aber leider läuft sie  nur 
einmal durch.
Ich hoffe, jemand hat einen Tipp, diesen Fehler zu beheben.
1
#define F_CPU 1200000  
2
#include <avr/io.h>
3
#include <util/delay.h>
4
#include <stdlib.h>
5
6
int main(void)
7
{
8
  //PWM-init 
9
  TCCR0A=0b10100011; TCCR0B=0b00000010; TCNT0=0x00; TIMSK0=0x00;
10
  OCR0A=100; OCR0B=0;
11
12
  DDRB = 0b11111; 
13
14
    while(1)
15
    {
16
    OCR0B= (int) (random()*235)+15;     
17
    for(int i=0; i<(int) (random()*750)+400; i++)
18
    {
19
      _delay_ms(1);      
20
    }
21
        
22
    }
23
}

--

Bitte Quelltext in [ c ] [ /c ] - Tags einschließen.

-rufus

von Stefan F. (Gast)


Lesenswert?

> i<(int) (random()*750)+400;

Ich glaube, dieser Ausdruck wird bei jedem Schleifendurchlauf erneut 
evaluiert. Und das ist definitiv nicht das, was du beabsichtigt hattest.

Versuch es mal so:
1
int random=(int) (random()*750)+400;
2
for(int i=0; i<random; i++)
3
{
4
     _delay_ms(1);      
5
}

von Gryll C. (gryllcat)


Lesenswert?

Vielen Dank für die schnelle Antwort!
Dein Tipp hat den Fehler behoben, vielen Dank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.