Verzweifle am Unterporgramm - Bit wird nicht gelöscht

OP #4878409
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe mir ein ziemlich simples Unterprogramm geschrieben.
1
void blink(uint8_t k)
2
{
3
  volatile uint8_t i;
4
  for (i=0;i<=k;i++)
5
  {
6
    PORTB |= (1<<PB1);
7
    _delay_ms(200);
8
    PORTB &= ~(1<<PB1);
9
  }
10
  _delay_ms(1000);
11
}

Im Main sieht es so aus
1
int main(void)
2
{
3
  DDRB = (1<<DDB0)|(1<<DDB1); //PB0 und PB1 als Ausgänge
4
  PORTB =0x00;
5
  blink(10);
6
  while(1)
7
  {
8
        
9
  }
10
}

Es soll eine LED x-mal zum blinken bringen. Im Simlator läufts und der 
Port geht 10 mal an und wieder aus. Das ganze läuft (bzw. läuft nicht 
;-) ) auf einem ATtiny85 bzw. einem Adafruit Trinket 
(https://learn.adafruit.com/introducing-trinket/downloads) Ich merke an 
der Zeit, dass die delays abgearbeitet werden aber die LED bleibt 
konstant an.
Was übersehe ich?

Gruß
Joachim
Gast #4878413
Lesenswert?
• ▲
▼
Joachim J. schrieb:
> for (i=0;i<=k;i++)
>   {
>     PORTB |= (1<<PB1);
>     _delay_ms(200);
>     PORTB &= ~(1<<PB1);
>   }

Nach dem Löschen des Bits wird es sofort wieder gesetzt.
Baue ein zweites delay ein, dann siehst du auch was.
1
  {
2
    PORTB |= (1<<PB1);
3
    _delay_ms(200);
4
    PORTB &= ~(1<<PB1);
5
    _delay_ms(200);
6
  }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren