Merkwürdiges Verhalten von Ports?

OP #2757947
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
OP #2757969
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...

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