mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage atmega16


Autor: der ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte vom port a lesen und die schalterstellungen auf port d
ausgeben. folgender code:

ldi r17, 0x00
  out DDRA,r17
  ldi r20, 0xff
  out PORTA, r20
  ; Port A als eingang und pull up widerstände aktivieren

  in r25, PORTA

  ldi r16, 0xff
  out DDRC, r16
  out PORTC, r25

die schalter liegen auf masse also müßte alles richtig verdrahte sein.
jedoch funktioniert das nicht. was mache ich falsch?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du auf PortD ausgeben willst, warum schreibst du dann DDRC/PORTC?

Autor: der ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahm sorry auf port c ausgeben natürlich

Autor: Philipp Burch (not logged in) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

zum lesen immer die PINx-Register verwenden. Also
in r25, PINC

Wenn du das PORTx-Register schreibst/liest steuerst du damit nur die
Pullups.

Autor: der ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super danke das war der fehler

Autor: der ernst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine frage hätt ich noch kann ich die PINS auch einzeln einlesen?
PINA ist in der m16def.inc so definiert:
; PINA
.equ  PINA7, 7
.equ  PINA6, 6
.equ  PINA5, 5
.equ  PINA4, 4
.equ  PINA3, 3
.equ  PINA2, 2
.equ  PINA1, 1
.equ  PINA0, 0

wenn ich im programm allerdings in r25, PINA4 schreibe statt PINA
funktioniert nichts mehr

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst die Pins mit einer Maskierung einzeln einlesen

in r25, PINA           ;PINA in r25 einlesen
;Maskieren mit 0b00010000 (1 << 4 bzw. 1 << PINA4):
andi r25, (1 << PINA4)

PINA4 ist nur die Zahl (Bitnummer) 4 zugeordnet. Ansonsten hat PINA4
keine Funktion. Der Assembler versteht in dem oben von Dir verwendeten
Beispiel PINA4 als Register-Adresse. Dann kann es auch nicht
funktionieren. Mit einem Skip-Befehl kannst Du den Pin separat
auswerten:

sbis PINA, 4

oder

sbis PINA, PINA4

Ansonsten: Assembler-Befehlssatz mal genauer ansehen und v.a.
verstehen, was die einzelnen Befehle machen und wie sie funktionieren!

Gruß

Johnny

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.