mikrocontroller.net

Forum: Compiler & IDEs Anfänger Frage


Autor: Achim F. (achim2)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Achim F. (achim2)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Achim F. (achim2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort !!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.