Forum: Compiler & IDEs Anfänger Frage


von Achim F. (achim2)


Lesenswert?

Hallo,
ich arbeite mich gerade in MyAVR ein und hänge gerade beim auswählen von 
den Ausgangspins. Ich hoffe das ich die Fachausdrücke alle richtig 
schreibe :-)

Ich will Pin 0 und Pin 1 von Port B einschalten. Woher weiß ich und 
MyAVR was Pin 0 und 1 ist? Im Moment schalte ich Pin 0 von Port B und C 
ein. Aber wie sehe ich das es jeweils Pin 0 ist? Das "sbi DDRB , 0" 
bedeutet das es ein Ausgang ist

main:  ldi  r16,lo8(RAMEND)
    out  SPL , r16
    ldi  r16 , hi8(RAMEND)
    out  SPH , r16
    sbi DDRB , 0
    sbi DDRC , 0
      ;Hier Init-Code eintragen.

mainloop:  ldi  r16 , 0b00000001 ;LED ON
    out PORTB , r16
    out PORTC , r16
    rjmp  mainloop

Kann mir da jemand helfen?

von Rolf Magnus (Gast)


Lesenswert?

Achim F. schrieb:

> Ich will Pin 0 und Pin 1 von Port B einschalten. Woher weiß ich und
> MyAVR was Pin 0 und 1 ist?

Aus dem Datenblatt?

> Im Moment schalte ich Pin 0 von Port B und C ein. Aber wie sehe ich das
> es jeweils Pin 0 ist?

Was meinst du damit?

> Das "sbi DDRB , 0"
> bedeutet das es ein Ausgang ist

Ja.

> main:  ldi  r16,lo8(RAMEND)
>     out  SPL , r16
>     ldi  r16 , hi8(RAMEND)
>     out  SPH , r16
>     sbi DDRB , 0
>     sbi DDRC , 0
>       ;Hier Init-Code eintragen.
>
> mainloop:  ldi  r16 , 0b00000001 ;LED ON
>     out PORTB , r16
>     out PORTC , r16
>     rjmp  mainloop
>
> Kann mir da jemand helfen?

Ich verstehe dein Problem nicht.

von Achim F. (achim2)


Lesenswert?

Wenn ich jetzt z.B. den Port B.1 einschalten will, was muss ich für 
einen Code eingeben?
Ich verstehe nicht warum Port B.0 eingeschaltet wird wenn ich DDRB / 
PORTB" eingebe. Beim PORTB gibt es ja 6 Pins...
In einem anderen Beispiel wird "0b00011100" in ein Register geladen und 
Pin 2-4 werden eingeschaltet - aber warum?

von Karl H. (kbuchegg)


Lesenswert?

Deine Fragen sind alle im AVR-Tutorial beantwortet.

Kurz
Hier stehts doch
     sbi DDRB , 0

sbi:          set Bit
DDRB          wo? im DDR Register für den Port B
welches Bit:  Bit 0

Alles zusammen: Das Bit 0 im DDRB Register wird auf 1 gesetzt.
Und die Hardware interpretiert das jetzt so, dass dadurch Bit 0 vom Port 
B auf Ausgang programmiert werden soll

> In einem anderen Beispiel wird "0b00011100" in ein Register geladen
> und Pin 2-4 werden eingeschaltet - aber warum?

     0b00011100
       ^^^^^^^^
       ||||||||
       |||||||+--- Bit 0
       ||||||+---- Bit 1
       |||||+----- Bit 2
       ||||+------ Bit 3
       |||+------- Bit 4
       ||+-------- Bit 5
       |+--------- Bit 6
       +---------- Bit 7

von Achim F. (achim2)


Lesenswert?

Danke für die Antwort !!

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.