AVR-Ausgänge abfragen

Gast #1390118
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
Gast #1390160
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ß
Gast #1390253
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.
#1390282
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
Gast #1390299
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.
Gast #1390489
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
Persönliche Seite #1390804
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren