mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR ATmega162: Ports lassen sich nicht als Ausgang deklarieren


Autor: Der mit den Bytes tanzt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich habe einen ATmega162, und wollte alle I/O Ports als Ausgang 
deklarieren und auf high setzen (meine persönliche Art der 
Funktionsprüfung). Habe, wie es sich gehört, alle DDRx-Register und alle 
PORTx-Register auf high gesetzt (Nebenbei: JTAG habe ich abgeschaltet, 
um diese Ports auch nutzen zu können).

Nun das Problem: Die DDRx-Register sind zwar mit 0xff beschrieben, also 
auf high, dennoch sind die Ports nicht als Ausgang deklariert. Es sind 
lediglich die Pull-Ups eingeschaltet. Dies ist nur bei den Ports PA, PB, 
PC und PD so, der Port PE funktioniert.
Habe es auch mit einem Bau- und Typgleichen Controller – also auch 
ATmega162 – versucht, bei dem genau das gleiche.

Woran liegt das und was muss ich machen?

Der Source-Code ist, wie ihr sehen könnt, sehr einfach.
------------------------------------------------------------------------ 
---

;ATmega162__Port-Output-Test

;Alle Ports sind als Ausgang deklariert und führen High-Pegel

;_______________________________________________________________________ 
_
;-----------------------------------Boot-------------------------------- 
---

.include "m162def.inc"
.cseg
rjmp start
.org 0x038
start:

;----------------------------Stapelzeiger_laden------------------------- 
---

  ldi    r16,high(ramend)
  out    sph,r16
  ldi    r16,low(ramend)
  out    spl,r16

;----------------------------Ausgänge_definieren------------------------ 
---

  ldi    r23,0b11111111
  out    ddra,r16
  out    ddrb,r16
  out    ddrc,r16
  out    ddrd,r16
  ldi    r23,0b00000111
  out    ddre,r16

;-----------------------------JTAG_abschalten--------------------------- 
---

  in    r16,mcucsr    ;MCU Control and Status Register in r16 laden
  sbr    r16,1<<jtd
  out    mcucsr,r16    ;Bit7 (JTD) setzen
  nop
  out    mcucsr,r16    ;Bit7 (JTD) setzen

;_______________________________________________________________________ 
_
;------------------------------Haupt-Programm--------------------------- 
---

  ldi    r16,0b11111111
  out    porta,r16
  out    portb,r16
  out    portc,r16
  out    portd,r16
  ldi    r16,0b00000111
  out    porte,r16


loop:
  nop
  rjmp loop


.exit

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hast du schon mal gepostet. Wieso jetzt noch mal?
Quellcodes hängt man nicht als Bild an sondern als Text!

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>  ldi    r23,0b11111111
>  out    ddra,r16
>  out    ddrb,r16
>  out    ddrc,r16
>  out    ddrd,r16
>  ldi    r23,0b00000111
>  out    ddre,r16

Fällt dir was auf?

MfG Spess

Autor: Der mit den Bytes tanzt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ursprünglich war dies das Problem mit dem „Portspannung am ATmega 
bricht ein“. Ich habe aber nun – wie oben geschrieben – herausgefunden, 
dass einfach die DDRx-Register nicht gesetzt sind.

@spess53: Was mir auffallen soll, ist natürlich das Register r23. Aber 
ich habe es so gemacht, wie im Bild-Anhang. Für diesen Fehler bitte ich 
um Entschuldigung.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.