mikrocontroller.net

Forum: Compiler & IDEs sinnvolles Programmieren


Autor: Einsteiger M (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ist es sinnvoll, die Ports so, also über das DDRX zu programmieren,
oder sollte man dies besser über PortX tun?

#define set_DATA   DDR_T &= ~(1<<P_DATA)   // PORT_T |= (1<<P_DATA)
#define clear_DATA DDR_T |=  (1<<P_DATA)   // PORT_T &= ~(1<<P_DATA)


Grüße Marcel

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Marcel

siehe Tutorial:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

DDRX legt nur die Datenrichtung der Ports fest! PORTX den Wert.
Also erst als Ausgang schalten, dann Wert anlegen.

z.B. DDRA=0x01; PORTA=0x01; //Port A, LSB auf HIGH

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist nicht nur nicht sinnvoll, es ist sogar unsinnig.

DDRx ist das Datenrichtungsregister.  Für einen Ausgang setzt du
das typisch genau einmal, bevor du den ersten Wert ausgibst.

Autor: Einsteiger M (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ja, mir ist klar, das ddrx festlegt, ob dieser port Ein- bzw. Ausgang
sein soll. Ich habe diese Zeilen in einem Code aufgeschnappt. Dort wird
so der ein Output Port realisiert. Wenn ein high ausgegeben werden soll
wird das DDRx auf "Input" umgestellt, bei low auf "Output".
Ich denke das high wird mit einem externen pull up realisiert.

Die Definition solcher Macros (#define set_DATA  PORT_T |= (1<<P_DATA))
ist aber sinnvoll, oder? Diese machen doch das Programm übersichtlicher
oder??

Grüße und dank schonmal
M.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Diese machen doch das Programm übersichtlicher oder??

Das mußt du für dich entscheiden! Wenn es für DICH übersichtlich ist,
benutze die Makros.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kann doch sinnvoll sein, es so zu steuern. zB für I2C damit kann man
es dann einmal auf LOW ziehen und ansonsten ist es hochohmig.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorrausgesetzt PORTX=0, ansonsten nicht.

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.