mikrocontroller.net

Forum: Compiler & IDEs PINC


Autor: Felix Schmidt (flix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe folgendes Problem (ATMega8)

DDRC = 0x00;
int8_t foo = PINC;


beim debugen ist wenn ich im Simulator PINC auf 0x80 setze foo = 0x00

PINC verliert eben falls an der höchstwertigen Stelle das bit und setzt 
es von 1 auf 0

an was kann das liegen???

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Felix Schmidt wrote:

> an was kann das liegen???

Am ATmega8?

Der hat nämlich nur 7 Bits im Port C... :-o

Autor: Felix Schmidt (flix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum das den :-(

Autor: Felix Schmidt (flix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab eine weitere Frage

wenn ich meinem ATMega8 auf PINC ein Signal von einem anderen 
Mikrocontroller zukommen lass, wie mach ich das, dass das Eingabe Signal 
nur einmal verarbeitet wird?

mfg flix

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

Bewertung
0 lesenswert
nicht lesenswert
Felix Schmidt wrote:
> Ich hab eine weitere Frage
>
> wenn ich meinem ATMega8 auf PINC ein Signal von einem anderen
> Mikrocontroller zukommen lass, wie mach ich das, dass das Eingabe Signal
> nur einmal verarbeitet wird?
>

Da gibt es mehrere Möglichkeiten.

* zb könnte es eine Rückmeldungsleitung geben.
  A signalisiert an B (am besagten PINC) dass etwas zu tun ist.
  B signalisiert daraufhin an A zurück: "Verstanden, wird gemacht."
  Daraufhin zieht A seine Aufforderung wieder zurück.

  Du und dein Freund vereinbaren, dass du irgendetwas tust, wenn
  er winkt. Dein Freund winkt, du winkst zurück und machst das
  Vereinbarte. Durch das Zurückwinken weiss dein Freund, dass
  du sein Winken gesehen hast und hört seinerseits auf zu winken

* Du könntest aber auch 2 Strippen von A nach B ziehen. Auf der
  einen Strippe signalisiert A was zu tun ist. Jedesmal wenn
  es etwas neues zu tun gibt wird auch die 2.te Strippe auf
  1 gezogen.
  B beobachtet nun Strippe 2. Standardmässig ist die auf 0.
  Geht die auf 1, so weiss B, dass auf Strippe 1 ein Kommando
  anliegt. B führt dieses Kommando aus und wartet dann darauf
  dass Strippe 2 wieder auf 0 zurückfällt. Erst danach ist
  B wieder scharf darauf bei einer 1 auf Strippe 2 wieder ein
  Kommando zu übernehmen.
  Das geht natürlich nur dann, wenn die Kommandos von A nicht
  schneller kommen, als sie von B ausgeführt werden können.
  A muss ja sichergehen können, dass B die 1 auf Strippe 2 auch
  sieht, bevor A Strippe 2 wieder auf 0 zieht.

Autor: Monica L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder Interruptfähigen Pin benutzen und auf Flankenwechsel einstellen.

Autor: No.1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder Wert speichern und ab und zu nachschauen ob der neue Wert mit dem 
alten Wert übereinstimmt. Wenn nicht dann Aktion ausführen. Wenn ja dann 
nix machen.

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.