mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gesetze Ports gehen auf 0 bei nächster Portsetzung


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend !
Ich programmiere derzeit einen AT90CAN128. Standardgemäss DDR und PORTs 
gesetzt. Es funktioniert auch alles, aber ich bin auf ein komisches 
Problem gestossen:
Wenn ich einen Port in einer Codezeile setze, und in der nächsten einen 
anderen Port setze, dann bewirkt dies, dass beim Setzen des zweiten 
Ports der erste Port wieder zurückgesetzt wird?!

Ich umgehe das Problem derzeit, indem ich den ersten Port zusützlich 
noch in die nächste Codezeile zum zweiten Port hinzufüge. Woran liegt es 
das?

Beispiel:
An PA0 und an PA1 sind jeweils eine Led, die leuchtet wenn der jeweilige 
port gesetzt wird. DDR ist bereits vor der Schleife initialisiert.

PORTA=(1<<PA0)      // Led 1 leuchtet
PORTA=(1<<PA1)      // Led 2 leuchtet (1 nicht mehr)
PORTA=(1<<PA0)|(1<<PA1) // Beide Leds leuchten

Ich hoffe mein Problem ist verständlich formuliert.
Ich bedanke mich für jede Hilfe!



Max

Autor: Arduino Fanboy (ufuf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTA=(1<<PA0)      // Led 1 leuchtet
PORTA|=(1<<PA1)      // Led 1 + 2 leuchtet

Autor: GHD (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Max schrieb:
> PORTA=(1<<PA0)      // Led 1 leuchtet
> PORTA=(1<<PA1)      // Led 2 leuchtet (1 nicht mehr)
> PORTA=(1<<PA0)|(1<<PA1) // Beide Leds leuchten

Du überschreibst den alten Wert ja in der zweiten Zeile. Wieso sollte 
die LED1 anbleiben?

PORTA = 00000001
PORTA = 00000010
PORTA = 00000011

Das ist dein Code "übersetzt".

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abend!

Jetzt wird mir einiges klar. Was für ein peinlicher kleiner Fehler.
Vielen Dank für die Erklärung!


Max

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.