Port reagiert nicht?

Gast #2664489
Lesenswert?

Hallo zusammen,

da ich noch am einarbeiten in die Microcontroller Thematik bin, möchte 
ich mir gerade einen einfachen Blinker realisieren.
Da das Programm später noch anderes tun soll, möchte ich es mit Timer 
realisieren und nicht mit delay...
Elektronisch habe ich einen ATmega88PA mit jew. LED's an PORTD und PORTB 
gegen Masse geschalten.
1
uint8_t millisec;
2

3
int main(void)
4
{
5
  DDRD = 0xFF;    /* PORTD */
6
  DDRC = 0x00;    /* PINC */
7
  DDRB = 0xFF;    /* PORTB */
8
  
9
  PORTC =0x01;    /* Pullup an PC0 */
10
  
11
  /* Timer definieren */
12
  TCCR0A |= (0>>WGM02) | (1<<WGM01) | (0>>WGM00);  /* CTC-Modus (wenn Compare erreicht Counter=0) */
13
  TCCR0B |= (0>>CS02) | (1<<CS01) | (0>>CS00);     /* Prescaler=8 */
14
  OCR0A = 124;                                     /* Compare-Wert = 125-1, da bei 1MHz und Prescaler 8 125=1ms */
15
  TIMSK0 |= (1<<OCIE0A);                           /* Compare 0A Interrupt freigegeben */
16
  
17
  sei();
18

19
  while(1) 
20
  {
21

22
    PIND |= 0x01;       /* bei auskommentierung funktioniert nichts mehr */
23
    
24
    if (millisec==200) {
25
      PINB |= (1<<5);
26
      millisec=0;
27
      PIND = 0xFF;
28
    }      
29
  }
30
}
31

32
ISR(TIMER0_COMPA_vect) {
33
  millisec++;
34
}

Wenn ich das Programm nun so aufspiele blinkt alles wie es soll. (D5 
blinkt; D 1-7 blinken; D0 ist an, ein Blinken kann ich leider nicht 
messen, da kein oszilloskop vorhanden).
Wenn ich jedoch nun die Zuweisung
1
PIND |= 0x01
 auskommentiere/lösche, blinkt gar nichts mehr. Alle LED's bleiben aus.
Woran kann so etwas liegen? Gibt es in C++ die Möglichkeit so etwas wie 
ein NOP einzufügen?

Dankeschön! ;)
Lg
Jonas

PS: Dass die Nulldefinitionen für DDRC und beim Timer nichts ändern weiß 
ich, ich schreib sie fürs Verständnis trotzdem rein.

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