mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Einsteigerfrage


Autor: Stefan T. (_distance_07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

meine Frage ist, ob ich einen Port gleichzeitig als Ein - und 
Ausgangsport verwenden kann...

Ginge es dann so ?

...

   ldi r16, 0b11111100   ; Pin 0,1 = Eingang  PIN 2-7 = Ausgang
   out DDRD, r16

   in r16, PIND
   out PORTD, r16


Würde das so gehen ?

Programm soll auf dem ATMEGA8515L laufen.


MfG

Stefan

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das geht. Man kann die Portleitungen unabhängig voneinander als 
Ein-oder Ausgang festlegen.

MfG Paul

Autor: Stefan T. (_distance_07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..Okay, ich hab mal meinen Code angehängt, der leider nicht 
funktioniert...

Wenn mir jemand zeigen könnte, was falsch ist, wäre ich sehr dankbar.


MfG

Stefan



CODE:



; ************** einige Testversuche! **********

; 25.November,2007



.include "m8515def.inc"


.def temp = r16


  ldi temp, 0b11111100
  out DDRD, temp

  in temp, PIND
  out PORTD, temp

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan T. wrote:

> Wenn mir jemand zeigen könnte, was falsch ist, wäre ich sehr dankbar.

Kann es sein, dass hier ein Missverständnis vorliegt.
Du kannst nicht gleichzeitig ein und denselben Pin
sowohl als Eingang als auch als Ausgang benutzen.
Du kannst aber sehr wohl:
* an einem kompletten Port einige Pins als Eingang und
  einige Pins als Ausgang schalten.
* denselben Pin wahlweise jederzeit auf entweder Eingang
  oder Ausgang schalten lassen.

>
>
> ; ************** einige Testversuche! **********
> ; 25.November,2007
> .include "m8515def.inc"
>
> .def temp = r16
>
>   ldi temp, 0b11111100
>   out DDRD, temp
>
>   in temp, PIND
>   out PORTD, temp

Woran machst du fest, dass dieser Code nicht funktioniert?
(Jetzt mal abgesehen davon, dass am Ende eines Codes
immer eine Endlosschleife sein soll, damit der Prozessor
nicht Unsinn treibt. Der Prozessor braucht immer was
zu tun!)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:

> Woran machst du fest, dass dieser Code nicht funktioniert?

Das soll heissen: Was soll deiner Meinung nach passieren, was
passiert statt dessen und warum ist das dann falsch?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Stefan T. (_distance_07)

>..Okay, ich hab mal meinen Code angehängt, der leider nicht
>funktioniert...

Was funktioniert denn nicht?

>Wenn mir jemand zeigen könnte, was falsch ist, wäre ich sehr dankbar.

Dein Verstämdlins von Ports und Digitalen IOs.

Ausgangsstufen Logik-ICs

  ldi temp, 0b11111100
  out DDRD, temp

  in temp, PIND
  out PORTD, temp

Wenn dein Port als Augang definiert ist, kanns du von aussen nix mehr 
anlegen. Das Lesen von PIND liefert das, was du in PORTD reingeschrieben 
hast. Und das wieder in PORTD reinschreiben ist wenig sinnvoll.

Was willst du denn wirklich machen?

MFG
Falk

Autor: Stefan T. (_distance_07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal danke für alle Antworten,

ich hab seit Donnerstag das STK500 und führe einfach ein paar Versuche 
durch um mich etwas mit der Materie Vertraut zu machen.

Und in diesem Versuch ging es darum, über einen Port, Ausgang und 
Eingang zu benutzen.

Ich wollte 2 Taster anschließen und 2 LED´s damit ein und ausschalten.


@ Karl Heinz Buchegger ... Es passiert garnichts !


MfG

Stefan

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan T. wrote:


> Und in diesem Versuch ging es darum, über einen Port, Ausgang und
> Eingang zu benutzen.
>
> Ich wollte 2 Taster anschließen und 2 LED´s damit ein und ausschalten.
>
>
> @ Karl Heinz Buchegger ... Es passiert garnichts !

Schau einfach mal ins Tutorial.
Da steht das meiste ausführlich drinnen

http://www.mikrocontroller.net/articles/AVR-Tutori...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was nicht drinnen steht:

Wenn deine Taster an den Pins PD0 und PD1 hängen, die Leds
an den Pins PD2 und PD3, dann wirst du wohl irgendeine Form
von Programmlogik brauchen, die PD2 abhängig vom Zustand von
PD0 auf entweder 0 oder 1 setzt. Von alleine geht der Portpin
sicher nicht auf 1 oder 0.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Was soll da auch Passieren? Mit deinem Code schaltest bestenfalls die 
internen Pull-Up-Widerstände ein und aus.

Teste mal:
    in temp, PIND
    lsl temp
    lsl temp
    out PORTD, temp

Leds müssten an PortD 2 und 3.

Mfg Spess

Autor: Alexander Liebhold (lippi2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na logisch funktioniert in deinen Augen nichts. Wenn du meinetwegen PIN7 
nen Schalter verpasst(als Eingang definiert) und PIN0 ne LED(als Ausgang 
definiert),dann liest du zwar die Schalterstellung ein. Aber dein 
Register beinhaltet für den PIN0 keinen neuen Wert.

Was dich weiterbringt ist:

Pins einlesen-->Prüfen ob Schalter offen oder geschlossen und dann in 
Abhängigkeit des Wertes von PIN7 den PIN0 einen Wert verpassen.

Das Tutorial müsste aber alles sagen.

Gruß Alex

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Noch was vergessen

aaa:     in temp, PIND
         lsl temp
         lsl temp
         out PORTD, temp
         rjmp aaa

MfG Spess

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.