Forum: Mikrocontroller und Digitale Elektronik STK500 anfängliche Probleme


von Marco M. (marco1987)


Lesenswert?

Ich habe folgenden Quelltext aus einem Tutorial:

.include "m8def.inc"

ldi r16, 0xFF


out DDRB, r16;

ldi r16,0xFC;
out PORTB, r16;




ende: rjmp ende;


Könnt ihr mir sagen, wieso nur von 8 LEDs 2 Leuchten und warum LED 1 und 
LED 4. Ich habe das STK500, daher die Portbezeichnungen

Oder könnt ihr vllt erklären wie ich die anderen LEds ansteuern kann.

Danke

von Karl H. (kbuchegg)


Lesenswert?

Marco Müeller wrote:
>
> Könnt ihr mir sagen, wieso nur von 8 LEDs 2 Leuchten und warum LED 1 und
> LED 4.

Weil du hier

> ldi r16,0xFC;
> out PORTB, r16;

die Hex Zahl 0xFC auf den Port ausgibst.
In binärer Schreibweise ist das

      F    C
    1111 1100

eigentlich müssten LED1 und LED2 leuchten :-)

   Hex Ziffer   binär       Hex Ziffer  binär
  --------------------------------------------
      0         0000            8       1000
      1         0001            9       1001
      2         0010            A       1010
      3         0011            B       1011
      4         0100            C       1100
      5         0101            D       1101
      6         0110            E       1110
      7         0111            F       1111

Offensichtlich leuchtet eine LED genau dann, wenn am Ausgang
an der entsprechenden Bitposition eine 0 ausgegeben wird.
Das ist eine durchaus übliche Vorgehensweise.

von Otto (Gast)


Lesenswert?

Hallo Marco,

weil die LED durch einen Transistor invertiert werden....

Gruss Otto

von crazy horse (Gast)


Lesenswert?

ldi r16,0xFC

Die Leds werden mit 0-Pegel angesteuert.

ldi r16,0x00
und schon alle an.

von Empfehlung (Gast)


Lesenswert?


von Marco M. (marco1987)


Lesenswert?

Ok danke das habe ich jetzt verstanden nur 00000000 sind ja 8 Bit also 
müssten alle 8 LEDs an sein, wie kommt es, dass nur 6 an sind hiern 
ochmal der QUellcode

.include "m8def.inc"

ldi r16, 0xFF


out DDRB, r16;

ldi r16,0b00000000;
out PORTB, r16;




ende: rjmp ende;


Danke

von Magnus Müller (Gast)


Lesenswert?

Das ist beim STK500 normal.

Dein verwendeter Controller ist ein ATmega8. Bei diesem ist für die Pins 
PB6 und PB7 als alternative Funktionen XTAL1 und XTAL2 (Anschlüsse für 
externen Quarz) vorgesehen. Diese Pins sind auf dem STK500 nicht mit 
den PORTB-Headern verbunden.

Gruß,
Magnetus

von STK500-Besitzer (Gast)


Lesenswert?

>wie kommt es, dass nur 6 an sind

Das liegt daran, dass der Mega8 einen 6bit breiten PortB hat.

von Magnus Müller (Gast)


Lesenswert?

STK500-Besitzer wrote:
> Das liegt daran, dass der Mega8 einen 6bit breiten PortB hat.

Nö. PortB ist 8 Bit breit.

Nachtrag zu meinem vorherigen Posting:

Die Pins PB6 und PB7 sind auch nur als solche verwendbar, wenn der mega8 
mit dem internen RC-Oszillator getaktet wird.

Gruß,
Magnetus

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.