Forum: Mikrocontroller und Digitale Elektronik Merkwürdiges Verhalten von Ports?


von GS (chromosoma)


Lesenswert?

#include Hello


Ich bin ein Neuling was  die µC angeht, aber recht lernfähig:)

Im moment programmiere ich meine Arduino Mega (Atmega2560) mit dem AVR 
dragon+AVR studio 6.

Ich habe eine Frage:

An den Prots PB4 und PB5 sind LED's angeschlossen.
Nun will ich beide anmachen.

Klingt simpel, ist es auch:

#include <avr/io.h>

int main(void) {


  DDRB = 1<<5 ;
  DDRB =1<<4;

  while(1) {
    PORTB =1<<4;
    PORTB = 1<<5;



  }
}



Nun ist es so, dass die LED  am Port 5 nur sehr schwach leuchtet, die 
LED am Port 4 leuchtet gut.

Schreibe ich :
DDRB =1<<4;
DDRB = 1<<5;

ist es umgekehrt, PB4 leuchtet schwach...

Sage ich aber : DDRB =1<<4 | 1<<5;

Leuchten beide OK, genau so wie bei

DDRB = 0b00110000;


Woran liegt das? O_o

PS: PB5 und PB4 sind PWM Ausgänge

von Peter II (Gast)


Lesenswert?

Anton R. schrieb:
> DDRB =1<<4;
> DDRB = 1<<5;

damit ist der 1.Anweisung wertlos, du überschreibst das doch wieder. 
damit ist PB4 wieder ein Eingang - PullUp damit led recht dunkel.

von GS (chromosoma)


Lesenswert?

Peter II schrieb:
> Anton R. schrieb:
>> DDRB =1<<4;
>> DDRB = 1<<5;
>
> damit ist der 1.Anweisung wertlos, du überschreibst das doch wieder.
> damit ist PB4 wieder ein Eingang - PullUp damit led recht dunkel.

Ahsoo.
Ich dachte es passiert folgendes:

//register erst bei 0b00000000
>> DDRB =1<<4;
// Die 1 auf die 4. Stelle schieben: 0b00010000
>> DDRB = 1<<5;
// Weitere 1 auf die 5. Stelle: 0b00110000

Wie bei Feldern...

von Peter II (Gast)


Lesenswert?

Anton R. schrieb:
> Wie bei Feldern...

wo hast du solche felder?

Aus dem Grund schreibt ma ja auch:

DDRB |= 1<<4;
DDRB |= 1<<5;

und schon ist beides drin.

von GS (chromosoma)


Lesenswert?

Danke. Ich glaube ich hab es verstanden.
Schönen Abend noch;)

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.