Forum: Compiler & IDEs Simpler Fehler beim Programieren


von Cris (Gast)


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 :(

von M. L. (erf)


Lesenswert?

Was heißt es funktioniert nicht? Was denkst du, was PORTD++ bewirken 
soll?

von Cris (Gast)


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

von Cris (Gast)


Lesenswert?

Ok, hab jetzt doch den Fehler. Dachte wenn der Pull-up aktiviert wird, 
wird PIND automatisch auf 1 gesetzt.

War aber nicht der Fall...

von Oliver (Gast)


Lesenswert?

Cris schrieb:
> Aber das problem ist ja schon vorher, bei der if(PIN &0x01), dass es
> trotz gesetztes Bit nicht in die Schleife springt

Und woran siehst du das?

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

Lass das mal weg. Der Rest sollte funktionieren.

Oliver

von Karl H. (kbuchegg)


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

von Cris (Gast)


Lesenswert?

Achso, dachte mit Pull-up = 1 und ohne =0.
Wir schon gesagt, ich simuliere erst nur, da ich noch auf meinen 
ISP-Programmer warte...

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.