Forum: Compiler & IDEs AVR-Ausgänge abfragen


von Gast (Gast)


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

von Gast (Gast)


Lesenswert?

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

von Stefan E. (sternst)


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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


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
> ?

von Gast (Gast)


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ß

von Rolf Magnus (Gast)


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.

von Michael S. (captain-stone)


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

von Marvin M. (Gast)


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.

von Gast (Gast)


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

von Michael S. (msk) Benutzerseite


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.