Port reagiert nicht?

Gast #2664489
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.
Gast #2664532
Hi

>PINx verwendet man zum lesen, PORTx zum schreiben eines Ports

Nicht nur. Bei den neueren AVRs toggled das Schreiben einer 1 in das 
PIN-Register den entsprechenden Portpin.

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.