Simpler Fehler beim Programieren

Gast #2522474
Lesenswert?

Hallo,

ich habe gerade angefangen mit µC-programmieren angefangen und mache 
gerade das Tutorial durch und Simuliere das Ergebnis mit AVR-Studio 5.

Nun hab ich ein kleines Programm zum testen, aber das funktioniert nicht 
und ich weiß, dass es nur ne kleinigkeit ist, ich komme aber nicht 
drauf.
1
int main(void)
2
{
3
  DDRB = 0xFF;
4
  DDRD = 0x00;
5
  PORTB = 0x00;
6
  PORTD = 0xFF;
7
    while(1)
8
    {
9
      if (PIND & 0x01)
10
      {
11
        PORTB |= (1 << 0);
12
      }
13
      else
14
      {
15
        PORTB &= ~(1 << 0);
16
      }
17
      PORTD++;      
18
    }
19
}

Ich will, PORTD1 = PORTB1. Aber das einlesen von PORTD funkioniert nicht 
wirklich, obwohl es so im Tutorial steht.

Kann mir jemand helfen? Hab auch schon mit if=(PIND & 0xFF) probiert, 
aber nix geht :(
Gast #2522488
Lesenswert?

Sry, mein Fehler, es soll PORTD0 = PORTB0;
PORTD++ soll bewirken, dass der Zustand ständig wechselt.

Aber das problem ist ja schon vorher, bei der if(PIN &0x01), dass es 
trotz gesetztes Bit nicht in die Schleife springt
#2522506
Lesenswert?

Cris schrieb:

> PORTD++ soll bewirken, dass der Zustand ständig wechselt.

Ja was jetzt?
Ich dachte, du hast an PIND-1 einen Taster hängen?

Den Pullup kannst du einschalten/aussschalten bis du schwarz wirst. Der 
sorgt nur dafür, dass die offene Leitung einen gesicherten Pegel 
einnimmt. Aber eine offene Leitung per se (also ohne Pullup) hat erst 
mal keinen definierten Pegel. Nicht 1 und auch nicht 0

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