mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PORTG beim atmega128


Autor: sebastian schreiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich versteh die welt nicht mehr...
ich versuche pg0 (oder irgendeinen anderen pin) beim atmega128 auf 1 zu
setzten aber bei gavrasm kommt:
Fehler ==>   sbi Ping, PG0
[test.asm,76] 021: Portwert (99) ausserhalb des zulaessigen Bereichs
(0..63)!
    76: 00000D   9A00  sbi Ping, PG0

und beim avr studio 4:
sbi portg, 0 : error : Illegal argument type or count

bin ich irgendwie zu dumm und hab was übersehen oder was
soll das??? :-/

schonmal danke fürs lesen!
mfg
basti

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RTFM ;) die I/O Adresse von PortG ist > 0x1F

Autor: sebastian schreiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke soweit! ;)

aber was tun um den port trotzdem anzusprechen??

mfg
basti

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Port in Register einlesen, Bitoperation, Register auf Port ausgeben und
fertig.

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und zwar mit LDS und STS.

Autor: sebastian schreiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey david!

könntest du mir, als noch recht blutigen anfänger, nen
kleines codebeispiel zukommen lassen???
sts und lds hab ich bisher noch net benutzt...

mfg
basti

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso mit lds/sts? Mit in/out geht das, nur sbi geht nicht. Ich würds so
machen:

in R16,PORTG
sbr R16,ping
out PORTG,R16

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh shit, hab mich vertan, Dave hatte recht!

Also so hier müsste es gehen:

lds R16,PORTG
sbr R16,ping
sts PORTG,R16

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal zur Erklärung:

sbi geht bis Adresse 31, in/out geht bis Adresse 63, für den Rest muss
man lds/sts nehmen. Port G liegt auf Adresse 101, also sts/lds nehmen
:-)

Autor: Martin #### (martin-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich würds so machen
So funktioniert es aber nicht.
Hier muss man sts und lds:
ldi r16,0xff
;in Port schreiben
sts PORTG,r16
;Port abfragen
lds r16,PORTG

Autor: Bri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab nochwas wichtiges vergessen, sbr funktioniert wie ein ori, also
musst du eine Bit-Maske nehmen und nicht die Nummer des Bits! In deinem
Fall also:

sbr R16,1

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.