www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Port ansprechen


Autor: Christian S. (mueke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich habe den ATMega8 und möchte den PortD als Datenausgabe nutzen. Also 
mache ich ja DDRD auf 0xFF. Jetzt möchte ich aber auch den Pin PD2(INT0) 
als externen Interrupt nutzen. Kann ich dan ganz normal daten an den 
Port schreiben, oder muss ich da was beachten???

MfG
Muecke

Autor: Danny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du PortD aus Ausgang benutzen willst, kannst Du den INT0 nicht 
nutzen, da er dann als Eingang fungiert. Es sei denn Du schaltest 
zwischendurch von Ausgang nach eingang und wieder zurück.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch, du kannst den INT0 weiterhin benutzen und mittels entsprechender 
Ausgabe sowas wie einen Software-Interrupt auslösen.
Wie stellst du es dir denn vor, einen Ausgang gleichzeitig auch noch 
als Eingang zu verwenden?

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du was anderes als "0xFF" (d.h. 0b11111111) in das DDRx-Register 
schreibst, kannst du auch einzelne Pins als Input benutzen, ist das etwa 
das Problem?

Autor: Christian S. (mueke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe meine Vorstellung meines Programms nun etwas geändert, aber 
ähnliches Problem:

An PortD sind Pin 1-7 als Ausgabe und pin 0 Als Einggabe definiert (0xFE 
an DDRD)
Wie schreibe ich nun Daten an die Pins und lese diese ein?

MfG
Muecke

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> An PortD sind Pin 1-7 als Ausgabe und pin 0 Als Einggabe definiert (0xFE
> an DDRD)
> Wie schreibe ich nun Daten an die Pins und lese diese ein?

Erstmal vereinbaren, ob der interne PullUp für PD0 aktiviert werden 
soll. Das entscheidet darüber, ob das Bit beim Schreiben 0 oder 1 sein 
muss.

Dann vor dem Schreiben (out portd,r16) dieses Bit (noch im Register) 
zusätzlich beeinflussen (z.B. mit sbr r16,1 oder cbr r16,1).

Beim Lesen dieses Bit einfach ignorieren. Falls das schwer fällt, dann 
ausmaskieren (andi, cbr).

...

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Programmiersprache?
- (AVR-GCC-1)C: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
- Asm: http://www.mikrocontroller.net/articles/AVR-Tutorial
- Basic: RTFM ("f" für fine...)

hth. -Jörg

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.