mikrocontroller.net

Forum: Compiler & IDEs AVR-Ausgänge abfragen


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kurze Frage:

Kann man auch den Zustand von Ausgängen mit der PINx-Abfrage feststellen 
?
Oder geht das nur mit Eingängen ?
Wenn ich das PORTx-Register abfrage habe ich ja nur den Inhalt des 
Ports.
Absolute Sicherheit über den Zustand des Ausganges gibt mir doch nur das 
PINx-Register, oder ?
Ob diese Abfrage überhaupt sinnvoll ist, ist hier übrigens NICHT Teil 
der Debatte.

Ich habe folgendes versucht, aber es funktioniert nicht:
LEDs an PC0, PC1
ATMegaxxx

#include <avr/io.h>
#include <util/delay.h>

void delay_s(uint8_t sec)
{
  uint16_t i=0, j=0;
  for(j=0; j<sec; j++)
  {
    for(i=0; i<1000; i++)
      _delay_ms(1);
  }
}
int main(void)
{
  DDRC  |=  (1<<DDC0) | (1<<DDC1);
  PORTC |=  (1<<PC0);
  PORTC &= ~(1<<PC1);
  while (1)
  {
    delay_s(1);
    PORTC ^= (1<<PC0);

    PORTC &= ~(1<<PC1);
    PORTC |= ((1 && (PINC & (PINC0)))<<PC1);
  }
  return 0;
}

Eine LED (PC0) sollte im Sekundentakt blicken (tut sie auch) und die 
andere LED (PC1) sollte es durch die Abfrage der anderen gleichtun.
Tut sie aber nicht (ist nur ein Beispielprog).
Ich brauche solch eine Abrage aber.
Wie kann man das realisieren, was ist falsch am Programm ?

Danke schon mal im voraus

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>     PORTC |= ((1 && (PINC & (PINC0)))<<PC1);
Diese Zeile solltest du dir nochmal genauer anschauen.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Absolute Sicherheit über den Zustand des Ausganges gibt mir doch nur das
> PINx-Register, oder ?

Ja.

> Wie kann man das realisieren, was ist falsch am Programm ?

"PINC & (PINC0)" ist immer 0. "1<<" vergessen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Absolute Sicherheit über den Zustand des Ausganges gibt mir doch nur das
> PINx-Register, oder ?
Absolute Sicherheit gibt es nicht.


BTW:
Fragezeichen gehören, wie Punkte, zum letzten Wort im Satz. Dann 
passiert sowas nicht:
> Kann man auch den Zustand von Ausgängen mit der PINx-Abfrage feststellen
> ?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, super. Funktioniert!

@Lothar Miller:
Beschränke Deine Aussagen auf das Thema.
Klugscheißerei war nicht das Thema!
Aber darin bist Du scheinbar ganz gut.
Nächste mal schreib besser einfach nix.
Oder Du meldest Dich in einem Forum für Deutschlehrer an.

Gruß

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin immer wieder erstaunt, wie schnell Leute eingeschnappt sind und 
persönlich beleidigend werden, wenn man ihnen einen gut gemeinten Rat 
zur Rechtschreibung oder  Zeichensetzung gibt. Ist wohl ein wunder Punkt 
bei vielen.

> Wenn ich das PORTx-Register abfrage habe ich ja nur den Inhalt des
> Ports.

Ja.

> Absolute Sicherheit über den Zustand des Ausganges gibt mir doch
> nur das PINx-Register, oder ?

Wo sollte da jetzt der Unteschied sein? Ich könnte mir höchstens bei 
einem Kurzschluß am Ausgang vorstellen, daß die verschieden sind.

> Ob diese Abfrage überhaupt sinnvoll ist, ist hier übrigens NICHT Teil
> der Debatte.

Naja, wenn du den Unterschied zwischen dem Lesen eines Ausgangs und dem 
Lesen des entsprechenden Eingangs wissen willst, kommt diese Frage doch 
eigentlich ganz von selbst ins Spiel.

Autor: Michael Steinbauer (Firma: Steinbauer Electronics GmbH) (captain-stone)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:

> Beschränke Deine Aussagen auf das Thema.
> Klugscheißerei war nicht das Thema!

Recht frech, wenn man bedenkt, dass jemand anonym sich hinter einem Gast 
Zugang versteckt, nach Hilfe verlangt, diese bekommt, inklusive einem 
Tipp, dass die Rechtschreibung hier unter aller Kritik ist.

Also einfach ein Danke hätte sicher auch gereicht...

Michael

Autor: Marvin M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Ob diese Abfrage überhaupt sinnvoll ist, ist hier übrigens NICHT Teil
der Debatte."

Warum nicht?
Diese Abfrage macht nur dann Sinn, wenn PIN != PORT, ansonsten bekommt 
man nämlich exakt den Zustand des Ausgangs über das Lesen des 
PORT-Registers.
Und das würde bei einem Ausgang einen Kurzschluss bedeuten - und das 
wiederum ist völlig sinnfrei, denn dann liegt definitiv ein massiver 
Fehler im Hardware-Design vor.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hat überhaupt nichts mit eingeschnappt sein zu tun.
Aber hier geht es nun mal nicht um Orthographie.
Das ist ein Elektronikforum.

Verstecken tue ich mich auch nicht.
Ob da nun ein Name steht oder nicht.
Kennen tut man sich dadurch trotzdem nicht.

Es gibt scheinbar viele Leute, die denken sie müssten aus einer Mücke 
einen Elefanten machen.
Daher übrigens auch der Teil was hier NICHT Thema ist.

Ich wollte nur eine einfache Antwort und die habe ich spätestens nach 
dem 2. Antwortthread erhalten.
Nochmal danke an die Leute die sich auf das Thema konzentriert haben und 
so schnell geantwortet haben, anstatt der Philosophie zu erliegen.
Philosophiert ihr mal weiter eure Themen, die die Welt nicht bewegen.

Ach, noch was,... ich glaube in China ist gerade ein Sack Reis 
umgekippt.
Wichtig,... oder ?

Außerdem ist es gerade dieses Philosophieren, was die Suche nach der 
Lösung eines Problems manchmal echt anstrengend macht, da man diese 
nutzlosen Beiträge lange überspringen muss, bis man zu einer 
vernünftigen Antwort kommt.

Gruß an alle

Autor: Michael S. (msk) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marvin M. schrieb:
> Warum nicht?
> Diese Abfrage macht nur dann Sinn, wenn PIN != PORT, ansonsten bekommt
> man nämlich exakt den Zustand des Ausgangs über das Lesen des
> PORT-Registers.
> Und das würde bei einem Ausgang einen Kurzschluss bedeuten - und das
> wiederum ist völlig sinnfrei, denn dann liegt definitiv ein massiver
> Fehler im Hardware-Design vor.

Na ein Glück, dass niemand Fehler in seinen Schaltungen macht, 
schließlich wäre das ja völlig sinnfrei. ;)

Zurück in der Realität: Bis auf ganz wenige, denen wahrscheinlich schon 
das Gras aus der Tasche wächst, machen alle Fehler - sowohl in ihrer 
Soft- als auch in ihrer Hardware. Es soll auch schon vorgekommen sein, 
dass Bauteile fehlerhaft sind. Und manchmal sind solche Fehler sehr 
schwer zu finden, treten nur sporadisch und kurz auf und da ist es ganz 
gewiss hilfreich, den (echten) Zustand des Ports herausfinden zu können.

Mein Dank als unbeteiligter, aber interessierter Dritter an Stefan 
Ernst, der hier als Einziger eine vernünftige und konstruktive Antwort 
gegeben hat.

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.